QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

LinkedIn 开源 Iris 消息处理器,速度比旧系统快 86.6 倍

  • 2023-09-19
    北京
  • 本文字数:2822 字

    阅读完需:约 9 分钟

大小:1.50M时长:08:44
LinkedIn开源Iris消息处理器,速度比旧系统快86.6倍

LinkedIn开源“Iris消息处理器”,该服务被用于增强其现有 Iris 事件升级管理系统(Escalation Management System)的性能和可靠性。iris-message-processor 的处理速度有了显著提升,相比之前的处理器,在平均负载下速度快 4.6 倍,在高负载下速度快 86.6 倍。


“iris-message-processor”是之前的 iris-sender 的分布式替代方案,支持更高的并发处理和直接将消息发送给目标供应商。它可以进行水平伸缩,并且不使用数据库作为消息队列,因而减少了对数据库的依赖。


iris-message-processor 可以处理大量的事件,经测试,它可以在不到 10 秒的时间内处理 6000 个事件,与之前的系统需要 30 分钟相比,进步巨大。即使在同时减少 50%节点的情况下,新处理器也保持了高效的处理速度,可以在不到 30 秒的时间内完成集群再均衡,并在不到 3 秒的时间内处理升级事件,即使是在高于平均负载的情况下。


为了提升性能,LinkedIn 将 Iris 升级事件拆分为桶,动态分配给 Iris 消息处理器集群中的不同节点,改进了并发处理和直接发送消息的能力。Iris 进行了重新设计,以应对未来“10 倍”流量增长,避免在未来因需求增加时才匆忙进行改造。



_新 Iris 系统的架构(来源)_


新服务是用Go开发的。它不使用数据库作为消息队列,从而减轻了现有数据库系统的压力。新系统可以使用最终一致性数据库来存储结果消息进行审计跟踪,从而增强了可伸缩性。


LinkedIn 已经使用 iris-message-processor 大约一年时间都没有发生中断,并始终保持每毫秒处理 1000 条消息的 SLO。作为 iris-sender 的替代方案,iris-message-processor 不仅保留了现有的 Iris API,同时还提供了实质性的性能改进。


LinekedIn 的工程师采用了各种措施来确保上线期间的稳定性,包括保持向后兼容性和进行增量式验证和测试。


LinekedIn 已将Iris -message-processor开源,代码可在IrisOncall代码库中找到。这个工具可以在 LinkedIn 的环境之外运行,可以完全取代其他现成的事件管理系统。


InfoQ 采访了 LinkedIn 高级软件工程师Diego Cepeda,聊了聊关于 iris-message-processor 的话题,包括它的实现和开源。


InfoQ:引入 iris-message-processor 后,资源使用(CPU、内存、网络带宽)发生了什么变化,这对运营成本有怎样的影响?


Diego Cepeda:实际上,资源利用率的变化可以忽略不计。LinkedIn 的关键监控基础设施具有非常高的容错冗余水平,因为我们认为可靠的监控是可靠运营的基础。


我们的 Iris 实例分布在不同的数据中心,每个数据中心都有足够的容量来处理整个站点的警报需求。不过,因为 Iris 足够高效,我们在每个数据中心只使用了 3 个实例,每个实例只配备了 8 个核心和 32GB 内存,这些足够了。


每个数据中心有 3 个 MySQL 主机为 Iris 和 iris-message-processor 提供支持。值得注意的是,即使对于 LinkedIn 这样的规模,这样的配置也有点过剩,因为每个 iris-message-processor 实例平均使用不到 5%的 CPU 和不到 1%的内存。


InfoQ:你是否可以提供一些投资回报率(ROI)指标来证明 iris-message-processor 与其他现成解决方案在成本效益方面的差异?


Cepeda:我们没有与其他商业系统进行过比较或分析。不过,有大约 6000 名 Iris 内部用户积极待命,我们可以据此推测,使用现成的解决方案将是一笔相当大的投入。


