当前位置:首页 > 科技  > 软件

深入剖析Netflix Ribbon:分布式微服务架构的负载均衡神器

来源: 责编: 时间:2023-11-01 09:18:55 175观看
导读作者 | 波哥审校 | 重楼在现代分布式微服务架构中,负载均衡是保证系统高可用、高性能的关键组件之一。Netflix Ribbon作为Netflix开源的负载均衡库,为微服务架构提供了强大的负载均衡能力,极大地促进了微服务间的通信和

作者 | 波哥AlF28资讯网——每日最新资讯28at.com

审校 | 重楼AlF28资讯网——每日最新资讯28at.com

在现代分布式微服务架构中,负载均衡是保证系统高可用、高性能的关键组件之一。Netflix Ribbon作为Netflix开源的负载均衡库,为微服务架构提供了强大的负载均衡能力,极大地促进了微服务间的通信和协作。本篇笔者将深入剖析Netflix Ribbon的底层实现原理,带您揭开其神秘面纱。AlF28资讯网——每日最新资讯28at.com

Netflix Ribbon是Netflix开源的负载均衡库,它可以无缝集成到微服务架构中,提供了多种负载均衡策略和丰富的配置选项,帮助开发者实现高性能、高可用的服务调用。先来看下Ribbond 架构:AlF28资讯网——每日最新资讯28at.com

1.Ribbon的架构

Ribbon的架构主要由以下几个核心组件构成:AlF28资讯网——每日最新资讯28at.com

  • IClientConfig:配置接口,用于获取配置信息,如连接超时、读取超时等。
  • IRule:负载均衡规则接口,用于决定请求应该转发到哪个服务实例。

AlF28资讯网——每日最新资讯28at.com

其中AlF28资讯网——每日最新资讯28at.com

  • choose(Object key): 从所有服务实例中选择一个,根据具体的负载均衡规则,返回选定的服务实例。
  • setLoadBalancer(ILoadBalancer lb): 设置与负载均衡规则相关的负载均衡器。
  • getLoadBalancer(): 获取与负载均衡规则相关联的负载均衡器。

IRule 接口提供了选择服务实例的方法,具体选择哪个服务实例取决于实现该接口的负载均衡规则。这个规则可以是轮询、随机、加权轮询等不同的策略。使用示例如下:AlF28资讯网——每日最新资讯28at.com

AlF28资讯网——每日最新资讯28at.com

当然我们一般使用是和Spring/SpringBoot整合使用,只需要在配置中加以配置即可。如果想实现自己的选择机制,则只需要实现IRule,并完成使用配置即可。AlF28资讯网——每日最新资讯28at.com

  • IPing:用于检测服务实例的存活状态。

主要有两种实现方式:PingUrl 和 PingConstant
AlF28资讯网——每日最新资讯28at.com

PingUrl 实现通过向服务实例发送HTTP请求来检查其健康状态。默认情况下,它会向服务实例的 / 路径发送 GET 请求来检查服务实例是否存活。AlF28资讯网——每日最新资讯28at.com

AlF28资讯网——每日最新资讯28at.com

PingConstant 实现则更简单粗暴,无论什么情况下都返回 true,表示服务实例一直存活AlF28资讯网——每日最新资讯28at.com

AlF28资讯网——每日最新资讯28at.com

  • ServerList:用于获取所有可用的服务实例列表。

接口有两个方法:AlF28资讯网——每日最新资讯28at.com

  1. getInitialListOfServers(): 用于获取初始化时所有可用的服务实例列表。
  2. getUpdatedListOfServers(): 用于获取更新后的所有服务实例列表,包括动态刷新的列表。

ServerList 接口的实现是由具体的服务发现组件完成的。在 Netflix Ribbon 中,常用的服务发现组件是 Netflix Eureka,它可以通过 Eureka Server 获取服务实例信息AlF28资讯网——每日最新资讯28at.com

例如,Netflix Ribbon 提供了 DiscoveryEnabledNIWSServerList,它是通过 Eureka 获取服务实例的一个实现类。这个实现类会调用 Eureka Client 获取服务实例的信息,然后将服务实例封装成 Ribbon 的 Server 对象。AlF28资讯网——每日最新资讯28at.com

  • ServerListFilter:用于对服务实例列表进行过滤,以适应特定需求。

它只有getFilteredListOfServers这个方法,用于过滤服务实例列表,返回过滤后的服务实例列表。AlF28资讯网——每日最新资讯28at.com

ServerListFilter允许我们自定义过滤规则,以决定负载均衡器最终选择的服务实例。我们可以根据自己的需求实现这个接口,定义自己的过滤规则。这个过程可以包括排除一些不符合条件的服务实例,或者根据特定标准重新排序服务实例列表等。AlF28资讯网——每日最新资讯28at.com

