一: Ribbon概述
1、Ribbon是什么
1、Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。
可参考github资料:https://github.com/Netflix/ribbon/wiki
2、通俗的讲:如同大型超市中的多个收银台,客户在结账的时候肯定会排人少的那个收银台,这个就是客户端的负载均衡就是Ribbon做的事情
3、简单的说,Ribbon是Netflix发布的开源的项目,主要功能是提供客户端的软件负载均衡算法(如简单轮咨询,随机连接等等),将Netflix的中间层服务连接一起,Ribbon客户端注解提供一系列完善的配置项如连接超时,重试等。就是在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动的给你基于某种规则(如简单轮咨询,随机连接等等)去连接机器(如超市结账),也很容易使用Ribbon自定义负载均衡算法。
2、Load Balancer[ləud ˈbælənsə](负载均衡)
1、微服务或分部式集群中的经常使用的一种应用
2、负载均衡就是简单的说将用的请求平摊分配到多个服务器上,从而到达系统的HA.常见的负载均衡软件Nginx/LVS等等
3、相应的中间件,如Dubbo和SpringCloud中均给我们提供了负载均衡,SpringCloud的负载均衡的算法可自定义
①) 集中式LB(Load Balancer)(扩展)
1、即在服务的消费端和提供端之间使用独立的LB设施如(硬件:F5/软件:nginx),由该设备负责把访问请求通过某种策略转发到服务的提供端。但是F5太贵了,一般公司用不起
②)进程内LB(Load Balancer)(扩展)
1、将LB逻辑集成到消费端,从而消费端从服务注册中心获取那些地址可以,然后自己在从这些地址中进行选择出一个合适的服务器(如:顾客在超市买单那个收银台少就去那个)
2、Ribbon就属于进程内的LB,他只是一个类库集成与消费端进程,消费端通过它来获取到服务提供端的地址
二:初级配置Ribbon
1、在客户端编辑POM.xml文件
1、打开工程chserivcecloud-consumer-dept-80的pom.xml文件
2、进行添加配置
![63a931ad9cc82182aba9e54e02ed71e4.png](https://i-blog.csdnimg.cn/blog_migrate/ef2790f4c9b2a2d4e806f19587384f7d.jpeg)
2、修改application.yml追加Eureka服务注册的地址
1、也就是现在不能直接去找8001(提供端),要通过Eureka(7001/7002/7003)
2、添加如下配置
![cca3db40dd8aa68d91f5bffb137b8416.png](https://i-blog.csdnimg.cn/blog_migrate/2285de7c65c6c71403c8acb2b7bbd225.jpeg)
3、对该工程(80)中的ConfigBean进行配置
1、要求客户在访问的时候只带负载均衡
2、所有的开启在该工程(80)ConfigBean类配置注解@LoadBalanced
3、从而完成通过微服务名称在Eureka上找到并且访问
![05986c1d565761ce2515624a251ed36b.png](https://i-blog.csdnimg.cn/blog_migrate/a514ae4b2512223ec3959dbe513b34bc.jpeg)
4、对该工程(80)中的主启动类进行配置
1、在该工程的DeptConsumer80_Ch类上加注解@EnableEurekaClient进行与Eureka整合
![a6b651e1287767e10f488d1f2c6fff21.png](https://i-blog.csdnimg.cn/blog_migrate/958078e54bd6c400f39bfa978bede559.jpeg)
5、修改客户端的访问类
1、在该工程(80)的访问类(DeptController_Consumer)把REST_URL_PREFIX改成微服务对外曝光的名称(大写)
![0523f85081ef86721fe65b0f709a8306.png](https://i-blog.csdnimg.cn/blog_migrate/491ccbe969ae3c0faeeb695dde770a88.jpeg)
6、测试
1、先启动Eureka的3个集群服务(7001/7002/7003)在启动提供端(chserivcecloud-provider-dept-8001)并注册到Eureka中
2、在启动消费端chserivcecloud-consumer-dept-80
①)访问:
1、http://localhost/consumer/dept/get/2
2、http://eureka7002.com:7002/
3、Ribbon和Eureka整合后consumer可以直接调用服务不用去关心接口和地址
![2469002df438c97b0d934682426379c5.png](https://i-blog.csdnimg.cn/blog_migrate/57b30126df613fcba4f41dc94e5e7960.jpeg)
![dc7e23c5c896a36148a5dd8b842c714a.png](https://i-blog.csdnimg.cn/blog_migrate/8f5dfea1a614fe3a705349d15ccf54f7.jpeg)