一篇文章掌握负载均衡Ribbon作用和架构以及核心组件

这篇具有很好参考价值的文章主要介绍了一篇文章掌握负载均衡Ribbon作用和架构以及核心组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、Ribbon是什么

2、Ribbon的作用

1.集中式LB

2.进程式LB

3、Ribbon负载均衡架构

总结:

4、Ribbon核心组件IRule


1、Ribbon是什么

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具

简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将

NetFlix的中间层服务连接在一起。

Ribbon的客户端组件提供一系列完整的配置项如:连接超时、重试等等。简单的说,就是在配置

文件中列出LoadBalancer(简称LB:负载均衡)后面所有的机器,Ribbon会自动的帮助你基于某

种规则(如简单轮询,随机连接等等)去连接这些机器。我们也很容易使用Ribbon实现自定义的

负载均衡算法!

2、Ribbon的作用

LB,即负载均衡(Load Balance),在微服务或分布式集群中经常用的一种应用。

负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。

常见的负载均衡软件有 Nginx,Lvs 等等。

SpringCloud的负载均衡算法,可以自定义负载均衡简单分类:

1.集中式LB

  • 即在服务的消费方和提供方之间使用独立的LB设施

  • 如之前学习的Nginx,由该设施负责把访问请求通过某种策略转发至服务的提供方!

2.进程式LB

  • 将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地 址中选出一个合适的服务器。

  • Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务 提供方的地址!

Ribbon的github地址 : GitHub - Netflix/ribbon: Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support.Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support. - GitHub - Netflix/ribbon: Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support.https://github.com/NetFlix/ribbon

Ribbon和Eureka整合后Consumer可以直接调用服务而不用再关心地址和端口号!

3、Ribbon负载均衡架构

一篇文章掌握负载均衡Ribbon作用和架构以及核心组件,微服务架构,SpringCould,ribbon,负载均衡,微服务

Ribbon在工作时分成两步:

  • 第一步,先选择EurekaServer,它优先选择在同一个区域内负载均衡较少的Server。

  • 第二步,在根据用户指定的策略,在从server去到的服务注册列表中选择一个地址。

其中Ribbon提供了多种策略,比如轮询(默认),随机和根据响应时间加权重等等

总结:

Ribbon其实就是一个软负载均衡的客户端组件,他可以和其他所需请求的客户端结合使用,和

Eureka结合只是其中的一个实例。

4、Ribbon核心组件IRule

IRule:根据特定算法从服务列表中选取一个要访问的服务

  • RoundRobinRule轮询

  • RandomRule随机

  • AvailabilityFilterRule【会先过滤掉由于多次访问故障而处于断路器跳闸的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问】

  • WeightedResponseTimeRule【根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大,被选中的概率越高,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等待统计信 息足够,会切换到WeightedResponseTimeRule】

  • RetryRule【先按照RoundRobinRule的策略获取服务,如果获取服务失败,则在指定时间内会进行重试,获取可用的服务】

  • BestAvailableRule【会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务】

  • ZoneAvoidanceRule【默认规则,复合判断server所在区域的性能和server的可用性选择服务器】文章来源地址https://www.toymoban.com/news/detail-803826.html

