简介
目前主流的负载方案分为以下两种:
-
集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如 F5),也有软件的(比如 Nginx)。
-
客户端自己做负载均衡,根据自己的请求情况做负载,Ribbon 就属于客户端自己做负载。
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来构建微服务非常重要。
通过Spring Cloud Ribbon的封装,我们在微服务架构中使用客户端负载均衡调用非常简单,只需要如下两步:
-
服务提供者只需要启动多个服务实例并注册到一个注册中心或是多个相关联的服务注册中心。
-
服务消费者直接通过调用被@LoadBalanced注解修饰过的RestTemplate来实现面向服务的接口调用。
这样,我们就可以将服务提供者的高可用以及服务消费者的负载均衡调用一起实现了。
作者:Chandler_珏瑜 链接:https://www.jianshu.com/p/1bd66db5dc46 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Ribbon模块
名称 | 说明 |
---|---|
ribbon-loadbalancer | 负载均衡模块,可独立使用,也可以和别的模块一起使用。 |
Ribbon | 内置的负载均衡算法都实现在其中。 |
ribbon-eureka | 基于 Eureka 封装的模块,能够快速、方便地集成 Eureka。 |
ribbon-transport | 基于 Netty 实现多协议的支持,比如 HTTP、Tcp、Udp 等。 |
ribbon-httpclient | 基于 Apache HttpClient 封装的 REST 客户端,集成了负载均衡模块,可以直接在项目中使用来调用接口。 |
ribbon-example | Ribbon 使用代码示例,通过这些示例能够让你的学习事半功倍。 |
ribbon-core | 一些比较核心且具有通用性的代码,客户端 API 的一些配置和其他 API 的定义。 |