我们确实有时间维度的比较,例如持续维护 Iris 所需的工作量,我们估计大部分时间都花在帮助我们的开发人员熟悉系统和回答问题上。


此外,我们没有专门为 Iris 投入人员资源,它只是监控基础设施团队负责处理的许多个服务中的一个。


Iris 已经为我们的整体投入带来了回报。对于选择使用 Iris 的组织来说,ROI 可能会更大,因为它们只会产生硬件和维护成本,并且可以从 Iris 的开源中受益。


InfoQ:你选择 Go 作为 iris-message-processor 的开发语言,这个决定背后的原因是什么?这个选择对系统的性能和可伸缩性有怎样的影响?


Cepeda:我们选择 Go 是因为它能够快速开发 Bug 少、高度可伸缩的并发应用程序。Go 的轻量级协程非常适合用来完成这项任务,因为管理并发任务变得很容易,避免了传统线程的复杂性。使用通道在程序之间进行通信增强了安全性和同步能力。


此外,Go 的标准库提供了并发、网络、分布式系统和测试用的包,减少了对第三方库的依赖,简化了开发。这些特性使得我们能够编写 Bug 更少的代码,支持高效的伸缩,并快速交付健壮的并发应用程序,如 iris-message-processor。


在过去的几年,我们一直在用 Go 语言逐步重写我们的大部分关键监控服务,并在开发速度、性能和可操作性方面获得显著的好处。一个典型的例子就是 iris-message-processor,它在高负载下的性能比之前的版本要好几个数量级。


InfoQ:你提到 iris-message-processor 已经在 LinkedIn 运行了大约一年时间都没有出现过中断,并且始终保持很好的 SLO。你能分享系统在高压环境下测试的例子吗?它的表现如何?


Cepeda:值得庆幸的是,LinkedIn 的系统都是相对可靠的,所以我们很少对系统进行真正的压力测试。当然,对于庞大而复杂的系统,出现故障总是不可避免的。我们曾经遇到过一个 DNS 问题导致我们的一个生产数据中心中的大部分服务(包括 iris-message-processor)无法访问时。


这是我们所见过的最接近高压的场景,数百个服务同时出现数千个警报,Iris 集群有三分之一的节点无法启动。


值得庆幸的是,我们在设计 iris-message-processor 时就考虑到了这种场景。


正如我们所计划的那样,集群可以丢弃不可达的节点,进行再均衡,并在不到 60 秒的时间内处理升级事件。以前的系统可能需要几十分钟才能完全解决这个问题,这会导致处理信息不及时,浪费了工程师发现问题和解决问题的宝贵时间。


InfoQ:随着 iris-message-processor 的开源,你希望社区可以带来怎样的特新和改进?你计划如何管理开源项目,确保它们与目标和质量标准对齐?


Cepeda:iris-message-processor 的核心思想是可伸缩性和灵活性。我们意识到这个世界上不存在两个完全相同的环境,在设计和实现中我们注意到了这一点。例如,我们目前使用 Twilio 发送语音和短消息,但其他组织可能使用不同的供应商。


我们没有对他们进行强制锁定,而是为消息供应商提供了一个可插拔的接口,任何想要集成到其他系统的组织都可以非常快速地编写出一个新的插件,并在对代码库进行最少变更的情况下启动并运行。


这种模式也体现在我们对存储系统的选择上。iris-message-processor 使用 MySQL 作为数据存储,当然也可以很容易地使用其他数据存储。所有与 MySQL 相关的代码都进行了抽象,这样就可以为不同的数据存储编写新的集成实现,而不需要修改代码的其他部分。这种设计使得拥有不同技术栈的组织更容易采用新系统。


对于已经开源的 Iris 和 Oncall 来说,项目的管理无疑是一个挑战。在这方面,我们采用基于测试驱动的开发和测试。为了确保与质量标准对齐,我们希望新的贡献代码是可测试的,除此之外,代码在被接受之前会在本地开发环境进行验证。


我们期待外部贡献者帮助我们把它变成一个更好、更容易使用的平台。


