美文网首页
Spring-Cloud Ribbon

Spring-Cloud Ribbon

作者: Jimhou | 来源:发表于2018-08-21 14:35 被阅读17次

    Ribbon的功能

    Ribbon是Netflix发布的负载均衡器,有助于控制HTTP和TPC客户端的行为。为Ribbon配置了服务的提供者地址列表后,Ribbon就可以基于某种负载均衡算法,自动帮助服务消费者请求。Ribbon默认提供了很多负载均衡算法,比如:轮询、随机、加权等,当然,我们也可以利用Ribbon实现我们自己的负载均衡算法。
    Ribbon是客户端负载均衡器,不是一个单独的服务。需要依赖Spring Cloud 中的服务来使用。在Spring Cloud中,当Ribbon与Eureka配合使用,Ribbon能够自动从Eureka Server中获取服务提供者地址列表,并基于负载均衡算法,请求服务的提供者实例(因为Eureka Client 中已经整合Ribbon,只要开启Ribbon功能即可)。

    服务架构

    在一个SpringCloud 集群中,一个服务实例既是服务的提供者、也是服务的消费者,因为Ribbon是消费端负载均衡器,所以每个服务的实例都可以使用Ribbon。
    假如一个Spring Cloud集群内有服务A(实例A1、A2、A3)和服务B(B1、B2),B需要调用A,那么使用Ribbon之后架构以及调用顺序如下图。


    ribbon.png

    Ribbon的使用

    Step1 引入依赖

    Step2 启用Ribbon

    Step3 RestTemplate 调用

    Ribbon中组件

    接口 spring容器中Bean名称 实现类 功能
    IClientConfig ribbonClientConfig DefaultClientConfigImpl 客户端配置
    IRule ribbonRule ZoneAvoidanceRule 一个逻辑规则,决定到底将要调用哪个服务实例
    IPing ribbonPing DummyPing 一个后台运行的组件,用来检测服务实例是否可用
    ServerList<Server> ribbonServerList ConfigurationBasedServerList 服务列表
    ServerListFilter<Server> ribbonServerListFilter ZonePreferenceServerListFilter 服务列表过滤器,将可用服务列表精确到最佳
    ILoadBalancer ribbonLoadBalancer ZoneAwareLoadBalancer (Ribbon)负载均衡入口
    ServerListUpdater ribbonServerListUpdater PollingServerListUpdater 服务列表更新器

    参考文档

    https://github.com/Netflix/ribbon/wiki/Working-with-load-balancers#components-of-load-balancer

    相关文章

      网友评论

          本文标题:Spring-Cloud Ribbon

          本文链接:https://www.haomeiwen.com/subject/jraobftx.html