美文网首页程序员
Spring Cloud之Ribbon

Spring Cloud之Ribbon

作者: 不知名的程序员 | 来源:发表于2018-07-26 22:28 被阅读7次

上篇介绍了eureka即注册中心,那么当有多个服务实例时,我们需要访问实例的负载均衡策略。Spring Cloud为此提供了客户端负载均衡组件Ribbon。

先来说一下Ribbon中几个重要的组件:

Rule:访问微服务列表的规则

Ping:检查微服务是否存活

ServerList:微服务列表,他可以指定为DynamicServerListLoadBalancer即动态的,若为动态的则会启动一个后台线程间隔一定时间去刷新服务列表

环境就用前一篇讲eureka的,Ribbon和Eureka配合使用很简单,我们只需在调用方的RestTemplate上加上@LoadBalanced注解即可,即代表我们开启了负载均衡功能。然后调用微服务时我们的逻辑可以简化为

由此可见我们只需要指定服务ID即可。我们每次访问服务时他都会按照指定的访问策略进行访问。

接下来是指定负载均衡策略,在配置文件中进行配置

其中item-service为服务的实例名。当想更改其他组件,例如Ping时,配置类似。

因为Ribbon主要用于负载均衡,我们主要介绍一下他的各种负载均衡策略。

IRule接口下实现类

AvailabilityFilteringRule:过滤掉处于断路的和连接超过int最大值的。

BestAvailableRule:过滤掉断路的并且选择连接数最少的

ZoneAvoidanceRule:根据zone和可用性选取最佳的。

RoundRobinRule:随机策略,这个就不是说了。

AvailabilityFilteringRule:跳过那些被认为是断路或高并发连接的服务。

WeightedResponseTimeRule:根据服务响应的时长作为权重,响应时间越长,权重越小。

一般来说我们会使用ZoneAvoidanceRule作为我们负载均衡策略。

相关文章

网友评论

    本文标题:Spring Cloud之Ribbon

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