04 Ribbon介绍

  负载均衡是分布式框架的重点,负载均衡机制决定着整个服务器集群的性能和稳定。我们知道,Eureka的服务实例可以进行集群集群部署,每个实例都均衡处理服务请求,那么这些请求是如何被分摊到各个服务实例中的呢?Netflix的负载均衡项目Ribbon帮我们解决了这个问题。

1.Ribbon简介

  Ribbon是Netflix下的负载均衡项目,它在集群中为各个客户端的通信提供了支持,它主要实现中间层应用程序的负载均衡。Ribbon提供一下特性:

  > 负载均衡器,可支持插拔式的负载均衡原则。

  > 对多种协议提供支持,例如HTTP、TCP、UDP。

  > 集成了负载均衡功能的客户端。

  同为Netflix项目的Ribbon可以与Eureka整合使用,Ribbon同样也被集成到Spring Cloud中,作为spring-cloud-netflix项目中的子模块。Spring Cloud将Ribbon的API进行了封装,使用者可以使用封装后的API来实现负载均衡,也可以使用Ribbon原生的API。

2.Ribbon子模块

  Ribbon主要有以下的三大子模块:

  > ribbon-core: 该模块为Ribbon项目的核心。主要包括负载均衡器的接口定义、客户端接口定义、内置的负载均衡思想等API。

  > ribbon-eureka: 为Eureka客户端提供的负载均衡实现类。

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

3.负载均衡器组件

  Ribbon的负载均衡主要与集群中的各个服务器进行通信,负载均衡器需要提供以下基础功能:

  > 维护服务器的IP、DNS名称等信息。

  > 根据特定的逻辑在服务器列表中循环。

  为了实现负载均衡的基础功能,Ribbon的负载均衡器有以下三大子模块。

  > Rule: 一个逻辑组件,这些逻辑将会决定从服务器列表中返回那个服务器实例。

  > Ping: 该组件主要使用定时器来确保服务器网络可以连接。

  > ServerList:服务器列表,可以通过静态的配置确定负载的服务器,也可以动态指定服务器列表。如果指定服务器列表,则会有后台的线程来刷新该列表。

posted @ 2018-08-25 19:38  TriHeart  阅读(289)  评论(0编辑  收藏  举报