【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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:362398

评论

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

在数字时代,如何选择企业的知识管理软件

Baklib

20个既简单又实用的JavaScript小技巧

千锋IT教育

AOSWAP去中心化交易所系统开发功能介绍

开发微hkkf5566

堡垒机有录像吗?好用吗?有什么作用?

行云管家

网络安全 企业 数据安全 堡垒机 录像

UI自动化助力业务效率提升

转转技术团队

UI自动化测试

笔记 | DevOps推动科技管理敏捷转型(文末附PPT)

嘉为蓝鲸

DevOps 运维 敏捷 IT 精益

iptables与firewalld防火墙是怎么样工作的呢?

阿柠xn

防火墙 Linux Kenel 运维‘ 9月月更

「龙蜥开发者说」征稿啦!

OpenAnolis小助手

开源 征文 获奖 龙蜥开发者说 龙蜥技术

购买小间距LED显示屏前需要了解什么?

Dylan

LED显示屏 led显示屏厂家

使用FeatureAbility模块启动其他Ability

白晓明

OpenHarmony应用开发 FeatureAbility

SpringCloud 注册中心(Nacos)快速入门

nacos SpringCould 9月月更

高性能对象池实现

C++后台开发

后端开发 高性能服务器 内存池 对象池 C++开发

Apache Kyuubi 在小米大数据平台的应用实践

网易数帆

Java hive Apache Spark Thrift kerberos

转:工业软件上云很难吗?可以微创呀!

小江

工业软件云化

为什么我要迁移SpringBoot到函数计算

Serverless Devs

传统单节点网站的Serverless上云

Serverless Devs

干货|为什么说开源基金会的选择很关键?(下)

Orillusion

开源 WebGL 元宇宙 webgpu web3d

搭建自己的以图搜图系统 (一):10 行代码搞定以图搜图

Zilliz

Python 机器学习 深度学习 相似度分析 以图搜图

主流定时任务解决方案全横评

Serverless Devs

spring Linux

MASA Framework 获取配置信息的方法

MASA技术团队

.net MASA Framewrok MASA

万物皆可集成系列:低代码如何不成为数据孤岛

葡萄城技术团队

低代码 数据孤岛 集成

盘点适合中小企业的文档管理工具

Baklib

聆心智能入选OPPO“微笑提案”TOP10,让有温度的AI技术守护数亿人心理健康

硬科技星球

2022世界人工智能大会•腾讯“智变未来”论坛:聚焦产业升级,数字赋能未来

科技热闻

浅谈 SAP ABAP 系统里的 ALV 输出方式实现

Jerry Wang

前端开发 SAP abap 9月月更 ALV

中移链DDC-SDK技术对接全流程(一)

BSN研习社

C#/VB.NET 设置Word文档段落缩进

在下毛毛雨

C# .net word文档 段落缩进

基于函数计算自定义运行时快速部署一个 springboot 项目

Serverless Devs

中国移动NZONE 50 Pro 5G手机正式开售

Geek_2d6073

数据可视化系列教程|六大组件基础知识

云智慧AIOps社区

大前端 低代码 开源项目 数据可视化 可视化大屏

优秀的产品手册有助于留住你的客户

Baklib

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