Spring Cloud Ribbon

Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,它基于 Netflix Ribbon 实现。 通过 Spring Cloud 的封装, 可以让我们轻松地将面向服务的 REST 模板请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon 虽然只是一个工具类框架,它不像服务注册中心、 配置中心、 API 网关那样需要独立部署, 但是它几乎存在于每一个Spring Cloud 构建的微服务和基础设施中。

服务端负载均衡

负载均衡在系统架构中是一个非常重要,并且是不得不去实施的内容。 因为负载均衡是对系统的高可用、 网络压力的缓解和处理能力扩容的重要手段之一。 我们通常所说的负载均衡都指的是服务端负载均衡, 其中分为硬件负载均衡和软件负载均衡。 硬件负载均衡主要通过在服务器节点之间安装专门用于负载均衡的设备,比如 F5 等;而软件负载均衡则是通过在服务器上安装一些具有均衡负载功能或模块的软件来完成请求分发工作, 比如Nginx等。不论采用硬件负载均衡还是软件负载均衡,只要是服务端负载均衡都能以类似下图的架构:

件负载均衡的设备或是软件负载均衡的软件模块都会维护一个下挂可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保证清单中都是可以正常访问的服务端节点。当客户端发送请求到负载均衡设备的时候, 该设备按某种算法(比如线性轮询、 按权重负载、 按流量负载等)从维护的可用服务端清单中取出一台服务端的地址, 然后在负载均衡服务器内部进行转发。

客户端负载均衡

客户端负载均衡和服务端负载均衡最大的不同点在千上面所提到的服务清单所存储的位置。 在客户端负载均衡中, 所有客户端节点都维护着自己要访问的服务端清单, 而这些服务端的清单来自于服务注册中心,比如上一章我们介绍的Eureka服务端。同服务端负载均衡的架构类似, 在客户端负载均衡中也需要心跳去维护服务端清单的健康性, 只是这个步骤需要与服务注册中心配合完成。

RestTemplate

Get请求

Post请求

Delete请求

搭建Ribbon测试

引入Ribbon支持

添加RestTemplateBean配置

配置application.properties

其中 作用是命名服务,以后Ribbon的负责均衡会根据配置文件的配置的调用列表轮训调用.

测试ribbon负责均衡

测试多次尝试负载均衡效果 : )

Ribbon和Eureka集成

启动web实例,作为服务提供端

依赖清单

代码清单

启动web实例,并且将服务注册到eureka注册中心

UserController.java

application-app1.properites

application-app2.properites

WebIntanceApplication.java

启动之后服务查看Eureka服务

启动Web消费端,集成Ribbon

依赖清单

代码清单

WebInstanceApplication.java

UserRestController.java

application.properties

访问 http://localhost:9999/hello查看负载均衡效果

微信公众账号

关注我吧

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181123G0TT1Z00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券