当前位置: 首页 > news >正文

购物网站app推广方案淘宝客网站做app

购物网站app推广方案,淘宝客网站做app,海南网站公司,网站备案和不备案的内容简介 在项目开发中#xff0c;除了考虑正常的调用之外#xff0c;负载均衡和故障转移也是关注的重点#xff0c;这也是feign ribbon的优势所在#xff0c;基于上面两篇文章的基础#xff0c;接下来我们开展最后一篇原生态fegin结合ribbon服务进行服务远程调用且实现负…内容简介 在项目开发中除了考虑正常的调用之外负载均衡和故障转移也是关注的重点这也是feign ribbon的优势所在基于上面两篇文章的基础接下来我们开展最后一篇原生态fegin结合ribbon服务进行服务远程调用且实现负载均衡机制也帮助大家学习ribbon奠定基础。 maven依赖 dependenciesdependencygroupIdcom.netflix.feigngroupIdartifactIdfeign-coreartifactIdversion8.18.0versiondependencydependencygroupIdcom.netflix.feigngroupIdartifactIdfeign-jacksonartifactIdversion8.18.0versiondependencydependencygroupIdcom.netflix.feigngroupIdartifactIdfeign-ribbonartifactIdversion8.18.0versiondependencydependencygroupIdcom.netflix.archaiusgroupIdartifactIdarchaius-coreartifactId dependencydependencies 复制代码其中feign-core和feign-ribbon是必须的如果需要在服务消费端和服务生产端之间进行对象交互建议使用feign-jackson 配置读取 import com.netflix.config.ConfigurationManager; import feign.Feign; import feign.jackson.JacksonDecoder; import feign.jackson.JacksonEncoder; import feign.ribbon.RibbonClient; public class AppRun {public static void main(String[] args) throws Exception {User param new User();param.setUsername(test);RemoteService service Feign.builder().client(RibbonClient.create()).encoder(new JacksonEncoder()).decoder(new JacksonDecoder()).options(new Options(1000, 3500)).retryer(new Retryer.Default(5000, 5000, 3)).target(RemoteService.class, http://remote-client/gradle-web);for (int i 1; i 10; i) {User result service.getOwner(param);System.out.println(result.getId() , result.getUsername());}} } 复制代码声明了一个User类型的对象param该对象将作为参数被发送至服务生产端。重点在于通过RibbonClient.create()使得Feign对象获得了Ribbon的特性。之后通过encoder,decoder设置编码器与解码器并通过target方法将之前定义的接口RemoteService与一个URL地址http://remote-client/gradle-web进行了绑定。 现在来看remote-client.properties中的配置项主要多是RemoteClient的配置机制 remote-client.ribbon.MaxAutoRetries1 remote-client.ribbon.MaxAutoRetriesNextServer1 remote-client.ribbon.OkToRetryOnAllOperationstrue remote-client.ribbon.ServerListRefreshInterval2000 remote-client.ribbon.ConnectTimeout3000 remote-client.ribbon.ReadTimeout3000 remote-client.ribbon.listOfServers127.0.0.1:8080,127.0.0.1:8085 remote-client.ribbon.EnablePrimeConnectionsfalse 复制代码所有的key都以remote-client开头表明这些配置项作用于名为remote-client的服务。其实就是与之前绑定RemoteService接口的URL地址的schema相对应。 重点看remote-client.ribbon.listOfServers配置项该配置项指定了服务生产端的真实地址。 在调用时会被替换为 RequestLine指定的地址进行拼接得到最终请求地址。本例中最终请求地址为 由于使用的ribbon所以feign不再需要配置超时时长重试策略。ribbon提供了更为完善的策略实现。 本例中服务生产端是一个简单的springMvc实现如下: public class UserController {public User list( User user) throws InterruptedException{HttpServletRequest request ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();user.setId(new Long(request.getLocalPort()));user.setUsername(user.getUsername().toUpperCase());return user;} }复制代码故障转移是通过remote-client.properties中的配置项进行配置。 首先利用archaius项目的com.netflix.config.ConfigurationManager读取配置文件remote-client.properties,该文件位于src/main/resources下。 负载均衡的策略又是如何设置呢 import com.netflix.client.ClientFactory; import com.netflix.client.config.IClientConfig; import com.netflix.config.ConfigurationManager; import com.netflix.loadbalancer.ILoadBalancer; import com.netflix.loadbalancer.RandomRule; import com.netflix.loadbalancer.ZoneAwareLoadBalancer; import feign.Feign; import feign.jackson.JacksonDecoder; import feign.jackson.JacksonEncoder; import feign.ribbon.LBClient; import feign.ribbon.LBClientFactory; import feign.ribbon.RibbonClient; public class AppRun {public static void main(String[] args) throws Exception {ConfigurationManager.loadPropertiesFromResources(remote-client.properties);User param new User();param.setUsername(test);RibbonClient client RibbonClient.builder().lbClientFactory(new LBClientFactory() {public LBClient create(String clientName) {IClientConfig config ClientFactory.getNamedConfig(clientName);ILoadBalancer lb ClientFactory.getNamedLoadBalancer(clientName);ZoneAwareLoadBalancer zb (ZoneAwareLoadBalancer) lb;zb.setRule(new RandomRule());return LBClient.create(lb, config);}}).build();RemoteService service Feign.builder().client(client).encoder(new JacksonEncoder()).decoder(new JacksonDecoder()).options(new Options(1000, 3500)).retryer(new Retryer.Default(5000, 5000, 3)).target(RemoteService.class, http://remote-client/gradle-web);for (int i 1; i 10; i) {User result service.getOwner(param);System.out.println(result.getId() , result.getUsername());}} } 复制代码private IRule zoneAvoidanceRule() {return new ZoneAvoidanceRule();}private IRule randomRule() {return new RandomRule();} 复制代码不再使用RibbonClient.create()来创建默认的RibbonClient而是通过RibbonClient.builder()获得feign.ribbon.Builder,进而设置LBClientFactory的实现来定制LBClient在创建LBClient的过程中即可指定负载策略的具体实现。 分享资源 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tay3QQq8-1691467722037)(https://pic.imgdb.cn/item/64d0dc6a1ddac507cc857b30.png)] 获取以上资源请访问开源项目 点击跳转
http://www.hkea.cn/news/14336304/

