ribbon是什么?
●Spring Cloud Ribbon是基FNetflix Ribbon实现的一套客户端负载均衡的工具。
●简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将NetFlix的中间层服务连接在一起。Ribbon的客户端组件提供一系列完整的配置项如:连接超时、重试等等。简单的说,就是在配置文件中列出LoadBalancer (简称LB:负载均衡)后面所有的机器,Ribbon会 自动的帮助你基于某种规则(如简单轮询,随机连接等等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法!
ribbon能干嘛?
●LB,即负载均衡(Load Balance) ,在微服务或分布式集群中经常用的一种应用。
●负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA (高可用)。
●常见的负载均衡软件有Nginx, Lvs 等等
●dubbo、SpringCloud中均给我们提供 了负载均衡,SpringCloud的负载均衡算法可以自定义
●负载均衡简单分类:
。集中式LB
■即在服务的消费方和提供方之间使用独立的LB设施,如Nginx:反向代理服务器!,由该设施负责把访问请求通过某种策略转发至服务的提供方!
。进程式LB
■将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选出一个合适的服务器。
■Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址!
不能光说不练,我们进入到代码部分:
1.都说了Ribbon是一套客户端的负载均衡,所以肯定是出现在消费者层面,所以我们来到springcloud-consumer-dept-80,第一步添加依赖。
<!-- Ribbon --> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-ribbon --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> <version>2.1.1.RELEASE</version> </dependency> <!-- Eureka --> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.1.1.RELEASE</version> </dependency>
2.配置application.xml文件,配置Eureka配置。
#Eureka eureka: client: register-with-eureka: false #不向Eureka注册自己 service-url: defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
3.修改启动类,添加注解@EnableEurekaClient
4.修改ConfigBean,添加Ribbon注解@LoadBalanced
5.修改DeptConsumerController类,修改原来地址前缀,从原来的写死的地址,改为现在服务名。
6.依次启动三个服务注册中心,7001、7002、7003,和服务提供者8001,再启动消费者80。
7.调用接口测试。