1、负载均衡以及Ribbon
1)Ribbon是什么?
- Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。
- 简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间层服务连接在一起。Ribbon 的客户端组件提供一系列完整的配置项,如:连接超时、重试等。简单的说,就是在配置文件中列出 LoadBalancer (简称LB:负载均衡) 后面所有的机器,Ribbon 会自动的帮助你基于某种规则 (如简单轮询,随机连接等等) 去连接这些机器。我们也容易使用 Ribbon 实现自定义的负载均衡算法!
2)Ribbon能干嘛?
- LB,即负载均衡 (LoadBalancer) ,在微服务或分布式集群中经常用的一种应用。
- 负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA (高用)。
- 常见的负载均衡软件有 Nginx、Lvs 等等。
- Dubbo、SpringCloud 中均给我们提供了负载均衡,SpringCloud 的负载均衡算法可以自定义。
- 负载均衡简单分类:
- 集中式LB
- 即在服务的提供方和消费方之间使用独立的LB设施,如Nginx(反向代理服务器),由该设施负责把访问请求通过某种策略转发至服务的提供方!
- 进程式 LB
- 将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选出一个合适的服务器。
- Ribbon 就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址!
- 集中式LB
2、Spring Cloud 2020.0 新特性
2020是大版本,2021是在2020的基础上小的升级
参考:
https://blog.youkuaiyun.com/alisystemsoftware/article/details/111935236
https://blog.youkuaiyun.com/u013277209/article/details/111610862
-
旧版本的
spring-cloud-netflix-dependencies
管理着 Netflix 所有组件,包括 Hystrix、Ribbon、Zuul、Eureka 等。而自 2020.0 版本起它有且只管理Eureka
(包括 Server 和 Client) -
Spring Cloud 2020.0.0 作为一个主要版本,带来了众多显著的变化,其中进行了一些阻断式更新(不向下兼容)
-
组件替代方案
3、集成 LoadBalancer
1)导jar包
在消费者
springcloud-consumer-dept-80
模块的 pom.xml 中导入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- 只需要导入
spring-cloud-starter-netflix-eureka-client
即可(父工程中有版本号)- 里面包含了
LoadBalancer
spring-cloud-starter-netflix-ribbon
这个包不需要再导入;自SpringCloud 2020起,已经舍弃了ribbon