展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

Ribbon

Ribbon是一套客户端负载工具
负载均衡(LB)

nginx实现负载均衡属于集中式LB,即在服务的消费方和提供方提供LB设施,当消费方发请求调提供方时,消费方的请求会先进入nginx,通过nginx转发分配到提供方集群

Ribbon属于进程内LB,消费方自己选择调用哪个提供方

之前的案例中通过80轮询负载访问8001、8002,拉取了eureka的依赖,新版的eureka依赖中已经集成了ribbon
ribbon等同于负载均衡+RestTemplate调用

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

配置自定义负载均衡规则,案例:使80随机调用8001、8002
修改80订单模块,自定义的规则类不能放在@ComponentScan所扫描的当前包及其子包下;在当前项目中该注解在启动类上,规则类就不能放在启动类所在的包下,因此新建一个包myrule,然后编写自定义规则类

在启动类上添加注解,指定要调的提供者微服务和要使用的负载规则:@RibbonClient(name = "CLOUD-PAYMENT-SERVICE", configuration = MySelfRule.class)
posted @ 2022-07-27 10:26  DogLeftover  阅读(11)  评论(0编辑  收藏  举报