范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

改善Istio传播延迟(译文来自Airbnb)

  介绍
  在本文中,我们将展示我们如何识别和解决 Airbnb 的服务网格性能问题,提供对服务网格问题故障排除过程的见解。 背景
  在 Airbnb,我们使用微服务架构,这需要服务之间的高效通信。最初,我们正是为此目的开发了一个名为 Smartstack 的本土服务发现系统。然而,随着公司的发展,我们遇到了可扩展性问题¹。为了解决这个问题,我们在 2019 年投资了一个名为 AirMesh 的现代服务网格解决方案,该解决方案基于开源Istio软件构建。目前,我们超过 90% 的生产流量已经迁移到 AirMesh,并计划在 2023 年完成迁移。 症状:传播延迟增加
  在将 Istio 从 1.11 升级到 1.12 之后,我们注意到传播延迟出现了令人费解的增加——从 Istio 控制平面收到更改事件通知到处理更改并将其推送到工作负载之间的时间。这种延迟对我们的服务所有者很重要,因为他们依靠它来做出关键的路由决策。例如,服务器需要有一个比传播延迟更长的正常关闭时间,否则客户端可以向已经关闭的服务器工作负载发送请求并得到 503 错误。 数据收集:传播延迟指标
  我们是这样发现这种情况的:当我们注意到从 1.5 秒(Istio 1.11 中的 p90)增加到 4.5 秒(Istio 1.12 中的 p90)时,我们一直在监控 Istio 指标 pilot_proxy_convergence_time的传播延迟。Pilot_proxy_convergence_time 是 Istio 记录的传播延迟的几个指标之一。完整的指标列表是: pilot_proxy_convergence_time  — 测量从推送请求添加到推送队列到处理并推送到工作负载代理的时间。(请注意,更改事件被转换为推送请求,并在被添加到队列之前通过称为 debounce 的过程进行批处理,我们将在后面详细介绍。) pilot_proxy_queue_time  — 测量推送请求入队和出队之间的时间。 pilot_xds_push_time  — 测量构建和发送 xDS 资源的时间。Istio 利用 Envoy 作为其数据平面。Istio的控制平面Istiod通过xDS API(其中x可以看作一个变量,DS代表发现服务)来配置Envoy。 pilot_xds_send_time  — 测量实际发送 xDS 资源的时间。
  下图显示了这些指标中的每一个如何映射到推送请求的生命周期。
  有助于理解与传播延迟相关的指标的高级图表。
  调查xDS 锁争用
  CPU 分析显示 1.11 和 1.12 之间没有明显变化,但处理推送请求花费的时间更长,表明时间花在了一些等待事件上。这导致了对锁争用问题的怀疑。
  Istio 使用四种类型的 xDS 资源来配置 Envoy: 端点发现服务 (EDS) — 描述如何发现上游集群的成员。 集群发现服务 (CDS) — 描述如何发现路由期间使用的上游集群。 路由发现服务 (RDS) – 描述如何在运行时发现 HTTP 连接管理器过滤器的路由配置。 侦听器发现服务 (LDS) – 描述如何在运行时发现侦听器。
  对指标 pilot_xds_push_time 的分析表明,升级到 1.12 后只有三种类型的推送(EDS、CDS、RDS)有所增加。Istio 变更日志显示在 1.12 中添加了CDS和RDS缓存。
  为了验证这些更改确实是罪魁祸首,我们尝试通过将 PILOT_ENABLE_CDS_CACHE 和 PILOT_ENABLE_RDS_CACHE 设置为"False"来关闭缓存。当我们这样做时, CDS 的 pilot_xds_push_time 恢复到 1.11 级别,但不是 RDS 或 EDS。这改进了 pilot_proxy_convergence_time ,但不足以将其恢复到之前的水平。我们认为还有其他因素影响了结果。
  对 xDS 缓存的进一步调查显示,所有 xDS 计算共享一个缓存。棘手的是 Istio 在底层使用了 LRU 缓存。缓存不仅在write上被锁定,而且在read上也被锁定,因为当您从缓存中读取时,您需要将项目提升到最近使用。由于多个线程试图同时访问同一个锁,这导致了锁争用和缓慢的处理。
  形成的假设是 xDS 缓存锁争用导致 CDS 和 RDS 速度变慢,因为为这两个资源打开了缓存,并且由于共享缓存而影响了 EDS,但没有影响 LDS,因为它没有实现缓存。
  但是为什么关闭CDS和RDS缓存都不能解决问题呢?通过查看构建 RDS 时使用缓存的位置,我们发现未遵守标志 PILOT_ENABLE_RDS_CACHE。我们修复了该错误并在我们的测试网格中进行了性能测试,以使用以下设置验证我们的假设: 控制平面:
  - 1个Istiod pod(内存26G,cpu 10核) 数据平面:
  - 50 个服务和 500 个 pod
  - 我们通过每 10 秒随机重新启动部署并每 5 秒随机更改虚拟服务路由来模拟更改
  结果如下:
  性能测试的结果表²。
  因为我们的 Istiod pod 不是 CPU 密集型的,所以我们决定暂时禁用 CDS 和 RDS 缓存。结果,传播延迟恢复到之前的水平。这是针对此问题的 Istio问题以及 xDS 缓存的潜在未来改进。 去抖动
  这是我们诊断中的一个转折点:在深入研究 Istio 代码库期间,我们意识到 pilot_proxy_convergence_time 实际上并没有完全捕获传播延迟。 我们在生产中观察到,即使我们将优雅关闭时间设置得比pilot_proxy_convergence_time 长,服务器部署期间也会发生 503 错误。该指标不能准确反映我们希望它反映的内容,我们需要重新定义它。让我们重新审视我们的网络图,缩小以包括去抖过程以捕获变化事件的完整生命周期。
  更改事件生命周期的高级图表。
  当更改通知 Istiod 控制器³时,该过程开始。这会触发发送到推送通道的推送。然后,Istiod 通过称为去抖动的过程将这些更改组合到一个组合的推送请求中。接下来,Istiod 计算推送上下文,其中包含生成 xDS 所需的所有信息。然后将推送请求与上下文一起添加到推送队列。问题在于: pilot_proxy_convergence_time 仅测量从组合推送添加到推送队列到代理接收到计算出的 xDS 的时间。
  从 Istiod 日志中,我们发现去抖动时间几乎为 110 秒,即使我们将 PILOT_DEBOUNCE_MAX 设置为 30 秒。通过阅读代码,我们意识到initPushContext步骤正在阻止下一次去抖动,以确保首先处理较旧的更改。
  为了调试和测试更改,我们需要一个测试环境。但是,很难在我们的测试环境中生成相同的负载。幸运的是,debounce 和 init push 上下文不受 Istio 代理数量的影响。我们在生产中设置了一个没有连接代理的开发箱,并运行自定义图像来分类和测试修复。
  我们执行了 CPU 分析并仔细研究了耗时较长的函数:
  Istiod 的 CPU 配置文件。
  服务 DeepCopy 功能花费了大量时间。这是由于使用了copystructure库,使用go reflection做deep copy,性能开销很大。删除库⁴既简单又非常有效,可以将我们的去抖动时间从 110 秒减少到 50 秒。
  DeepCopy 改进后 Istiod 的 CPU 配置文件。
  在 DeepCopy 改进之后,cpu 配置文件的下一个大块是 ConvertToSidecarScope 函数。这个函数花了很长时间来确定每个 Istio 代理导入了哪些虚拟服务。对于每个代理出口主机,Istiod 首先计算所有导出到代理命名空间的虚拟服务,然后通过将代理出口主机名与虚拟服务主机匹配来选择虚拟服务。
  我们所有的虚拟服务都是公开的,因为我们没有指定 exportTo 参数,该参数是该虚拟服务导出到的命名空间列表。如果不配置该参数,则虚拟服务会自动导出到所有命名空间。因此,VirtualServicesForGateway函数每次都创建并复制所有虚拟服务。当我们有许多具有多个出口主机的代理时,这种切片元素的深层复制非常昂贵。
  我们减少了不必要的虚拟服务副本:我们没有传递虚拟服务的副本,而是将 virtualServiceIndex 直接传递到 select 函数中,进一步将去抖时间从 50 秒减少到 30 秒左右。
  我们目前推出的另一项改进是通过设置 exportTo 字段来限制虚拟服务的导出位置,基于哪些客户端可以访问服务。这应该减少大约 10 秒的去抖动时间。
  Istio 社区也在积极致力于改进推送上下文计算。一些想法包括添加多个 worker 来计算 sidecar 范围,仅处理更改的 sidecar 而不是重建整个 sidecar 范围。我们还添加了去抖动时间的指标,以便我们可以将其与代理收敛时间一起监控,以跟踪准确的传播延迟。 结论
  总结我们的诊断,我们了解到: 我们应该同时使用 pilot_debounce_time 和 pilot_proxy_convergence_time 来跟踪传播延迟。 xDS 缓存有助于降低 CPU 使用率,但会因锁争用而影响传播延迟,请调整 PILOT_ENABLE_CDS_CACHE 和 PILOT_ENABLE_RDS_CACHE 以查看最适合您系统的内容。 通过设置exportTo 字段来限制 Istio 清单的可见性。
  如果您对此类工作感兴趣,请查看我们的一些相关角色! 致谢
  感谢 Istio 社区创建了一个伟大的开源项目,并与我们合作使其变得更好。还呼吁整个 AirMesh 团队在 Airbnb 构建、维护和改进服务网格层。感谢 Lauren Mackevich、Mark Giangreco 和 Surashree Kulkarni 编辑这篇文章。
  [1]:查看我们在 Istio 上的演示文稿 Airbnb以了解详细信息。
  [2]:请注意,最后两种情况发生了一些 CPU 节流,因此如果我们要分配更多 CPU,我们预计传播延迟(尤其是 P99)会进一步改善。
  [3]:Istiod 服务控制器监控来自不同来源的注册服务的变化,包括 kubernetes 服务、ServiceEntry 创建的服务等,Istiod 配置控制器监控用于管理这些服务的 Istio 资源的变化。
  [4]: PR1 , PR2
  作者:Ying Zhu
  出处:https://medium.com/airbnb-engineering/improving-istio-propagation-delay-d4da9b5b9f90

