spring cloud ribbon 配置 spring cloud gateway ribbon_微服务


主要内容

Ribbon简介

使用Ribbon开发微服务

集中式与进程内负载均衡区别

Ribbon常见的负载均衡策略

Ribbon的点对点直连

学习目标


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_02


Spring Cloud Netflix Ribbon

一、 Ribbon简介

Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的。它不像spring cloud服务注册中心、配置中心、API网关那样独立部署,但是它几乎存在于每个spring cloud 微服务中。包括feign提供的声明式服务调用也是基于该Ribbon实现的。ribbon默认提供很多种负载均衡算法,例如 轮询、随机 等等。甚至包含自定义的负载均衡算法。Ribbon可以用于解决并提供微服务的负载均衡的问题。

二、 使用Ribbon开发微服务

在Spring Cloud中,使用Ribbon技术开发Eureka Client组件还是非常方便的。我们在开发过程中,不需要像Dubbo那样关注服务的角色。无论是Provider还是Consumer都是一个微服务客户端,只是在编码层面上,服务消费者代码的开发相对比较麻烦。我们通过简单案例测试一下Spring Cloud中的微服务开发过程。

因为现在的Eureka Server部署在Linux中,并已为Linux定义了新的主机域名,需要先修改开发测试环境中的hosts文件。windows中的hosts文件位于:C:windowssystem32dirversetchosts。新增内容如下:(IP根据具体情况配置)


spring cloud ribbon 配置 spring cloud gateway ribbon_微服务_03


1 创建Eureka Client工程


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_04


1.1 POM依赖


spring cloud ribbon 配置 spring cloud gateway ribbon_微服务_05


spring cloud ribbon 配置 spring cloud gateway ribbon_微服务_06


2 创建Application Service服务提供者Module


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_07


3 开发服务提供者 - Application Service

3.1 POM依赖


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_08


spring cloud ribbon 配置 spring cloud gateway ribbon_微服务_09


3.2 服务提供者代码


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_10


3.3 配置文件application.yml


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_11


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_12


3.4 启动类


spring cloud ribbon 配置 spring cloud gateway ribbon_微服务_13


3.5 检查Eureka Server中的服务注册情况


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_14


4 创建Application Client服务消费者Module


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_15


5 开发服务消费者 - Application Client

5.1 POM依赖


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_16


5.2 服务消费者代码

5.2.1 服务接口


spring cloud ribbon 配置 spring cloud gateway ribbon_微服务_17


5.2.2 服务实现


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_18


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_19


5.2.3 控制器


spring cloud ribbon 配置 spring cloud gateway ribbon_微服务_20


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_21


5.4 启动类


spring cloud ribbon 配置 spring cloud gateway ribbon_微服务_22


三、 集中式与进程内负载均衡区别

业界主流的负载均衡解决方案有:集中式负载均衡和进程内负载均衡。

1 集中式负载均衡

即在客户端和服务端之间使用独立的负载均衡设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务端。


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_23


2 进程内负载均衡

将负载均衡逻辑集成到客户端组件中,客户端组件从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务端发起请求。Ribbon就是一个进程内的负载均衡实现。


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_24


四、 Ribbon常见的负载均衡策略

Ribbon就属于进程内负载均衡,它只是一个类库,集成于Eureka Client进程,Eureka Client进程通过访问注册中心Eureka Server发现服务列表,发现的服务列表信息是由ribbon来管理的。当访问Application Service的时候,Application Client会通过ribbon来找到合适的Application Service地址信息,并发起远程调用请求。

1 Ribbon中的常用负载均衡简介

ribbon的负载均衡策略是通过不同的类型来实现的,下表详细介绍一些常用负载均衡策略及对应的Ribbon策略类。


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_25


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_26


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_27


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_28


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_29


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_30


spring cloud ribbon 配置 spring cloud gateway ribbon_负载均衡_31


2 配置负载均衡策略

可以通过修改Application Client应用的全局配置文件来改变当前环境中使用的Ribbon负载均衡策略。


spring cloud ribbon 配置 spring cloud gateway ribbon_微服务_32


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_33


五、 Ribbon的点对点直连

Ribbon也可以脱离Eureka Server注册中心,通过配置的方式指定要调用的远程服务信息,实现Ribbon点对点直连。修改的配置内容如下:


spring cloud ribbon 配置 spring cloud gateway ribbon_Server_34