Spring Cloud Ribbon
什么是负载均衡
- 负载均衡是微服务架构中经常使用的一种技术。 负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一,简单的说就是将用户的请求平摊的分配到多个服务上,从而实现系统的高可用性集群
- 负载均衡可通过 硬件设备 及 软件 进行实现,软件比如:Nginx等,硬件比如:F5等
- 负载均衡相应的在中间件,例如:Dubbo 和 SpringCloud 中均给我们提供了负载均衡组件
用户请求先到达负载均衡器(也相当于一个服务),负载均衡器根据负载均衡算法将请求转发到微服务。负载均衡器维护一份服务端列表,根据负载均衡算法 将请求转发到相应的微服务上。
负载均衡 算法有:轮循、随机、加权轮循、加权随机、地址哈希等方法,所以负载均衡可以为微服务集群分担请求,降低系统的压力。
什么是客户端负载均衡(Ribbon)
上图是服务端负载均衡。客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置。在客户端负载均衡中,每个客户端服务都有一份自己要访问的服务端清单,这些清单统统都是从Eureka服务注册中心获取的。而在服务端负载均衡中,只要负载均衡器维护一份服务端列表 。
Spring Cloud Ribbon 是基于 Netflix 公司发布的开源项目 Ribbon 进行封装的一套客户端负载均衡器。
Ribbon 从 Eureka Server 获取服务列表,Ribbon根据负载均衡算法直接请求到具体的微服务,中间省去了负载均衡服务。
如下图是Ribbon负载均衡的流程图:
Ribbon 服务调用配置实战
修改microservice-cloud-04-consumer-product-80 模块
右键可以查看依赖关系
修改yml文件
修改ConfigBean
修改Controller为服务名
修改主启动类
测试客户端可以正常访问
Ribbon 负载均衡实战
新建数据库springcloud_db02
新建 microservice-cloud-06-provider-product-8002
(同microservice-cloud-03-provider-product-8001),配置yml和启动类
依次启动6001、6002、8001、8002、80,访问80,会轮询访问db01和db02,测试成功