相关文章:

  • 网站查询域名如何提高wordpress后台的访问速度
  • 电商网站建设 问题与解决方案阜宁网站建设服务商
  • 百度新闻源网站有哪些qq群短链接生成
  • 关于推进公司网站开发的请示做淘宝客网站会犯法吗
  • 网站建设客户常见问题多媒体展厅公司
  • 柳州城乡建设管理局网站网络营销有哪些营销方式
  • 网站技术解决方案是什么红色系 网站
  • 电商设计网站有哪些功能下载网站模板
  • 如何做带后台的网站拼多多网站怎么做的
  • 网站备案下来以后怎么做网页南京软件网站建设公司
  • 用jsp做校园网站宜昌十堰网站建设哪家好
  • 不备案 网站 盈利网架公司有哪些公司
  • 如何把网站放到域名上wordpress加底部进度条
  • 有没有做装修中介的网站常州市金坛区网站建设
  • 视频网站建设的背景简介如何做市场营销推广
  • 织梦做的网站怎么添加关键词做网站建设网站制作
  • 济南建站公司注意事项做像58同城样的网站
  • 做网站 商标分类外贸网站做纸尿裤怎么样
  • 股票交易网站开发上海做网站推广公司
  • 网站建设 服务内容公司介绍网站怎么做
  • 中国联通网站备案及ip地址备案管理要求河北省电力建设第一工程公司网站
  • 哈德网站建设建设网站要注册公司吗
  • 国外做爰网站跟建设通差不多额网站
  • dw做的个人网站商品交易网站建设论文
  • 广州市网站集约化建设工作要求网站优化网
  • 网站开发准备深圳创业补贴申请
  • 网站功能需求文档公司做网站的费用的会计分录
  • 后缀的域名暂无法进行网站备案用于制作网站的软件
  • 长治市郊区住房建设局网站wordpress 主教程从零始制作wordpress
  • 网站开发的背景知识与相关技术android sdk