一、简述
对于Nginx服务器来说,它是服务端的负载均衡,而分布式服务实现的客户端的负载均衡。即为对于nginx服务器,所有的请求到达nginx后,由nginx服务器进行请求路由的分发,实现负载均衡。对于分布式服务,是由客户端主动拉取注册中心的服务列表,然后通过负载均衡算法拉取一个可用服务实例(其中通过自旋锁的cas来保证服务不被多个线程重复获取)
Nginx是集中式的负载均衡,分布式服务是消费者内部线程实现的负载均衡。
二、举例说明
用户下单,假设存在两个模块订单模块和商品模块,两个模块部署了多个实例用于实现负载均衡,且注册于同一个注册中心。用户发送下单请求后,请求先到达nginx,由nginx进行负载均衡将请求发给订单服务,订单服务梳理业务完毕后,需要调用商品服务减扣库存的时候,通过分布式服务先从注册中心获取所z有的商品的服务,然后通过负载均衡算法选取一个可用服务进行调用,过程结束,这个过程式发生在订单服务内的。
三、为什么说Nginx式服务端的负载均衡,分布式服务是客户端的负载均衡呢?
用户发送请求到nginx,nginx是服务端
分布于服务是服务之间通信的负载均衡,订单服务调用商品服务时,订单服务就是客户端,商品服务就是服务端。