1、在Netflix中,Eureka服务实例可以进行集群部署,但是客户端发送的请求是如何被分摊到集群中的各个服务是由Ribbon实现的
2、一个比较简单的Ribbon程序结构如下图:
在其中,Ribbon框架充当了负载均衡器的作用
3、为了实现负载均衡的基础功能,Ribbon的负载均衡器有以下三个大子模块:
①Rule : 一个逻辑组件,这些逻辑决定从服务器列表中返回那个服务器的实例
②Ping : 该组件主要使用定时器来确保服务器网络可以连接
③ServerList : 服务器列表,可以通过静态的配置确定负载的服务器,也可以动态指定服务器列表。
4、Rule 子模块
Ribbon 的自带了若干内置负载规则,也允许用户自定义规则来完成某些特定的需求。
Ribbon 内置负载规则涵盖了大多数需求,主要有以下内置负载规则:
1)RoundRobinRule : 默认。简单轮询服务列表
2)AvailabilityFilteringRule : 忽略无法连接的服务器和并发数过高的服务器。
...
5、Ping 机制
在负载均衡器中,提供了Ping 机制,每隔一段时间,回去 Ping 服务器,判断服务器是否存活。