软件系统定制开发SpringCloud-Ribbon默认的负载规则以及更换默认的负载规则(Day5)

软件系统定制开发默认的负载均衡规则

lRule:软件系统定制开发根据特定算法中从服务列表中选取一个要访问的服务。

- RoundRobinRule 轮询。

  • RandomRule 随机。
  • RetryRule 先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重。
  • WeightedResponseTimeRuleRoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择。
  • BestAvailableRule 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务。
  • AvailabilityFilteringRule 先过滤掉故障实例,再选择并发较小的实例。
  • ZoneAvoidanceRule 默认规则,复合判断server所在区域的性能和server的可用性选择服务器。

Ribbon负载规则的更换

  • 要求在配置Ribbon的负载规则时,不能将其配置类放到@ComponentScan扫描到的路径,即主启动类的扫描路径。(也是就是不能和主启动类同包
  • 如果放置到@ComponentScan可以扫描到位置的话,其配置就会被Ribbon客户端共享,就不能达到定制化的要求了。

负载规则配置

package com.gcl.myrule;import com.netflix.loadbalancer.IRule;import com.netflix.loadbalancer.RandomRule;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class MySelfRule {    @Bean    public IRule myRule(){        return new RandomRule();    }    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

主启动设置

package com.gcl.springcloud;import com.gcl.myrule.MySelfRule;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.netflix.ribbon.RibbonClient;@EnableEurekaClient@SpringBootApplication@RibbonClient(name = "CLOUD-PAYMENT-SERVICE", configuration = MySelfRule.class)public class OrderMain8080 {    public static void main(String[] args) {        SpringApplication.run( OrderMain8080.class, args );    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

测试

Ribbon默认的负载规则是轮询,我们换成了随机。



网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发