绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
15,微服务负载均衡组件-Ribbon
2020-05-25 15:33:43

1,什么是Ribbon

Ribbon是Netflix发布的开源项目,其主要功能是提供客户端侧负载均衡算法。Ribbon客户端组件提供一系列列完善的配置项如连接超时,重试等。Ribbon会自动的帮助你基于某种规则(如轮询,随机等)去连接这些机器,同时,Ribbon也支持自定义的负载均衡算法

在 SpringCloud 中,Ribbon利用从Eureka中读取到的服务提供者列表信息,在调用服务节点提供的服务时,基于内置的负载均衡算法,进行请求服务。

2,Ribbon负载均衡和Nginx的负载均衡有什么不同?(面试题)

一般实现负载均衡,会有两个选择,客户端负载均衡和服务端的负载均衡

Nginx是服务器端负载均衡,负载均衡的策略算法是在服务器端实现的。

Ribbon是客户端负载均衡,负载均衡算法是由调用者本身维护的


3,Ribbon提供的负载均衡策略有哪些?

Ribbon内置了多种负载均衡策略,内部负责复杂均衡的接口为 com.netflix.loadbalancer.IRule;

com.netflix.loadbalancer.RoundRobinRule :轮询策略
com.netflix.loadbalancer.RandomRule :随机策略 
com.netflix.loadbalancer.BestAvailableRule :佳可用策略

4,修改默认的负载均衡策略,在index-service的application.yml配置

#配置调用product-service服务采用的负载均衡策略
#注意,此处大小写要跟接口的声明一致
PRODUCT-SERVICE:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

5,重试机制

当我们采用RestTemplate的时候,才需要做这块的设置,Feign默认已经加了重试的机制,所以我们一般采用Feign的方式

当集群服务有些服务出现问题时,如果刚好调用到出问题的服务器,那么会出现服务调用失败。

我们可以采用Ribbon支持的重试机制来解决问题

引入依赖:

<dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>

配置:

PRODUCT-SERVICE:
  ribbon:
    #NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    OkToRetryOnAllOperations: true # 是否对所有操作都进行重试
    MaxAutoRetriesNextServer: 3 # 切换实例的重试次数

分享好友

分享这个小栈给你的朋友们,一起进步吧。

唠唠叨叨负载均衡
创建时间:2020-05-25 14:12:28
唠唠叨叨负载均衡
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~