声明:本文由 InfoQ 翻译,未经许可禁止转载。


查看英文原文https://www.infoq.com/news/2023/09/linkedin-iris-message-processor/

2023-09-19 14:362687

评论

发布
暂无评论
发现更多内容

年度重磅更新!“AI+可视化拖拽”实现个性化页面极速开发!组件设计器即将上线!

优秀

AI 网站开发 组件化开发

基于volcano实现节点真实负载感知调度

华为云开发者联盟

云原生 后端 华为云 Volcano 华为云开发者联盟

矢量插图设计绘制Canvas X Draw v7.0.4激活版

Rose

Canvas X Draw 插图绘制软件 苹果软件资源下载

更简单高效地Git客户端 Tower for Mac注册版 兼容m1/m2

Rose

Git客户端 Tower破解版 Tower mac版

Boxy SVG v4.23.2免激活版 mac矢量图编辑器 支持m1/m2

Rose

苹果软件下载 矢量图形编辑软件 Boxy SVG破解版 Boxy SVG mac下载

如何实现一个百万亿规模的时序数据库,百度智能云 BTS 架构解析和实践分享

百度Geek说

架构 时序数据库 百度智能云

政务云相关名词解释看这里!

行云管家

云计算 云管平台 云管理 政务云

软件测试的发展现状与未来趋势

测试人

软件测试

如何实现一个高扩展、可视化低代码前端框架

互联网工科生

低代码 前端框架 JNPF

2024年带大家一起深入了解堡垒机功能以及作用

行云管家

网络安全 数据安全 云安全 堡垒机

人工智能:测试开发的新宠儿

测吧(北京)科技有限公司

测试

Walrus 实用教程|Walrus + Gitlab,打通CI/CD 自动化交付!

SEAL安全

开源 gitlab CI/CD Walrus

测试开发高薪私教线下周末班试听精彩内容回顾

霍格沃兹测试开发学社

软件测试|人工智能:测试开发的新宠儿

霍格沃兹测试开发学社

一文搞懂设计模式—责任链模式

Java随想录

Java 设计模式

苹果电脑 电子邮件客户端 Mimestream for Mac

Rose

Mac软件 Mimestream Mac破解版 Mimestream 下载 邮件客户端 Gmail邮箱

LED屏模组偏色怎么办?

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

超越常规!探索多态在程序设计中的奇妙应用与巧妙技巧!

测吧(北京)科技有限公司

测试

一次因PageHelper引起的多线程复用问题的排查和解决 | 京东物流技术团队

京东科技开发者

室内设计软件Room Arranger 中文直装版 v9.8.2.644

Rose

室内设计 Room Arranger破解版 Room Arranger下载

火山引擎ByteHouse:分析型数据库如何设计列式存储

字节跳动数据平台

数据库

GraphicConverter 12 :简单好用的图片浏览编辑器

Rose

GraphicConverter 12中文 GraphicConverter破解 Mac图片编辑器

如何在网页上下载高质量视频和音频文件?推荐使用PullTube for Mac在线视频下载器

Rose

Mac视频下载器 PullTube使用教程 PullTube mac

测试开发高薪私教线下周末班试听精彩内容回顾

测吧(北京)科技有限公司

测试

Amadine for Mac矢量绘图软件 v1.5.5激活版 兼容m1/m2

Rose

矢量图设计 Amadine破解版 Amadine Mac

Wireshark的捕获过滤器

小齐写代码

超越常规!探索多态在程序设计中的奇妙应用与巧妙技巧!

测试人

软件测试

软件测试|探索多态在程序设计中的奇妙应用与巧妙技巧!

霍格沃兹测试开发学社

2024年企业选择堡垒机指南

行云管家

网络安全 数据安全 云安全 堡垒机 企业数据安全

小程序定制开发:解析定制化移动应用的未来

天津汇柏科技有限公司

小程序 小程序开发 小程序开发,软件开发

LinkedIn开源Iris消息处理器,速度比旧系统快86.6倍_实时计算_Eran Stiller_InfoQ精选文章