写点什么

领英宣布推出 Northguard 和 Xinfra:Kafka 之外的日志存储和 Pub/Sub 扩展

  • 2025-06-27
    北京
  • 本文字数:1688 字

    阅读完需:约 6 分钟

大小:813.31K时长:04:37
领英宣布推出Northguard和Xinfra:Kafka之外的日志存储和Pub/Sub扩展

领英(LinkedIn)今天宣布了一个可扩展的日志存储系统Northguard,它取代了Kafka,以及一个虚拟化的Pub/Sub层Xinfra。Northguard 提供了分片数据和元数据、日志条带化、强一致性和自平衡集群,规模比 Kafka 更大,而 Xinfra 则实现了在 Kafka 和 Northguard 之间的无缝迁移和统一访问。

 

根据 LinkedIn 的工程师表示,Kafka在 LinkedIn 的规模下(每天 32T 记录、17PB 数据、400K 主题、150 个集群)变得越来越难以管理。Northguard 的架构由共享数据和元数据、去中心化协调和最小全局状态组成,消除了 Kafka 的单控制器和基于分区的限制。

 

Northguard 的数据模型将日志组织成记录、段、范围和主题。记录(键、值、头)被写入段——不可变的复制单元。段形成范围,代表连续的键空间切片,支持动态分割和合并,以实现扩展和排序。另一方面,主题是覆盖整个键空间的范围集合,具有灵活的存储策略,可用于复制和保留。

 


