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

做一个跨境电商网站商商业网站建设

做一个跨境电商网站,商商业网站建设,百度指数使用方法,防伪码网站怎么做内容简介 在项目开发中#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/14580102/

相关文章:

  • 上海设计网站大全自己开发网站
  • 汽车网新车报价大全网站内部优化建设
  • 网站建设seo推广上海力晟建设工程有限公司网站
  • 深圳涂料网站建设二级建造师证件查询全国联网
  • 低价网站建设渠道群晖wordpress 外网很慢
  • 用dw 网站开发与设计报告做python项目的网站
  • 企业宣传网站建设说明书重庆豆花制作
  • 网站制作有哪些方面免费发外链的网站
  • 宝安建网站多少钱做网站备案地点
  • 沥林网站建设马甲比较好重庆百度地图
  • 重庆高端网站seowordpress不同列表页
  • 移动网站虚拟主机wordpress documentation
  • 网站关键字没有排名达州网站建设yufanse
  • 怎么做可以聊天的网站吗网站建设术语解释
  • 济南网站建设工作室西安网页设计培训费用
  • 无锡网站关键词优化程序员做个网站要多少钱呢
  • 网站建设方案设计是什么意思做网站看什么书
  • 摄影师 网站 模板c 网站开发案例详解光盘
  • 如何做网站流量买卖工业设计师年薪60万
  • 软件网站开发团队名称网站内部链接怎麽做
  • 天津中小企业网站制作东营网站开发招聘
  • 做网站用什么开源python是什么
  • 网站外链建设可以提升网站做兼职在线抠图网站
  • 做网站程序看什么书装修网站怎么做的好
  • 域名解析到服务器ip然后服务器怎么弄才能跳转到那个网站建设百度网站多少钱
  • 网站建设中的英文无锡高端网站建设
  • 米趋外贸网站建设室内装饰设计培训机构
  • dtcms网站开发教程法治网站的建设整改措施
  • 服装设计师参考的网站网站建设用户需求调查
  • 为公司做的图可以上传网站吗云服务器 wordpress