【Ribbon】 简介

Metadata

title: 【Ribbon】 简介
date: 2023-01-09 16:20
tags:
  - 行动阶段/完成
  - 主题场景/组件
  - 笔记空间/KnowladgeSpace/ProgramSpace/ModuleSpace
  - 细化主题/Module/Ribbon/简介
categories:
  - Ribbon
keywords:
  - Ribbon
description: 【Ribbon】 简介

【Ribbon】 简介

Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具。

Netflix Ribbon 是 Netflix 公司发布的开源组件,其主要功能是提供客户端的负载均衡算法和服务调用。Spring Cloud 将其与 Netflix 中的其他开源服务组件(例如 Eureka、Feign 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后全称为 Spring Cloud Netflix Ribbon。

Ribbon 是 Spring Cloud Netflix 模块的子模块,它是 Spring Cloud 对 Netflix Ribbon 的二次封装。通过它,我们可以将面向服务的 REST 模板(RestTemplate)请求转换为客户端负载均衡的服务调用。

Ribbon 是 Spring Cloud 体系中最核心、最重要的组件之一。它虽然只是一个工具类型的框架,并不像 Eureka Server(服务注册中心)那样需要独立部署,但它几乎存在于每一个使用 Spring Cloud 构建的微服务中。

Spring Cloud 微服务之间的调用,API 网关的请求转发等内容,实际上都是通过 Spring Cloud Ribbon 来实现的,包括后续我们要介绍的 OpenFeign 也是基于它实现的。

工作流程

Ribbon 工作时分为两步:

  • 第一步先选择 Eureka Server,它优先选择在同一个 Zone 且负载较少的 Server;
  • 第二步再根据用户指定的策略,在从 Server 取到的服务注册列表中选择一个地址。其中 Netflix Ribbon 提供了多种策略,例如轮询(Round Robin)、随机(Random)、根据响应时间加权等。

架构图