2019-11-23

Spring Cloud之  负载均衡 Ribbon

1.什么是负载均衡 Ribbon?

Ribbon 是一个基于 Http 和 TCP 的 客服端 负载均衡工具,它是基于 Netflix Ribbon 实

现的,它不像 spring cloud 服务注册中心、配置中心、API 网关那样独立部署,但是它几乎

存在于每个 spring cloud 微服务中。

在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。展示了Ribbon与Eureka配合使用时的架构。

2.Ribbon的作用?

解决并提供了微服务的 负载均衡

3.为甚么使用Ribbon?

当服务的访问量增大,就用上了集群的配置,可是调用者怎么知道要调用集群中的哪个服务呢,Ribbon就派上用场了。

,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。

4.什么是负载均衡?

负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。

4.1 集中式负载均衡

即在 consumer 和 provider 之间使用独立的负载均衡设施(可以是硬件,如 F5, 也可以是软件,如 nginx), 由该设施负责把 访问请求 通过某种策略转发至 provider;

4.2 进程内负载均衡

将负载均衡逻辑集成到 consumer,consumer 从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的 provider。

Ribbon 就属于后者,它只是一个类库,集成于 consumer 进程,consumer 通过它来获取到 provider 的地址。

4.3 集中式与进程内负载均衡的区别

集中式负载均衡独立于consumer与provider之间

进程内负载均衡逻辑集成到 consumer中。

5. Ribbon的使用

Ribbon 中对于集群的服务采用的负载均衡的策略默认的是轮询

5.1 创建consumer项目

5.2 修改pom.xml文件

5.3 创建全局配置文件

5.4 编写业务层代码service

5.4.1 简化service层代码

因拼接url过于麻烦,可使用@loadBlanced注解结合RestTemplate简化代码

5.4.1.1 创建配置类

5.4.1.2 修改service代码


5.5. 编写控制层代码controller

5.6 创建集群的provider项目(省略)

5.7  将 provider 打包。部署到 linux 环境中,并启动

5.8 启动consumer,进行测试


6. Ribbon 的常见负载均衡策略

6.1轮询策略(默认) RoundRobinRule

轮询策略表示每次都顺序取下一个 provider,比如一共有 5 个provider,第 1 次取第 1 个,第 2次取第 2 个,第 3 次取第 3 个,以此类推

6.2 权重轮询策略WeightedResponseTimeRule

1.根据每个 provider 的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性越

低。2.原理:一开始为轮询策略,并开启一个计时器,每 30 秒收集一次每个 provider 的平均响应时间,当信息足够时,给每个 provider附上一个权重,并按权重随机选择provider,高权越重的 provider会被高概率选中。

6.3 随机策略 RandomRule

从 provider 列表中随机选择一个provider

6.4最少并发数策略 BestAvailableRule

选择正在请求中的并发数最小的 provider,除非这个provider 在熔断中。

6.5 在“选定的负载均衡策略”基础上进行重试机制 RetryRule

1.“选定的负载均衡策略”这个策略是轮询策略RoundRobinRule

2.该重试策略先设定一个阈值时间段,如果在这个阈值时间段内当选择 provider 不成功,则一直尝试采用“选定的负载均衡策略:轮询策略”最后选择一个可用的provider

6.6 可用性敏感策略 AvailabilityFilteringRule

过滤性能差的 provider,有 2种:

第一种:过滤掉在 eureka 中处于一直连接失败 provider

第二种:过滤掉高并发的 provider

6.7 区域敏感性策略 ZoneAvoidanceRule

1.以一个区域为单位考察可用性,对于不可用的区域整个丢弃,从剩下区域中选可用的

provider

2.如果这个 ip 区域内有一个或多个实例不可达或响应变慢,都会降低该 ip 区域内其他 ip 被选中的权重。

7. 如何设置自定义的负载均衡,自定义的负载均衡有两种:

7.1 在配置类中定义

7.2 在全局配置文件中定义

7.3 自定义负载均衡原理

Ribbon默认的负载均衡是轮询式负载均衡策略,当容器中加载了其他的负载均衡,spring会首选其他的负载均衡策略

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容