欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java高级进阶|SpringCloud组件之Ribbon负载均衡

程序员文章站 2022-03-26 14:41:24
0x01,SpringCloud组件之Ribbon概念介绍Spring Cloud Ribbon是一个基于Http和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通......

java高级进阶|SpringCloud组件之Ribbon负载均衡

0x01,SpringCloud组件之Ribbon概念介绍

Spring Cloud Ribbon是一个基于Http和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。

0x02,Spring Cloud Ribbon的理解

Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心,配置中心,API网关那样需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们将要介绍的Feign,它也是基于Ribbon实现的工具。所以,对Spring Cloud Ribbon的理解和使用,对于我们使用Spring Cloud来构建微服务非常重要。

0x03,Spring Cloud Ribbon组件的使用

这里我们基于前面的Eureka进行测试,这里先创建一个项目名称为spring-cloud-ribbon的服务,里面的jar包依赖包含。

java高级进阶|SpringCloud组件之Ribbon负载均衡

0x04,对应的配置文件为application.yaml,配置信息如下

java高级进阶|SpringCloud组件之Ribbon负载均衡

0x05,基于spring-cloud-ribbon服务的启动类的注解信息如下

java高级进阶|SpringCloud组件之Ribbon负载均衡

0x06,编写一个测试类控制器,HelloRibbonController控制器。

java高级进阶|SpringCloud组件之Ribbon负载均衡

这里调用的接口是spring-cloud-eureka-client服务对应的接口,里面的代码信息如下,可以在上一篇文章的代码里面进行补加。

java高级进阶|SpringCloud组件之Ribbon负载均衡

这样的写法调用和原来的基于restTemplate调用方式没有什么本质的差别,整个Ribbon组件的搭建和使用就结束了。

0x07,客户端负载均衡的简单介绍

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

java高级进阶|SpringCloud组件之Ribbon负载均衡

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

0x08,客户端负载均衡和服务端负载均衡最大的不同点

在于上面所提到服务清单所存储的位置。在客户端负载均衡中,所有客户端节点都维护着自己要访问的服务端清单,而这些服务端清单来自于服务注册中心,比如上一章我们介绍的Eureka服务端。同服务端负载均衡的架构类似,在客户端负载均衡中也需要心跳去维护服务端清单的健康性,默认会创建针对对各个服务治理框架的Ribbon自动化整个配置。

0x09,Spring Cloud Ribbon组件使用简单清晰

通过Spring Cloud Ribbon的封装,我们在微服务架构中使用客户端负载均衡调用非常简单,只需要如下两步:第一步,服务提供者只需要启动多个服务实例并注册到一个注册中心或是多个相关联的服务注册中心。第二步,服务消费者直接通过调用被@LoadBalanced注解修饰过的RestTemplate来实现面向服务的接口调用。,这样,我们就可以将服务提供者的高可用以及服务消费者的负载均衡调用一起实现了。

0x10,参考文章地址

java高级进阶|SpringCloud组件之Ribbon负载均衡

本文地址:https://blog.csdn.net/qq_35006660/article/details/107148395