在古代当一个快递小哥是什么体验?我在岛屿读书在中国,长途保镖行业的起源很早,但镖局的起源比较晚。保镖行业的兴起与官方驿站有关系。早在唐朝时期,就有遍布全国的官营驿站。当时经常会有一些官吏在全国各地流动,传递文书和做人,不能只想着赢,也要经得起输01。人生本来就很简单人的一生本来就是简单的,即使在之前遇到什么恩怨,也要学会放下,更加不需要一辈子积压在心里,做人一定要及时调整自己,不断学会放空自己,释放自己的压力和消愁,心情无法摆脱的烦恼?你也有吗?烦恼不知从何时起,对啥都提不起兴趣,不想社交,不想露面,甚至都不想上班,不想面对生活的方方面面和社会的尔虞我诈,想把自己封闭起来,静静地按照自己的方式过着自己的生活,甘愿成为社会边情感分享,每日更新如果一段感情没能把你变成更好的人只是让你患得患失喜怒无常那真遗憾你爱错了人在时代和个人的种种不幸中我却看到了生活的种种幸福酸甜苦辣是食物的味道喜怒哀乐是生活的味道降低对他的期望贪心8128GB跌至939,OPPO百元机有双5G高刷长续航6400万三摄千元机的价格被定义得越来越高,已经逐渐接近2000元。而在1000元以内,现如今被称为百元机。这类百元机,因为最常被买来作为老人机,所以越来越不受手机厂商重视,毕竟老人哪懂手机,配沂源凤凰山旅语(四)沂源凤凰山旅语(四)山东昌乐刘福新9月14日沂源凤凰山之旅,到这集就结束了。近二百八十幅图片,的确有点儿累。别的还好说,主要是眼睛疲劳。正文不多说了,可以参考图片注脚。1这是按原路安东尼戴维斯轰3718湖人大胜篮网,杜兰特空砍3197NBA202223赛季常规赛,湖人主场116103大胜篮网。双方开局交替得分后朗尼沃克连中三分,湖人135领先。哈里斯三分回应后朗尼沃克打成21后湖人领先了8分,托马斯连续上篮得分穷人与富人的思维穷人容易轻信别人,外界风传什么往往相信什么,很少思考这种事情发生的真实性和可能性。这种思维使得他们以外界为中心,被各种假象和表象迷惑,自己成了外围。这样自然就失去自我,被外界或别有贫富天注定穷真的是错吗?大多数人从出生就已经注定是穷人了,这里所指的穷是不管你怎么努力你的收入只能够维持温饱。从古至今你觉得靠出卖体力,靠出卖时间能够致富吗?不管出生于任何时代,情商不高,智愿你过得与秋花共舞人生如花开花落,总有花灿鲜光之时,也有花凋失意之刻,花开时别盲目傲视群芳等待凋零,花落时也不低沉自卑躺平待放,只要追光不止,逐梦不畏,行向未来,必有远芳。生活就是四季烟火,赏享春花睡觉半睁眼,整夜噩梦不断!怎么挣扎都醒不过来,这是为什么啊?不知道总是梦多的朋友,都是什么原因,我从小到大都是梦多,睡一夜起来,感觉在梦里忙活了一整夜,就很累,好像就没有睡着了,没有做梦的时候!之前也不知道出于什么原因,要说日有所思夜有所梦
耐用又好用的4款手机,性能续航拍照优秀,用到2027年没问题您在阅读前请点击上面的关注二字,后续会第一时间为您提供更多有价值的相关内容,感谢您的支持。在买手机的时候是选择一步到位还是一年一换好呢?如果您想要一步到位,想要手机能够多使用几年,人兽结合出来的胚胎,到底算兽人,还是新人类文科普小助君有人说,当科技发展到一定程度之后,带给人们的就不再是福利,而是灾难。人类对生态环境的破坏,如今大多数人是有目共睹。频繁爆发的自然灾害以及不断消失的物种,无一不在提示着我你家的样子,藏着孩子的未来家庭是孩子成长的土壤,父母是孩子的耕种者,家庭氛围有多好,父母有多上心,这种子才能结出多饱满甜美的果实。作者番茄妈一位资深班主任朋友曾对我说过这样一段话当班主任这么多年了,我得出一能让无数大V都点赞的文章是多么优秀我们每个人都在活在自己的认知里所以才会有现在的不同的风情,如果我们每个人的保持着相同的认知和观点的话这件事迹将会变得非常太平,可是我们每个人都在活在自己的认知里,所以才会有现在的不弱者合群,强者互抬,智者独行!冯骥才说过平庸的人用热闹填补空虚,优秀的人以独处成就自己。拉开人与人差距的,其实不是智商,也不是情商,而是一个人与世界的相处方式。弱者盲目合群,结果失去自我强者相互搭桥,方能彼此成开门红!中国女大力士一人拿3枚金牌,8位新人出战,依旧称霸亚洲日前,2022赛季亚洲举重锦标赛在巴林揭开战幕。作为世界举重的传统强队,中国举重队虽然派出了一套全新阵容出战,但依然展现出不可撼动的实力。在女子49公斤级A组决赛中,年轻小将王佳丽自我提升的6个好习惯积累经验人生没有捷径可言,想要减少失败的次数,最好的办法就是不断积累经验增长知识。不积跬步,无以至千里不积小流,无以成江海。任何人的强大,都是在积累到一定程度后,由内而外的蜕变。迈要一己之力改变国游武侠格局?逆水寒手游做成这样,是否过于自信作为国内玩家曾经最为追捧的游戏类型,武侠游戏,在近两年竟然越来越有式微之感。曾经成名的IP大多陷入了套路的窠臼无法突破,而市场上偶有一两款新游戏,品质也大多不佳,被后来居上的二次元冉莹颖38岁生日放飞自我,紧搂吴尊不松手,原配却还要尬笑配合自从参加完爸爸去哪儿之后,娱乐圈的很多明星就借助娃娃的名义熟络了起来,他们每逢纪念日都会聚在一起,毕竟几个糊掉的明星,加在一起还是有热度的,在这其中,最喜欢凑热闹的就是冉莹颖和邹市阳山大崀奏响党建主旋律,构建共建共治共享乡村治理新格局仲秋时节,行走在阳山县大崀镇松林村的主干道上,放眼望去,一条崭新的沥青路通向远方,地上看不到随意堆放的垃圾,树荫下看到小孩嬉戏老人乘凉,怡然自得广东省十大最美农村路县道383线大崀俄罗斯造出超强推力卫星发动机可延长卫星寿命减少太空垃圾据俄罗斯消息报网站10月9日报道,俄罗斯科学家研制了一款电动发动机,其推力远超国内外同类产品。该设备可用于安装在最小的卫星立方星(CubeSat)上。得益于它,这些卫星将能够在轨驻