Spring Cloud Ribbon 全解 (1) - 总览篇

简介: Spring Cloud Ribbon 全解 (1) - 总览篇

本文基于SpringCloud-Dalston.SR5

Ribbon是一个客户端负载均衡解决方案,简单来说,就是从Eureka获取可用服务实例列表,然后将请求根据某种策略发到这些实例上面执行


What is Spring Cloud Netflix?


其官方文档中对自己的定义是:

Spring Cloud Netflix provides Netflix OSS integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. With a few simple annotations you can quickly enable and configure the common patterns inside your application and build large distributed systems with battle-tested Netflix components. The patterns provided include Service Discovery (Eureka), Circuit Breaker (Hystrix), Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon)..

Spring Cloud Netflix这个项目对于Spring Boot应用来说,它集成了NetFlix OSS的一些组件,只需通过注解配置和Spring环境的通用简单的使用注解,你可以快速的启用和配置这些久经测试考验的NetFlix的组件于你的应用和用于构建分布式系统中。这些组件包含的功能有服务发现(Eureka),熔断器(Hystrix),智能路由(Zuul)以及客户端的负载均衡器(Ribbon) 简单的来说,Spring Cloud NetFlix这个项目对NetFlix中一些久经考验靠谱的服务发现,熔断,网关,智能路由,以及负载均衡等做了封装,并通过注解的或简单配置的方式提供给Spring Cloud用户用。


What is Ribbon?


Ribbon is a client side IPC library that is battle-tested in cloud. It provides the following features
  • Load balancing
  • Fault tolerance
  • Multiple protocol (HTTP, TCP, UDP) support in an asynchronous and reactive model
  • Caching and batching


Ribbon是一个客户端负载均衡器,提供负载均衡,容错,多协议异步模型,缓存和批处理等特性


负载均衡?


负载均衡一般是指服务端负载均衡。


服务端负载均衡


分为硬件负载均衡还有软件负载均衡。 硬件负载均衡常见的有比较昂贵的NetScaler、F5、Radware和Array等商用的负载均衡器,性能很高,但是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用 一般项目都用软负载均衡,LVS/HAProxy、Nginx的基于Linux的开源免费的负载均衡软件策略,这些都是通过软件级别来实现,所以费用非常低廉 软件负载均衡则主要是在服务器上安装一些具有负载均衡功能的软件来完成请求分发进而实现负载均衡,常见的就是Nginx。


无论是硬件负载均衡还是软件负载均衡,它的工作原理都不外乎下面这张图:


image.png


无论是硬件负载均衡还是软件负载均衡都会维护一个可用的服务端清单,然后通过心跳机制来删除故障的服务端节点以保证清单中都是可以正常访问的服务端节点,此时当客户端的请求到达负载均衡服务器时,负载均衡服务器按照某种配置好的规则从可用服务端清单中选出一台服务器去处理客户端的请求。这就是服务端负载均衡。


客户端负载均衡


即由请求发起方,客户端负责负载均衡。基本工作流程是,客户端请求出服务器列表之后在其中选择一个执行请求。 Ribbon的实现方式采用的就是客户端负载均衡,在Spring Cloud体系中,Ribbon在每个服务调用方,从Eureka获取服务实例列表,根据一定的负载均衡规则来选择实例执行请求。


从ribbon-core还有ribbon-loadbalancer看负载均衡的一般组成


Ribbon主要包含三个模块

  • ribbon-core和ribbon-loadbalancer
  • ribbon-eureka
  • ribbon-httpclient

从core的源代码中,我们看出对于Ribbon,客户端负载均衡包括如下功能:

  • 可动态配置
  • 获取服务实例列表,维护可用实例
  • 根据请求以及某种负载均衡规则选择服务实例
  • 执行请求,响应处理
  • 重试
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
16天前
|
消息中间件 Java 开发者
Spring Cloud Stream解密:流式数据在微服务中的魔力
Spring Cloud Stream解密:流式数据在微服务中的魔力
210 1
|
16天前
|
监控 Java Docker
从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合
从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合
27 0
|
16天前
|
Java Nacos 开发者
解决Spring Cloud整合Nacos与Gateway的探险之旅
解决Spring Cloud整合Nacos与Gateway的探险之旅
22 0
|
16天前
|
监控 Java 应用服务中间件
网关大解密:探索Spring Cloud Alibaba中Gateway的奥秘
网关大解密:探索Spring Cloud Alibaba中Gateway的奥秘
35 1
|
19天前
|
Java Nacos Docker
Spring Cloud Alibaba【什么是Nacos、Nacos Server下载安装 、Docker安装Nacos Server服务、微服务聚合父工程构建】(一)
Spring Cloud Alibaba【什么是Nacos、Nacos Server下载安装 、Docker安装Nacos Server服务、微服务聚合父工程构建】(一)
30 0
|
19天前
|
Java 调度 开发工具
SpringCloud【微服务架构进化论、微服务的拆分规范和原则、为什么选择Spring Cloud、什么是服务治理 】(一)-全面详解(学习总结---从入门到深化)
SpringCloud【微服务架构进化论、微服务的拆分规范和原则、为什么选择Spring Cloud、什么是服务治理 】(一)-全面详解(学习总结---从入门到深化)
66 0
|
21天前
|
Java 中间件 开发者
Spring Cloud Alibaba
【1月更文挑战第27天】【1月更文挑战第127篇】Spring Cloud Alibaba
37 1
|
23天前
|
Java API Nacos
spring.config.import 是一个 Spring Cloud Config Server 的属性,
spring.config.import 是一个 Spring Cloud Config Server 的属性,【1月更文挑战第25天】【1月更文挑战第123篇】
8 1
|
23天前
|
Java Nacos Spring
Spring Cloud Alibaba中,shared-configs、extension-configs 读不到配置怎么办?
Spring Cloud Alibaba中,shared-configs、extension-configs 读不到配置怎么办?【1月更文挑战第25天】【1月更文挑战第121篇】
18 1
|
23天前
|
负载均衡 Java 开发者
【分布式】Spring Cloud 组件综述
【1月更文挑战第25天】【分布式】Spring Cloud 组件综述

相关产品

  • 云迁移中心