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。
无论是硬件负载均衡还是软件负载均衡,它的工作原理都不外乎下面这张图:
无论是硬件负载均衡还是软件负载均衡都会维护一个可用的服务端清单,然后通过心跳机制来删除故障的服务端节点以保证清单中都是可以正常访问的服务端节点,此时当客户端的请求到达负载均衡服务器时,负载均衡服务器按照某种配置好的规则从可用服务端清单中选出一台服务器去处理客户端的请求。这就是服务端负载均衡。
客户端负载均衡
即由请求发起方,客户端负责负载均衡。基本工作流程是,客户端请求出服务器列表之后在其中选择一个执行请求。
Ribbon的实现方式采用的就是客户端负载均衡,在Spring Cloud体系中,Ribbon在每个服务调用方,从Eureka获取服务实例列表,根据一定的负载均衡规则来选择实例执行请求。
从ribbon-core还有ribbon-loadbalancer看负载均衡的一般组成
Ribbon主要包含三个模块
- ribbon-core和ribbon-loadbalancer
- ribbon-eureka
- ribbon-httpclient
从core的源代码中,我们看出对于Ribbon,客户端负载均衡包括如下功能:
- 可动态配置
- 获取服务实例列表,维护可用实例
- 根据请求以及某种负载均衡规则选择服务实例
- 执行请求,响应处理
- 重试
Spring Cloud Ribbon 全解 (1) - 总览篇相关推荐
- Spring Cloud Ribbon 全解 (4) - 基本组件实现源码(2)
本文基于SpringCloud-Dalston.SR5 我们继续逐个分析 所有Ribbon负载均衡器需要实现的接口IClient 服务实例列表维护机制实现的接口ServerList 负载均衡数据记录L ...
- Spring Cloud Ribbon的使用详解
目录 一.概述 1.Ribbon是什么 2.Ribbon能干什么 3.Ribbon现状 4.未来替代方案 5.架构说明 二.RestTemplate 用法详解 三.Ribbon核心组件IRule 四. ...
- Spring Cloud Ribbon负载均衡策略详解
通过之前的文章可以知道, Ribbon负载均衡器选择服务实例的方式是通过"选择策略"实现的, Ribbon实现了很多种选择策略,UML静态类图如上图. IRule是负载均衡的策略接 ...
- 技术-2022-05-《Spring cloud Alibaba全解》阅读笔记
技术-2022-05-<Spring cloud Alibaba全解> 创建时间: 2022/5/22 15:21 更新时间: 2023/2/17 8:52 作者: HelloXF 第一章 ...
- Spring Cloud原理详解
概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓 ...
- Spring Cloud Ribbon 负载均衡客户端调用示例
承接 Spring Cloud 最简入门示例 这一篇, 本篇演示如何使用负载均衡客户端 Ribbon 调用在Eureka注册的服务. Ribbon 是什么? Ribbon是Netflix 的开源项目, ...
- 3 Spring Cloud Ribbon
Spring Cloud Ribbon Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具. Netflix Ribbon 是 Net ...
- Spring Cloud Ribbon 是什么?
本文内容如有错误.不足之处,欢迎技术爱好者们一同探讨,在本文下面讨论区留言,感谢. 文章目录 简述 作用 客户端负载均衡 负载均衡算法 原理和使用 核心类 原理图 使用 小结 参考资料 简述 Spri ...
- Spring Cloud Ribbon(服务消费者)
Spring Cloud Ribbon 是一个基于Http和TCP的客户端负载均衡工具,基于Netflix Ribbon实现的.它不像服务注册中心.配置中心.API网关那样独立部署,但是它几乎存在于每 ...
最新文章
- ov5640帧率配置_一文看懂赛博朋克2077中低配置的设置方法和能畅玩的电脑有哪些?...
- WP_Image_Editor_Imagick 漏洞临时解决方法
- 29、Power Query-分支语句的进阶
- Python-面向对象的编程语言
- c语言vc数据类型长度,vc和gcc对C语言数据类型长度的定义
- Kafka笔记-Spring Boot消费者构造
- 数据结构之图的应用:关键路径
- 数据中台VS业务中台、数据中台VS数据仓库,到底有什么区别?
- Promises 对比 callbacks
- 剑指offer面试题28. 对称的二叉树(递归)
- HDU 5025 Saving Tang Monk【bfs搜索】【北大ACM/ICPC竞赛训练】
- flash 模拟eeprom
- 它来了,指数基金定投实操!
- phrases practice_新视野大学英语第三版第二册Book 2 Unit 4 College sweethearts教案
- python pyinstaller打包exe添加版本信息
- 集合综合案例:播放器
- 镂空三角形(for循环找规律)
- 「2020年大学生电子设计竞赛分享」电源题,省一等奖!
- PageRank背后的数学
- MFC Windows 程序设计[323]之噪声特征流显示gribble2(附源码)
热门文章
- CH330显示未知USB设备(设备描述符请求失败)
- RK3399-商显广告机主板方案
- leet198.打家劫舍
- vue中播放flv流视频
- 1063 Set Similarity (25 分) java 题解
- weka分类器怎么设置样本类别_NeurIPS 2020 | 港中文MMLab自步对比学习: 充分挖掘无监督学习样本...
- dao层和serivce层的作用和区别
- Vuepress-theme-reco 构建博客上传GitHub可以访问,无法正常显示。
- HOOK技术四-插件中Activity启动实战
- linux启动菜单ubuntu,在Ubuntu上用BURG来美化开机选择菜单