欢迎光临散文网 会员登陆 & 注册

java架构师高端课微服务_03_SpringCloud_Netflix_Ribbon

2020-07-06 10:08 作者:自学Python的小姐姐呀  | 我要投稿

主要内容

Ribbon简介

使用Ribbon开发微服务

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

Ribbon常见的负载均衡策略

Ribbon的点对点直连

学习目标

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:\windows\system32\dirvers\etc\hosts。新增内容如下:IP根据具体情况配置

创建Eureka Client工程

1.1 POM依赖

2   创建Application Service服务提供者Module


3  开发服务提供者 - Application Service

3.1 POM依赖


3.2 服务提供者代码


3.3 配置文件application.yml


3.4 启动类

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


4  创建Application Client服务消费者Module


5  开发服务消费者 - Application Client

5.1 POM依赖



5.2 服务消费者代码

5.2.1 服务接口


5.2.2 服务实现


5.2.3 控制器



5.4 启动类


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

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

集中式负载均衡

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


2  进程内负载均衡

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


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

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

Ribbon中的常用负载均衡简介

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


2  配置负载均衡策略

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

五、 Ribbon的点对点直连

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









java架构师高端课微服务_03_SpringCloud_Netflix_Ribbon的评论 (共 条)

分享到微博请遵守国家法律