上一篇:Nacos如何整合SpringCloud ?| 带你读《Spring Cloud Alibaba(2019)》之四
如何构建一个微服务项目? | 带你读《Spring Cloud Alibaba(2019)》之六
本文来自于《精通Spring Cloud Alibaba》课程的整理,讲师为余胜军,点击查看视频内容。
本文系志愿者整理,供配合学习中心课程使用,不做商业用途。
SpringCloud负载均衡器说明
在SpringCloud第一代中使用Ribbon、SpringCloud第二代中直接采用自研发loadbalancer即可,默认使用的Ribbon。
使用方式非常简单:
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
LoadBalancerClient负载均衡器
@RequestMapping("/loadBalancerClient")
public Object loadBalancerClient() {
return loadBalancerClient.choose("meitemayikt-member");
}
底层默认原理是调用ribbon的实现客户端负载均衡器。
本地负载均衡与Nginx 的区别
本地负载均衡
本地负载均衡器基本的概念:我们的消费者服务从我们的注册中心获取到集群地址列表,缓存到本地,然后本地采用负载均衡策略(轮训、随机、hash一致性、权重等),实现本地的rpc远程的。
本地负载均衡器有:
自己写、ribbon SpringleCloud第一代中loadbalancerSpringCloud自己研发。
如何选择ribbon还是loadbalancer
SpringCloud Rest或者Openfeign都是默认支持ribbon。
本地负载均衡器与Nginx 的区别
Nginx是客户端所有的请求统一都交给我们的Nginx处理,让后再由Nginx实现负载均衡转发,属于服务器端负载均衡器。
本地负载均衡器是从注册中心获取到集群地址列表,本地实现负载均衡算法,即本地负载均衡器。属于客户端负载均衡器。
应用场景:
Nginx属于服务器负载均衡,应用于Tomcat/Jetty服务器等,而我们的本地负载均衡器,应用于在微服务架构中rpc框架中,rest、openfeign、dubbo。
SPringleCloud rest或者openfeign客户端默认都是ribbon实现调用
@loadbalancer实际上是我们的springcloud自己写的。
loadbalancerClientSpringCloud根据服务id获取负载均衡器rpc地址。
搜索 maven仓库,对比分析
ribbon在某一时间段频繁更新。
spring-cloud-loadbalancer:版本几乎一直在更新。