Spring Cloud如何实现负载均衡与远程调用机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1277个文字,预计阅读时间需要6分钟。
负载均衡+使用微服务后,为承担高并发压力,同一个服务可能启动多个实例。此时消费者需要负载均衡,将请求分散到各个实例。负载均衡主要设计有两种方式:+服务端负载均衡“
负载均衡
使用微服务后,为了能够承担高并发的压力,同一个服务可能会启动多个实例。这时候消费者就需要负载均衡,把请求分散到各个实例。负载均衡主要有两种设计:
服务端负载均衡客户端负载均衡
对于传统的分布式服务来说,大多使用服务端负载均衡。一般会使用Nginx或者ELB等工具作为负载均衡器,如下图:
传统负载均衡
而在Spring Cloud中,使用的是「客户端负载均衡」的方式,使用「Ribbon」组件来实现客户端的负载均衡。只要引入了微服务注册中心依赖,就会自动引入Ribbon依赖。客户端负载均衡原理如下图:
客户端负载均衡
Ribbon的原理
Ribbon利用了RestTemplate的拦截器(接口是ClientHttpRequestInterceptor)机制,在拦截器中实现的负载均衡。负载均衡的基本实现就是利用从「服务注册中心」获取可用的服务地址列表,然后通过一定算法负载,决定使用哪一个服务地址来进行HTTP调用。
详情可以查看LoadBalancerInterceptor这个类,位于org.springframework.cloud.client.loadbalancer包下。
本文共计1277个文字,预计阅读时间需要6分钟。
负载均衡+使用微服务后,为承担高并发压力,同一个服务可能启动多个实例。此时消费者需要负载均衡,将请求分散到各个实例。负载均衡主要设计有两种方式:+服务端负载均衡“
负载均衡
使用微服务后,为了能够承担高并发的压力,同一个服务可能会启动多个实例。这时候消费者就需要负载均衡,把请求分散到各个实例。负载均衡主要有两种设计:
服务端负载均衡客户端负载均衡
对于传统的分布式服务来说,大多使用服务端负载均衡。一般会使用Nginx或者ELB等工具作为负载均衡器,如下图:
传统负载均衡
而在Spring Cloud中,使用的是「客户端负载均衡」的方式,使用「Ribbon」组件来实现客户端的负载均衡。只要引入了微服务注册中心依赖,就会自动引入Ribbon依赖。客户端负载均衡原理如下图:
客户端负载均衡
Ribbon的原理
Ribbon利用了RestTemplate的拦截器(接口是ClientHttpRequestInterceptor)机制,在拦截器中实现的负载均衡。负载均衡的基本实现就是利用从「服务注册中心」获取可用的服务地址列表,然后通过一定算法负载,决定使用哪一个服务地址来进行HTTP调用。
详情可以查看LoadBalancerInterceptor这个类,位于org.springframework.cloud.client.loadbalancer包下。

