分布式架构项目离不开负载均衡,负载均衡的机制解决了服务集群的性能和稳定性。Netflix 项目中的另一个项目 Ribbon 框架就是一个负载均衡的程序。
1. Ribbon 框架特征:
- 插拔式的负载均衡规则
- 支持 HTTP 、TCP、UDP 协议
- 集成了负载均衡功能的客户端
2.Ribbon 核心模块分类
- ribbon-core : 该模块提供了 负载均衡器以及 客户端定义的接口并且 内置了一些列的负载均衡实现的 API
- ribbon-eureka : 为 eureka 服务发现治理框架 提供了 负载均衡的实现
- ribbon-httpclient : 对象 apache httpClint 进行了封装,提供了具有负载均衡的 Rest 功能的 客户端
3. Ribbon 负载均衡器提供的主要基础功能接口
- Rule : 该接口定义了将会从服务器列表中返回具体的服务器实例
- Ping : 该接口定义了确保服务器网络可以连接
- ServerList : 该接口提供静态或者动态服务实例列表,如果是动态服务实例会开启一个后台线程来刷新该服务列表
4.Ribbon 例子
4.1 创建 eureka 服务端 、 服务提供者 、服务调用者相关程序 (以下地址下载)
- eureka 服务端:
[https://github.com/cqzhangjian/eureka.git](https://github.com/cqzhangjian/eureka.git)
- eureka 服务提供者
[https://github.com/cqzhangjian/eureka.git](https://github.com/cqzhangjian/eureka.git)
- eureka 服务调用者
[https://github.com/cqzhangjian/eureka.git](https://github.com/cqzhangjian/eureka.git)
4.2 Ribbon 的使用
在 Eureka 中使用 Ribbon 非常的简单,因为在 服务调用者服务应用中导入 Spring-cloud-starer-eureka 依赖的时候已经集成了 Ribbon。 Ribbon 通过读取 eureka 服务中心注册列表信息以及本身提供的负载均衡算法进行负载调用服务实例。
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate ();
}
@LoadBalanced 作用于在 RestTemplate 组件后, RestTemplate 就具有根据负载均衡算法来进行负载调用了。