Spring Cloud之Ribbon

上篇介绍了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为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,374评论 19 139
  • 1 为什么需要服务发现 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基...
    谦小易阅读 25,191评论 4 93
  • 简介 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix ...
    Chandler_珏瑜阅读 251,880评论 22 183
  • 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,并且能够发挥...
    程序员技术圈阅读 7,697评论 10 27
  • 软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福。 本文不是讲解如何使用Spring Cloud...
    Bobby0322阅读 22,830评论 3 166