包含三个段的 Northguard 范围(来源

 

这种细粒度结构实现了平衡负载、高可用性和无缝扩展。当生产者产生新的段时,代理自然会自我平衡,从而消除了在添加代理或代理失败时进行昂贵的重新平衡或数据移动的需求。

 


新段被添加到范围中,并被分配给可能的新代理(来源

 

与传统的索引分区相比,范围提供了更灵活的扩展机制。范围分割只中断客户端对受影响范围(而不是整个主题)的写入,同时保持总排序保证。这种差异减少了中断,并避免了昂贵的“停止世界”同步。此外,跨主题对齐的范围通过减少对洗牌的需要来简化流处理连接。

 

Northguard 的元数据模型使用分片的、基于Raft复制状态机(DS-RSM),分布在虚拟节点上。每个虚拟节点管理主题、范围和段的元数据——跟踪状态变化(例如,拆分、合并、密封)、副本集和保留策略。通过使用一致性哈希分片元数据和去中心化协调,Northguard 避免了 Kafka 的控制器瓶颈,并支持数百万副本的强一致性和高可用性。

 

LinkedIn 为性能和持久性优化了 Northguard 的协议。元数据操作(如创建、删除、查询)使用路由到虚拟节点领导者的单一请求/响应调用。生产、消费和复制流是带有管道和窗口的会话化流协议,以最大化吞吐量和最小化延迟。

 

生产者写入活跃的段领导者,只有在所有副本上fsync后才接收确认,确保强持久性。消费者使用带有客户端控制流的类似流模型,支持高效的高吞吐量读取。活动段复制和密封段复制利用相同的高效流架构,从而实现 Northguard 的高性能和自我修复能力。

 

在 LinkedIn 的规模上,从 Kafka 迁移到 Northguard 需要为数千个关键应用程序实现无缝、零停机转换。为了支持这一点,LinkedIn 构建了 Xinfra,一个虚拟化的 Pub/Sub 层,抽象了物理集群。Xinfra 通过双写机制使主题能够跨越 Kafka 和 Northguard,允许在不更改客户端的情况下进行实时迁移。

 


一个示例用例,其中消费者订阅了同一虚拟集群下的三个主题,每个主题位于不同的集群中(来源

 

Northguard 中的分段存储是可插拔的,默认的“fps-store”实现针对持久性和延迟进行了优化。它使用提前写日志(write-ahead log, WAL),每个段创建一个文件,应用 Direct I/O 来绕过 OS 缓冲,并在RocksDB中维护一个稀疏索引。在几毫秒内刷新和跨副本同步成批记录,即使在故障情况下也能确保持久性。这种设计避免了缓存不一致,支持从旧段中高效读取,并允许随着集群的增长而预测性能。

 

为了确保大规模的可靠性,Northguard 在确定性模拟下进行了严格的测试。整个集群和客户端在单线程的受控环境中运行,在这种环境中,故障(如代理关闭、网络分区、磁盘错误和滚动升级)会被注入和重放。这种方法允许 LinkedIn 每天模拟多年的活动,及早捕捉边缘情况,并在复杂的故障场景下持续验证正确性。

 

LinkedIn 的工程师表示,他们“已经成功地将数千个主题从 Kafka 迁移到 Northguard,每天处理数万亿条记录”,并且 LinkedIn 超过 90%的应用程序已经在运行 Xinfra 客户端了。

 

InfoQ 联系了 LinkedIn,希望将 Northguard 和 Xinfra 开源。LinkedIn 表示,他们“专注于在我们内部系统中完成 Northguard 和 Xinfra 的实施,并且随着我们继续构建、学习和迭代这些工具,我们将探索开源它们的可能性。”

 

原文链接:

https://www.infoq.com/news/2025/06/linkedin-northguard-xinfra/

2025-06-27 13:001

评论

发布
暂无评论

Web入门:CSS下拉图片

小院里的霍大侠

JavaScript Web 初学者 入门者

架构实战营 3-4 架构设计后期随堂练习

西山薄凉

「架构实战营」

2022年浪过的那些城市

SAP虾客

杭州 2022年 无锡 东莞 SAP项目

运维进阶训练营 -W09H

b1a2e1u1u

运维

SDK更新不了问题解决

芯动大师

android hosts SDK 教程

【web 开发基础】PHP 中的预定义数组详解之一 (47)

迷彩

数组 全局变量 PHP基础 预定义数组

FFA 2022 主会场 Keynote:Flink Towards Streaming Data Warehouse

Apache Flink

大数据 flink 实时计算

Android Studio开发Android APP

芯动大师

Android Studio 开发环境 新建工程

OpenTelemetry系列 (四)| 如何使用Java Agent来实现无侵入的调用链

骑牛上青山

Java javaagent 调用链 OpenTelemetry 微服务调用链

基于Go的缓存实现

俞凡

架构

架构训练营模块三作业

张建闯

架构实战营

极客时间运维训练营第九周作业

好吃不贵

WEB23

Lenyi

网络安全 CTF ctfshow 爆破

HTTP通用首部字段

穿过生命散发芬芳

HTTP 12月月更

架构误区系列10:不合理的分层

agnostic

软件分层

安卓、iOS、小游戏三端同发?介绍给你一个新方式 - 普洱WebGL

僵尸浩

typescript 小游戏 Unity3D

【IntelliJ IDEA】idea 2018版本中没有SVN按钮或者图标的解决方法

No8g攻城狮

svn IDEA git 学习

模块三-外包学生管理系统的架构文档

悟空

学生管理系统架构

Flink 1.16:Hive SQL 如何平迁到 Flink SQL

Apache Flink

大数据 flink 实时计算

架构实战营 3-5 消息队列备选架构随堂练习

西山薄凉

「架构实战营」

设计模式之美——对扩展开放、对修改关闭

GalaxyCreater

设计模式

SAP MM SPED输出报错-No authorization for delivery from shipping point US##-之对策

SAP虾客

SAP MM SPED VL31N 公司间STO

WEB21

Lenyi

网络安全 CTF ctfshow 爆破

Flink 在米哈游的应用实践

Apache Flink

大数据 flink 实时计算

学生管理系统

KING

Web入门开发【二】

小院里的霍大侠

编程开发 初学者 入门实战 Web入门

为什么更推荐使用组合而非继承关系?

JAVA旭阳

Java 架构

设计模式之美——里式替换(LSP)

GalaxyCreater

设计模式

数据可视化图表系列解析——饼图

Data 探险实验室

数据分析 可视化 数据可视化 可视化数据 可视化工具

2022-12-24:给定一个字符串s,其中都是英文小写字母, 如果s中的子串含有的每种字符都是偶数个, 那么这样的子串就是达标子串,子串要求是连续串。 返回s中达标子串的最大长度。 1 <= s的长

福大大架构师每日一题

Linux 算法 Shell 福大大

SRE运维解密-应对过载

董哥的黑板报

微服务 SRE 限流 SRE实践

领英宣布推出Northguard和Xinfra:Kafka之外的日志存储和Pub/Sub扩展_软件工程_Eran Stiller_InfoQ精选文章