SpringCloud架构:5-客户端负载均衡:Spring Cloud Ribbon

一、Spring Cloud Ribbon简介

  • Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载工具,它基于Netflix Ribbon实现。
  • Spring Cloud Ribbon几乎存在于每一个Spring Cloud构建的微服务架构中,因为服务之间的调用、API网关的请求转发等内容,实际上都是通过Ribbon来实现的。
  • 我们常用的Feign,也是基于Ribbon实现的工具。

二、服务端负载均衡和客户端负载均衡

负载均衡在系统架构中是一个非常重要,并且是不得不去实施的内容。负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。

1.服务端负载均衡

通常所说的负载均衡都是指服务端负载均衡,其中分为硬件负载均衡和软件负载均衡。

  • 硬件负载均衡:
    主要通过在服务器节点之间安装专门用于负载均衡的硬件设备,比如F5等。
  • 软件负载均衡:
    主要通过在服务器上安装一些具有负载均衡功能的软件来完成请求分发工作,比如Nginx。
  • 服务端负载均衡示意图:
    SpringCloud架构:5-客户端负载均衡:Spring Cloud Ribbon
    服务端负载均衡的负载均衡设备会维护一个可用服务器信息清单,通过心跳检测来剔除故障的服务器节点以保证服务清单中的服务器都是可用的。当客户端的请求到达负载均衡设备时,该设备按照某种算法(线性轮询、按权重负载、按流量负载等)从服务清单中取出一个服务器节点地址,然后将请求转发至该节点。
2.客户端负载均衡
  • 客户端负载均衡:
    所有的客户端节点(服务、服务消费者)都维护着一个服务清单,这些服务清单来自于服务注册中心。当然服务也需要发送心跳进行服务续约以保证服务清单中的服务节点都是可用的。
  • 区别:
    与服务端负载均衡最大的不同点在于服务清单存储的位置。
  • 客户端负载均衡示意图:
    SpringCloud架构:5-客户端负载均衡:Spring Cloud Ribbon

三、RestTemplate

四、源码分析