0
点赞
收藏
分享

微信扫一扫

SpringCloud(十九)ribbon 详细说明


ribbon说明

          对于ribbon详细说明大家可以参考​​官网,​​

​​1.为通讯的客户端提供服务的DNS或者ip

         2. 根据某些算法,循环访问某些服务

         某些负载均衡器能提供下面的高级功能:

           1.通过将客户端与服务器端划分几个区(zone),来建立他们之间的关系,使他们在相同的区,来减小延迟

           2. 保存服务的统计信息,避免高延迟或者频繁请求失败的服务

           3. 保存区(zone)的统计信息,避免可能停止的区

负载均衡组件

           Rule: 一个算法组件,决定在服务列表中使用哪一个

           Ping: 一个后台运行的组件,确定服务是否可用

           ServerList: 服务列表,可以是动态的也可以是静态的,如果是动态的(​​DynamicServerListLoadBalancer​​),一个后台线程会定时刷新和过滤这个服务列表

             这些组件可以用程序设置,也可以在配置文件中设置

  • ​<clientName>.ribbon.NFLoadBalancerClassName​​​: Should implement​​ILoadBalancer​
  • ​<clientName>.ribbon.NFLoadBalancerRuleClassName​​​: Should implement​​IRule​
  • ​<clientName>.ribbon.NFLoadBalancerPingClassName​​​: Should implement​​IPing​
  • ​<clientName>.ribbon.NIWSServerListClassName​​​: Should implement​​ServerList​
  • ​<clientName>.ribbon.NIWSServerListFilterClassName​​​: Should implement​​ServerListFilter​

 

IRule

      根据某个算法,从服务列表中选择一个服务进行访问

     

SpringCloud(十九)ribbon 详细说明_ribbon详细配置

   a. RoundRobinRule

         默认的,轮询规则,也是很多高级规则中退避的一种策略

   b. AvailabilityFilteringRule

         会过滤掉打开熔断的服务或者是高并发连接数量的服务

   c. WeightedResponseTimeRule

          通过服务的平均响应时间,给每一个服务一个权重,响应时间越长,权重越小,开始统计信息不足,应用轮询策略

   d. RetryRule

           先按照轮询策略,如果请求服务失败,会在指定时间内进行重试

   e. BestAvailableRule

          先过滤掉断路器的服务,然后选择一个并发量最小的

    f. RandomRule

          随机获取一个服务

 

IPing

       

SpringCloud(十九)ribbon 详细说明_springcloud ribbon_02

   a. DummyPing

         默认返回true,即认为服务永远活着

   b. NIWSDiscoveryPing

         如果Discovery Client认为服务在线,即认为服务活着

   c. NoOpPing

          永远返回true,认为服务或者,DummyPing源码里面多了一个配置

   d. PingUrl

            会使用HttpClient调用服务的一个url,如果成功,则认为服务活着

     

ServerList

       static server list

                在程序中设置一系列静态服务     ​​BaseLoadBalancer.setServersList()​

ConfigurationBasedServerList

             在配置文件中设置,如果属性时动态改变的,服务列表也会改变            

sample-client.ribbon.listOfServers=www.microsoft.com:80,www.yahoo.com:80,www.google.com:80

          DiscoveryEnabledNIWSServerList

                 从eureka服务获取服务列表,服务集群必须由VipAddress标识

ServerListFilter

             被用在​​DynamicServerListLoadBalancer​​中,用来过去过滤服务列表中的服务。

    ZoneAffinityServerListFilter

             过滤出与客户端不在同一个zone的服务,除非客户端的zone没有可用的服务。通过下面方式开启

myclient.ribbon.EnableZoneAffinity=true

 ServerListSubsetFilter

          此过滤器确保客户端仅看到ServerList实现返回的整个服务器的固定子集。它还可以定期用新服务器替换可用性较差的子集中的服务器。要启用此过滤器,请指定以下属性

myClient.ribbon.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList 
# the server must register itself with Eureka server with VipAddress "myservice"
myClient.ribbon.DeploymentContextBasedVipAddresses=myservice
myClient.ribbon.NIWSServerListFilterClassName=com.netflix.loadbalancer.ServerListSubsetFilter
# only show client 5 servers. default is 20.
myClient.ribbon.ServerListSubsetFilter.size=5

ServerListUpdater

                 DynamicServerListLoadBalancer状态下,更新服务器列表   

          PollingServerListUpdater

                    默认,定时更新

           EurekaNotificationServerListUpdater

                     收到通知时,更新服务器列表

 

IClientConfig

         定义各种配置信息,用来初始化ribbon客户端与负载均衡器

 

ILoadBalancer

       定义软负载均衡的操作接口,动态更新服务列表并且根据指定策略算法,从服务列表中选择一个服务

 

配置文件格式

<clientName>.<nameSpace>.<propertyName>=<value>

<clientName>:这是ribbon的客户端名称,如果此值为没有配置,则此条属性会作用到所有的客户端。

<nameSpace>:默认值为   ribbon

<propertyName>:所有的可用的属性都在com.netflix.client.conf.CommonClientConfigKey。

如果你没有配置任何属性,则ribbon会使用com.netflix.client.config.DefaultClientConfigImpl里的值。

 

 

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

SpringCloud(十九)ribbon 详细说明_springcloud ribbon_03

举报

相关推荐

0 条评论