系列文章目录
前言
Spring Cloud Ribbon 是 一 个基于 HTTP 和 TCP 的客户端负载均衡工具,它基于 Netflix Ribbon 实现。 通过 Spring Cloud 的封装,可以让我们轻松地将面向服务的 REST 模板请求自动转换成客户端负载均衡的服务调用。 Spring Cloud Ribbon 虽然只是 一 个工具类框架,它不像服务注册中心、 配置中心、 API 网关那样需要独立部署,但是它几乎存在于每一 个Spring Cloud 构建的微服务和基础设施中。 因为微服务间的调用,API 网关的请求转发等内容实际上都是通过Ribbon 来实现的,包括后续我们将要介绍的 Feign, 它也是基于 Ribbon实现的工具。 所以,对 Spring Cloud Ribbon 的理解和使用,对于我们使用 Spring Cloud 来构建微服务非常重要。
客户端负载均衡
负载均衡在系统架构中是 一 个非常重要,并且是不得不去实施的内容。 因为负载均衡是对系统的高可用、 网络压力的缓解和处理能力扩容的重要手段之一 。 我们通常所说的负载均衡都指的是服务端负载均衡, 其中分为硬件负载均衡和软件负载均衡。 硬件负载均衡主要通过在服务器节点之间安装专门用于负载均衡的设备,比如 F5 等;而软件负载均衡则是通过在服务器上安装 一 些具有均衡负载功能或模块的软件来完成请求分发工作, 比如Nginx 等。 不论采用硬件负载均衡还是软件负载均衡,只要是服务端负载均衡都能以类似下图的架构方式构建起来:
在Spring Cloud实现的服务治理框架中, 默认会创建针对各个服务治理框架的Ribbon自动化整合配置,
Eureka中的org.springframework.cloud. netflix. ribbon. eureka. RibbonEurekaAutoConfiguration
,
Consul中的org.springframework.cloud.consul.discovery. RibbonConsulAuto-Configuration
。
在实际使用的时候, 我们可以通过查看这两个类的实现, 以找到它们的配置详情来帮助我们更好地使用它。
通过Spring Cloud Ribbon的封装, 我们在微服务架构中使用客户端负载均衡调用非常简单, 只需要如下两步:
服务提供者只需要启动多个服务实例并注册到
-
一 个注册中心或是多个相关联的服务注册中心。
-
服务消费者直接通过调用被 @LoadBalanced 注解修饰过的 RestTemplate 来实现面向服务的接口调用。
这样,我们就可以将服务提供者的高可用以及服务消费者的负载均衡调用一 起实现了。