学科分类
目录
Spring Cloud

认识Ribbon

Ribbon是Netflix开源的一款用于客户端负载均衡的软件工具,它在集群中为各个客户端的通信提供了支持,有助于控制HTTP和TCP客户端的行为,提供了很多负载均衡的算法,例如轮询,随机等,同时也可以实现自定义的算法。

在Spring Cloud 构建的微服务中,Ribbon作为服务消费者的负载均衡器,有两种使用方式,一种是与RestTemplate相结合,另一种是与Feign相结合。Feign已经默认集成了Ribbon,并且关于Feign的相关知识我们将在第4章进行详细讲解。

Ribbon包含很多子模块,但很多子模块没有用于生产环境,目前用于生产的Ribbon的子模块具体如下:

● ribbon-core:包括定义负载均衡接口、客户端接口、内置的负载均衡实现等API。

● ribbon-eureka:提供eureka客户端实现负载均衡的API。

● ribbon-httpclient:对Apache的HttpClient进行封装,该模块提供了含有负载均衡功能的REST客户端。

在Spring Cloud 中,当Ribbon和Eureka配合使用的时候,Ribbon可从Eureka Server中获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。Ribbon整合Eureka的结构示例如图1所示。

图1 Ribbon整合Eureka结构示例图

在图1中,搭建了一个Eureka服务器,三个服务提供者以及一个含有Ribbon的服务消费者。三个服务提供者向Eureka服务器注册服务,当多个URL向服务调用者发起请求时,基于Ribbon的负载均衡器能够有效地将请求分摊到不同的机器上。

多学一招:Nginx与Zookeeper的比较

Nginx 和Zookeeper也是可以作为负载均衡器使用的,具体介绍如下:

(1)Nginx是著名的反向代理服务器,也被广泛的作为负载均衡服务器。它的负载均衡配置非常简单,把多个Web Server配置到Nginx中,用户访问Nginx时,就会自动被分配到某个Web Server。

(2)ZooKeeper是分布式协调服务框架,有时也被用来做负载均衡。ZooKeeper作为一个服务的注册中心,在其中登记每个服务,每台服务器知道自己是属于哪个服务,在服务器启动时,自己向所属服务进行登记。

点击此处
隐藏目录