《 Ribbon 基本理论概述 》
前言
本篇文章主要对 Netfix ribbon 进行了基本的介绍,包括什么是 Ribbon ?Ribbon 的作用?Ribbon 的特性?以及Ribbon 的常用 API 的说明(当然具体的源码,需要自己去看咯)。
Ribbon 基本理论概述
1、关于 Ribbon
Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具。Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间层服务连接在一起。Ribbon 客户端组件提供一系列完善的配置项如连接超时、重试等。简单的说,就是在配置文件中列出 Load Balancer(简称LB)后面所有的机器,Ribbon 会自动的基于某种策略(如轮询连接、随机连接等)去连接这些服务器。也很容易使用 Ribbon 实现自定义的负载均衡算法来满足项目中常见的业务环境需求。
Load Balancer(简称LB)分为进程内LB和集中式LB:
进程内LB:将 Load Balancer 逻辑集成到系统的消费模块中,消费服务器从服务注册中心获取服务提供者地址列表,然后自己再从这些地址列表中选择出一个合适地址进行请求处理。在前面说到的 Ribbon 就属于进程内 LB,它只是一个类库,集成到了消费进程中,消费者通过它来获取到服务提供者的访问地址。
集中式LB:在服务的消费者和服务提供者之间的 LB 独立出来(可以是硬件,如F5, 也可以是软件,如 Nginx、HAProxy、Keepalived),由该独立出来的 LB 把访问请求通过某种策略转发至服务的提供者处理。
2、Ribbon 的作用
LB,即负载均衡(Load Balance),在微服务或分布式集群中经常用的一种应用。负载均衡简单的说就是将用户的请求平均分配到多个服务上,从而达到系统的 HA(也就是我们常说的高可用!!!)。常见的负载均衡有软件 Nginx,LVS,硬件 F5 等,话又说回来,一般没有实力的公司都用不起 F5。相应的在中间件,例如:Dubbo 和 Spring Cloud 中均给我们提供了负载均衡机制,其负载均衡算法都是可以自定义的。
3、Ribbon 特性:
- 负载均很
- 容错性
- 异步和响应模型中支持多协议,包括:HTTP、TCP、UDP
- 缓存和批处理机制
4、Ribbon 引入依赖
需要在 Maven 配置文件中,添加如下依赖:
<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon</artifactId>
<version>2.2.2</version>
</dependency>
5、Ribbon 常用 API 说明
- ribbon-example:Ribbon 常用的实例
- ribbon:该 API 实现了在其他 ribbon 模块和 Hystrix 上集成负载均衡、容错、缓存以及批处理
- ribbon-eureka:该 API 使用 Eureka Client 为云提供动态的服务器列表
- ribbon-httpclient:建立在 Apache HttpClient 之上的基于 REST 的客户端集成了负载均衡机制(已被弃用并被 Ribbon 模块所替代)
- ribbon-core:Ribbon 客户端配置 API 和其他共享 API
- ribbon-loadbalancer:Load balancer API 负载均衡 API 可以单独使用,也可以和其它模块使用
- ribbon-transport:Transport client 支持 HTTP、TCP、UDP 的协议使用 RxNetty 与负载均很的能力
3、Ribbon 源码
《 Netfix ribbon 》
好了,关于 Spring Cloud 进阶--Ribbon 基本理论概述 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。
作 者: | 华 仔 |
联系作者: | [email protected] |
来 源: | CSDN (Chinese Software Developer Network) |
原 文: | https://blog.csdn.net/Hello_World_QWP/article/details/86476944 |
版权声明: | 本文为博主原创文章,请在转载时务必注明博文出处! |