Ribbon(负载均衡)概述与初级配置
一: 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、进行添加配置
2、修改application.yml追加Eureka服务注册的地址
1、也就是现在不能直接去找8001(提供端),要通过Eureka(7001/7002/7003)
2、添加如下配置
3、对该工程(80)中的ConfigBean进行配置
1、要求客户在访问的时候只带负载均衡
2、所有的开启在该工程(80)ConfigBean类配置注解@LoadBalanced
3、从而完成通过微服务名称在Eureka上找到并且访问
4、对该工程(80)中的主启动类进行配置
1、在该工程的DeptConsumer80_Ch类上加注解@EnableEurekaClient进行与Eureka整合
5、修改客户端的访问类
1、在该工程(80)的访问类(DeptController_Consumer)把REST_URL_PREFIX改成微服务对外曝光的名称(大写)
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可以直接调用服务不用去关心接口和地址