开发者学堂课程【精通 Spring Cloud Alibaba:本地负载均衡与 Nginx 区别】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/634/detail/10074
本地负载均衡与 Nginx 区别
内容简介:
一、本地负载均衡与 Nginx 区别
二、Nginx 实现负载均衡与本地负载均衡器应用场景
整个负载均衡效果都是客户端实现的及本地实现
一、本地负载均衡与 Nginx 区别
Nginx 是客户端所有的请求统一都交给 Nginx 处理,然后再由 Nginx 实现负载均衡转发,属于服务器端负载均衡器。
本地负载均衡器是属于客户端负载均衡,消费者从注册中心上获取接口调用地址列表,本地实现负载均衡算法(轮训、随机、hash 一致性、权重)等,整个负载均衡效果都是客户端实现的及本地实现,
原理:
获取接口地址列表,采用算法获取选择一个接口地址地址实现本地rp远程调用。
例如:
@RequestMapping(" /orderToMember")
public Object orderToMember( ){
//1.根据服务名称从注册中心获取集群列表地址
List<ServiceInstance> instances =
discoveryClient.getInstances(serviceld: "meitemayikt-member" );
//2.根据列表任意选择一个实现本地 rpc 调用 rest 采用我们负载均衡的算法
ServiceInstancesrviceInstance= loadBalancer.getSingleAddres(instances);
URI rpcMemberUrl = srviceInstance.getUri();
string result = restTemplate.getForobject(url: rpcMemberUrl + "/getUser",String.class);
return“订单调用会员返回结果:" + result;
第一步先去注册中心拿到集群列表的地址,在通过上面的集合经过算法选择一个 rpc,其中所有的算法都不是通过服务器实现的,而是本地实现。
本地负载均衡器:
可以自己写、ribbon Spr.ingCl.oud 第一代中、loadbalancer(属于 SpringCLoud 自己研发)。
问题:如何选择 ribbon 还是 loadbalancer?
SpringCLoud Rest 或者 Openfeign 都是默认支持 ribbon,使用这两个客户端不需要 ribbon 负载均衡价包,它已经自动帮实现好。
问题:本地负载均衡器与 Nginx 实现负载均衡器有那些区别呢?
Nginx 负载均衡器:
属于服务器负载均衡器,客户端所有的请求都统一交给我们的 Nginx,在由我们的 nginx.转发到我们的真实服务实现负载均衡。
本地负载均衡器:
属于客户端负载均衡。
二、Nginx 实现负载均衡与本地负载均衡器应用场景
Nginx 实现对我们服务器实现负载均衡器一般用于 tomcat/jetty 服务器。
本地负载均衡器属于客户端负载均衡器一般用于微服务 rpa 远程调用比如 dubbo、rest 模版、openfeign 或者 tpe 远程调用框架。