到了这里,关于一篇文章掌握负载均衡Ribbon作用和架构以及核心组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++初阶之一篇文章让你掌握vector(理解和使用)

    在C++中,std::vector是标准模板库(STL)中的一种动态数组容器,它可以存储任意类型的元素,并且能够自动调整大小。std::vector提供了许多方便的成员函数,使得对数组的操作更加简单和高效。 vector声明 : template class T, class Alloc = allocatorT ; 这是 std::vector 的一般模板定义。它

    2024年02月14日
    浏览(33)
  • C++初阶之一篇文章让你掌握string类(模拟实现)

    模拟实现 std::string 是一个有挑战性的练习,它可以带来多方面的收益,尤其对于学习 C++ 和深入了解字符串操作以及动态内存管理的机制。以下是模拟实现 std::string 的一些好处和重要意义: 学习 C++ 内存管理 :std::string 是一个动态分配内存的容器,模拟实现需要手动处理内

    2024年02月15日
    浏览(30)
  • C++初阶之一篇文章让你掌握string类(了解和使用)

    学习 string 类是在 C++ 中非常重要的一步,string 类是 C++ 标准库提供的用于处理字符串的类,它相比 C 语言中的字符串处理函数更为高级、灵活和安全。以下是学习 string 类的一些重要理由: 功能强大 :string 类提供了丰富的成员函数和操作符,用于处理字符串的拼接、查找、

    2024年02月15日
    浏览(27)
  • 一篇文章让你完全掌握使用Git推送代码到新版GitCode

    GitCode是一款基于Git的在线代码托管和协作工具,提供代码版本控制、代码托管、代码评审、项目管理等功能。它支持多种编程语言,包括 Java 、 Python 、 C++ 等,可帮助开发者高效协作,提高代码质量和开发效率。GitCode还提供丰富的 API 接口,支持与其他系统集成,方便开发

    2024年03月25日
    浏览(31)
  • Python和PyTorch深入实现线性回归模型:一篇文章全面掌握基础机器学习技术

    线性回归是一种统计学中的预测分析,该方法用于建立两种或两种以上变量间的关系模型。线性回归使用最佳的拟合直线(也称为回归线)在独立(输入)变量和因变量(输出)之间建立一种直观的关系。简单线性回归是输入变量和输出变量之间的线性关系,而多元线性回归

    2024年02月15日
    浏览(34)
  • 谁说配置难?这篇文章让你轻松掌握xilinx 7系列FPGA配置技巧

      本文旨在通过讲解不同模式的原理图连接方式,进而配置用到引脚的含义(手册上相关引脚含义有四、五页,通过本文理解基本上能够记住所有引脚含义以及使用场景),熟悉xilinx 7系列配置流程,以及设计原理图时需要注意的一些事项,比如flash与FPGA的上电时序。   x

    2024年02月06日
    浏览(45)
  • 【数据结构——顺序表】线性表很难嘛?这篇文章能让你轻松掌握顺序表

    线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…。线性表在逻辑上是线性结构,也就是说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式的结构的形式存储。 是n个具有相

    2024年02月07日
    浏览(41)
  • Spring Boot 3 + JWT + Security 联手打造安全帝国:一篇文章让你掌握未来!

    Spring Security 已经成为 java 后台权限校验的第一选择.今天就通过读代码的方式带大家深入了解一下Security,本文主要是基于开源项目spring-boot-3-jwt-security来讲解Spring Security + JWT(Json Web Token).实现用户鉴权,以及权限校验. 所有代码基于 jdk17+ 构建.现在让我们开始吧! Springboot 3.0 Spri

    2024年02月07日
    浏览(38)
  • 基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon

    1.7.1 远程调用的问题 地址信息获取 : 服务消费者 如何获取 服务提供者 的 地址信息 (不能每次都写死): URL:http://localhost:8081/user/\\\"+order.getUserId() 多选一 :如果有多个服务提供者,消费者如何进行选择 监测健康状态 :消费者如何获知提供者的健康状态 1.7.2 eureka原理 地址

    2024年02月13日
    浏览(27)
  • 【数字IC精品文章收录】近500篇文章|学习路线|基础知识|接口|总线|脚本语言|芯片求职|安全|EDA|工具|低功耗设计|Verilog|低功耗|STA|设计|验证|FPGA|架构|AMBA|书籍|

    1.1 索引目的 本篇索引旨在 收藏CSDN全站中有关数字IC领域高价值文章 ,在数字芯片领域中,就算将架构,设计,验证,DFT,后端诸多岗位加在一起的数量,都不及软件类一个细分方向的岗位数量多,反映在社区氛围或是开源资料的丰富度而言,数字IC领域相较于软件/互联网领

    2024年02月03日
    浏览(106)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包