Spring Cloud3-Ribbon客户端负载均衡

1.Ribbon 概述

1.1 概述

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。
简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出**Load Balancer(简称LB)**后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。
https://github.com/Netflix/ribbon/wiki/Getting-Started

1.2 负载均衡(Load Balance)

LB,即负载均衡(Load Balance),在微服务或分布式集群中经常用的一种应用。
负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA。
常见的负载均衡有软件Nginx,LVS,硬件 F5等。
相应的在中间件,例如:dubbo和SpringCloud中均给我们提供了负载均衡,SpringCloud的负载均衡算法可以自定义。

1.2.1 集中式LB(偏硬件)

即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;

1.2. 进程内LB(偏软件)

将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。
Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。

2.Ribbon实战

3.1 pom.xml

//新增spring-cloud-starter-ribbon

3.2 application.yml

//加入Ribbon时没有改动

3.3 config

//加入Ribbo有修改,增加LoadBalanced

3.4 main

//加入Ribbon时没有改动

3.5 Controller

//加入Ribbon时没有改动

4.负载均衡规则

4.1 概述 IRule:根据特定算法中从服务列表中选取一个要访问的服务

4.2 常用算法

4.2.1 RoundRobinRule–默认

4.2.2 RandomRule

4.2.3 AvailabilityFilteringRule

4.2.4 WeightedResponseTimeRule

4.2.5 RetryRule

4.2.6 BestAvailableRule

4.2.7 ZoneAvoidanceRule

4.2.8 换用算法

4.3 自定义负载均衡算法

4.3.1 main

4.3.2 MySelfRule

https://github.com/Netflix/ribbon/blob/master/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/RandomRule.java
https://github.com/Netflix/ribbon/blob/master/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/RoundRobinRule.java

– 总结于 络视频及 络文章

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92560 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月13日
下一篇 2020年3月13日

相关推荐