Netflix Ribbon 中,有一些内置的过滤器,例如 ZonePreferenceServerListFilter、ZoneAffinityServerListFilter 等。这些过滤器基于服务实例所在的区域(Zone)来进行服务实例的过滤和排序,例如:AlF28资讯网——每日最新资讯28at.com

AlF28资讯网——每日最新资讯28at.com

2.Ribbon的负载均衡流程

下面详细介绍下Ribbon的负载均衡流程:AlF28资讯网——每日最新资讯28at.com

  • 获取服务实例列表:Ribbon通过ServerList获取可用的服务实例列表。
  • 过滤服务实例:Ribbon会通过ServerListFilter对服务实例列表进行过滤,可能会过滤掉一些不符合特定条件的实例。
  • 选择负载均衡策略:根据IRule选择合适的负载均衡策略,如轮询、随机、加权轮询等。这里的IRule可以是我们自己实现的规则。
  • 选择目标服务实例:根据负载均衡策略,选择一个目标服务实例。
  • 执行请求:将请求发送到选择的服务实例上。

3. Ribbon具体使用

接下来,我们详细说明下如何在项目中使用RibbonAlF28资讯网——每日最新资讯28at.com

  • 首先,我们需要在Spring配置文件中初始化Ribbon(当然maven的配置各位老铁就自己去配置了)

AlF28资讯网——每日最新资讯28at.com

在上述配置中,我们通过ribbonRule指定了负载均衡规则,这里使用了AvailabilityFilteringRule,它会根据服务实例的状态来判断是否选择该实例。而ribbonPing则用于设置服务实例的健康检查策略。AlF28资讯网——每日最新资讯28at.com

  • 发起服务调用

接下来,我们通过RestTemplate来发起服务调用:AlF28资讯网——每日最新资讯28at.com

AlF28资讯网——每日最新资讯28at.com

在这段代码中,我们通过RestTemplate发起了对名为SERVICE-PROVIDER的服务的调用。AlF28资讯网——每日最新资讯28at.com

  • 实现负载均衡

通过上述配置和代码,Ribbon将会根据我们指定的负载均衡规则和健康检查策略来选择合适的服务实例,从而实现负载均衡。AlF28资讯网——每日最新资讯28at.com

本篇对Netflix Ribbon的底层实现原理进行了简要介绍,涵盖了其核心组件、架构、负载均衡流程以及实现原理的基本概念。深入理解Netflix Ribbon对于构建高性能、高可用的微服务架构至关重要,希望能对您有所帮助。AlF28资讯网——每日最新资讯28at.com

作者介绍

波哥,互联行业从业10余年,先后担任项目总监及架构师。目前专攻技术,喜欢研究技术原理。技术全面,主攻Java,精通JVM底层机制及Spring全家桶底层框架原理,熟练掌握当前主流的中间件、服务网格等技术原理。AlF28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-16285-0.html深入剖析Netflix Ribbon:分布式微服务架构的负载均衡神器

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Springboot中如何自定义Web容器的运行参数

下一篇: 掌握Spring事件监听器的内部逻辑与实现

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 7月安卓手机好评榜:三星S23Ultra好评率第一

    7月安卓手机好评榜:三星S23Ultra好评率第一

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年7月1日至7月31日,仅限国内市场。第一名:三星Galaxy S23 Ultra好评率:95.71%在即将迎来新
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • 印度登月最关键一步!月船三号今晚进入环月轨道

    印度登月最关键一步!月船三号今晚进入环月轨道

    8月5日消息,据印度官方消息,月船三号将于北京时间今晚21时30分左右开始近月制动进入环月轨道。这是该探测器能够成功的最关键步骤之一,如果成功将开始围
  • 十个可以手动编写的 JavaScript 数组 API

    十个可以手动编写的 JavaScript 数组 API

    JavaScript 中有很多API,使用得当,会很方便,省力不少。 你知道它的原理吗? 今天这篇文章,我们将对它们进行一次小总结。现在开始吧。1.forEach()forEach()用于遍历数组接收一参
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 一文搞定Java NIO,以及各种奇葩流

    一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 三星折叠屏手机去年销售近1000万台 今年目标定为1500万

    三星折叠屏手机去年销售近1000万台 今年目标定为1500万

    7月29日消息,三星率先发力可折叠手机市场,在全球市场已经取得了非常亮眼的成绩,接下来会进一步巩固和扩大这一优势。三星在推出Galaxy Z Flip5和Galax
  • 超级标准版旗舰!iQOO 11S全球首发iQOO超算独显芯片

    超级标准版旗舰!iQOO 11S全球首发iQOO超算独显芯片

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
Top
Baidu
map