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

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

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

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

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

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

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

1.Ribbon的架构

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.Ribbon的负载均衡流程

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

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

3. Ribbon具体使用

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

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

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

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

  • 发起服务调用

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

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

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

  • 实现负载均衡

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

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

作者介绍

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

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

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

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

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

标签:
  • 热门焦点
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • 女孩租房开2小时空调用完100元电费引热议:5级能耗惹不起 月薪过万电费也交不起

    近日,江苏苏州一女孩租房当天充值了100元电费,开着空调不到2小时发现电费已用完。对于为什么这个快,房东表示,电表坏了这种情况很多,之前也遇到过,给租客换
  • 一文看懂为苹果Vision Pro开发应用程序

    译者 | 布加迪审校 | 重楼苹果的Vision Pro是一款混合现实(MR)头戴设备。Vision Pro结合了虚拟现实(VR)和增强现实(AR)的沉浸感。其高分辨率显示屏、先进的传感器和强大的处理能力
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 一条抖音4亿人围观 ! 这家MCN比无忧传媒还野

    作者:Hiu 来源:互联网品牌官01 擦边少女空降热搜,幕后推手曝光被网友誉为“纯欲天花板”的女网红井川里予,近期因为一组哥特风照片登上热搜,引发了一场互联网世界关于
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • 2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

    喜逢开学季,各大商家开始推出自己的新产品,进行打折促销活动。对于忠实的端游爱好者来说,能够拥有一款梦寐以求的笔记本电脑是一件十分开心的事。但是现在的
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top