怎么在SpringCloud中利用丝带实现负载均衡

  介绍

本篇文章为大家展示了怎么在SpringCloud中利用丝带实现负载均衡,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

maven引入丝带

, & lt; !——, Ribbon ——比;   ,,,& lt; dependency>   ,,,,,& lt; groupId> org.springframework.cloud   ,,,,,& lt; artifactId> spring-cloud-starter-netflix-ribbon   ,,,& lt;/dependency>

创建RibbonConfig文件,主类添加@RibbonClient (name=癛ibbonConfig"、配置=RibbonConfig.class),我这里偷懒,直接在主类中创建内部类

@EnableEurekaClient   @RibbonClient (=name “RibbonConfig",, configuration =, RibbonConfig.class)   @SpringBootApplication   public  class  SpringbootSpringdataJpaApplication {      public 才能;static  void  main (String [], args), {   ,,,SpringApplication.run (SpringbootSpringdataJpaApplication.class, args);   ,,}   }      @ configuration   class  RibbonConfig  {      ,@ bean   public 才能;IRule  ribbonRule () {   ,,,return  new  RandomRule();,//分配策略:随机选择一个服务器//,,,,return  new  BestAvailableRule();,//分配策略:选择一个最小的并发请求的服务器,逐个考察服务器,如果服务器被绊倒了,则忽略//,,,,return  new  RoundRobinRule();,//分配策略:轮询选择,轮询指数,选择指数对应位置的服务器//,,,,return  new  WeightedResponseTimeRule();,//分配策略:根据响应时间分配一个重量(权重),响应时间越长,重量越小,被选中的可能性越低//,,,,return  new  ZoneAvoidanceRule();,//分配策略:复合判断服务器所在区域的性能和服务器的可用性选择服务器//,,,,return  new  RetryRule();,//分配策略:对选定的负载均衡策略机上重试机制,在一个配置时间段内当选择服务器不成功,则一直尝试使用它的方式选择一个可用的服务器   ,,}      ,@ bean   public 才能;IPing  ribbonPing (), {   ,,,return  new  PingUrl ();   ,,}      ,@ bean   public 才能;ServerListSubsetFilter  serverListFilter (), {   ,,,ServerListSubsetFilter  filter =, new  ServerListSubsetFilter ();   ,,,return 过滤器;   ,,}      }

下表显示了春云Netflix默认为丝带提供的bean:

怎么在SpringCloud中利用丝带实现负载均衡”> </p> <p>官网例子:</p> <p> <img src= @RestController   @RequestMapping (“/user")   public  class  UserController  {      @RequestMapping才能(“/ribbon")   public 才能;String 丝带(),{   ,,,return “springdatejpa ——,我的端口是:10088“;   ,,}      }

第二个服务提供者也是这样配置,注意:应用名要相同(spring.application.name=springdatejpa);端口不同,

<强>服务消费者

服务消费者使用假装调用,无需做任何修改,假装已经使用丝带。具体配置请戳:SpringCloud系列——假装服务调用

@FeignClient (=name “springdatejpa",, path =,“/user/?   public  interface  MyspringbootFeign  {      @RequestMapping才能(“/ribbon")   String 才能带();   } /* *   ,,*,假装调用   ,,*/@GetMapping才能(“假装/ribbon")   String 才能;带(){   ,,,return  myspringbootFeign.ribbon ();   以前,,}

效果

启动所有项目,我们注册了三个服务,其中:

有两个服务名称相同,处理的业务相同,端口不同,这两台作为服务提供者(可看做是一个“小集群”);

另一个是服务消费者(假装调用),

怎么在SpringCloud中利用丝带实现负载均衡”> </p> <p>消费者不断调用,色带会从注册中心的服务列表拉取实例集合进行负载均衡调用背后的服务提供者</p> <p> <img src=怎么在SpringCloud中利用丝带实现负载均衡