Spring Cloud 五大核心组件解析之Ribbon简介

点击关注上方“JAVA开发大本营”,设为“置顶或星标”,第一时间送达技术干货。

Spring Cloud 五大核心组件解析之Ribbon简介 

全文阅读预计3分钟

JAVA开发大本营

前言:在上文中我们讲到了Eureka的详解,当我们的服务注册到Eureka Server上了,我们还会遇到一个问题,就是当我们有多个服务节点的时候,我们如何实现负载均衡呢?   

本文为原创资源,欢迎分享,转载。

1. 负载均衡

其实提到负载均衡,大部分人都会想到在我们的服务前置一个nginx,但是这只是实现了服务器端的负载均衡,那么客户端的负载均衡怎么解决呢?

2.Spring Cloud核心组件:Ribbon

还好Spring Cloud五大核心组件中的Ribbon是专门来解决这个问题的。我们先来简单介绍一下Ribbon。

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

Spring Cloud Ribbon虽然是一个工具类框架,它不需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。

微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的。同时Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。

3.Ribbon中的几个重要组件

Ribbon由很多组件组成,其中最重要的就是以下6个

IRule访问微服务列表的规则。

IPing检查微服务是否存活。

ServerList用于获取微服务地址列表。它既可以是静态的(提供一组固定的地址),也可以是动态的(从注册中心中定期查询地址列表)。

  

ServerListFilter:对ServerList服务器列表进行二次过滤。

 

ServerListUpdater: 定义服务更新策略 。

ILoadBalancer:软件负载平衡器入口,整合以上所有的组件实现负载功能。


那么这几个组件之间是如何组合发挥自己的作用呢?

ServerList在默认情况下通过静态配置来维护服务器列表,但是通常情况下都会保持非常多的线程池连接,而ServerListFilter可以对其进行过滤,删除某些不必要的server。

根据IPing的心跳判断服务是否存活,再ServerListUpdater去更新服务器状态。

IRule则是判断服务访问的策略,轮询,随机等,以上所有的组件,都将组合到ILoadBalancer这个类中进行工作。

上面就是Ribbon简单的介绍,我们在下一篇文章中会来分享一下Ribbon中重要组件的工作原理与重要的类。

创作不易,点赞是最大的支持 Spring Cloud 五大核心组件解析之Ribbon简介

Spring Cloud 五大核心组件解析之Ribbon简介

Spring Cloud 五大核心组件解析之Ribbon简介