Spring Cloud Ribbon 客户端负载均衡器

2019-10-15 0 By admin

Spring Cloud Ribbon 是一个基于HTTP和TCP 的客户端负载均衡工具,它基于Netflx Ribbon 实现。通过Spring Cloud 的封装,可以让我们轻松地 将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。
Spring Cloud Ribbon 虽然只是一个工具类框架,它不像服务注册中心,配置中心,API网关那样需要独立部署,但是它几乎存在每个Spring Cloud 构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon 来实现的。

Ribbon 构建步骤

Ribbon 通过Spring Cloud 的封装,我们在微服务架构中使用客户端负载均衡调用非常简单,只需要两步:
1、服务提供者只需要启动多个服务实例并注册到一个注册中心或者是多个相关联的服务注册中心。
2、服务消费者直接通过调用被@LoadBalanced 注释修饰过的RestTemplate来实现面向服务的接口调用。

Ribbon 工作机制

1、服务发现:依据服务的名字把该服务下所有实例都找出来
2、服务选择规则:依据规则策略从多个服务中选择一个有效的服务
3、服务监听:检测失效的服务,做到高效剔除
4、主要组件:ServerList、IRule、ServerListFilter,通过ServerList获取所有的可用服务列表,然后通过ServerListFilter过滤掉一部分地址,最后剩下的地址通过IRule选择一个实例作为最终目标。
RestTemplate、Feign、Zuul都用到了Ribbon。