写点什么

领英宣布推出 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:006712

评论

发布
暂无评论

牛客java选择题每日打卡Day4

京与旧铺

6月月更

实力总结四类Bean注入Spring的方式

阿Q说代码

Java 注解 spring源码 bean注入

如何制作登录界面

海瞳Seapupil

NFT双币质押流动性挖矿dapp合约定制

开发微hkkf5566

私藏干货分享:关于企业架构中如何进行平台化

松子(李博源)

企业架构 数据架构 业务架构 大数据平台 平台

关于接口测试自动化的总结与思考

阿里巴巴云原生

阿里云 接口 性能压测 PTS 阿里云云原生

C#/VB.NET 使用插件将HTML转为PDF

在下毛毛雨

C# html .net PDF

Substrate 源码追新导读 4月第2周技术更新: 以太坊地址转换, BEEFY协议等

彭亚伦

rust Substrate 波卡生态

一场分销裂变活动,不止是发发朋友圈这么简单!

CRMEB

等保三级密码复杂度是多少?多久更换一次?

行云管家

堡垒机 等级保护 过等保 等保2.0

熊市慢慢,Bit.Store提供稳定Staking产品助你穿越牛熊

股市老人

DevOps 如何帮助前端提升研发效率?

飞算JavaAI开发助手

TiDB 6.0:让 TSO 更高效丨TiDB Book Rush

PingCAP

TiDB

巧用redis实现点赞功能,它不比mysql香吗?

阿Q说代码

MySQL 数据库 redis 点赞

2022年中国音频市场年度综合分析

易观分析

音频市场

鸿蒙发力!HDD杭州站·线下沙龙邀您共建生态

最新动态

字节跳动埋点数据流建设与治理实践

字节跳动数据平台

字节跳动 数据治理 数据流 埋点治理 数据研发

等保2.0密码要求是什么?法律依据有哪些?

行云管家

网络安全 等保 等保2.0

开源二三事|ShardingSphere 与 Database Mesh 之间不得不说的那些事

SphereEx

数据库 SphereEx Apache ShardingSphere Database Mesh Pisanix

阅读别人的代码,是一种怎样的体验

阿Q说代码

程序人生 阅读代码 阅读建议 阅读感受

海量数据!秒级分析!Flink+Doris构建实时数仓方案

领创集团Advance Intelligence Group

数据 Doris flink sql 平台

易周金融 | Q1手机银行活跃用户规模6.5亿;理财子公司布局新兴领域

易观分析

金融 手机银行

Pisa-Proxy 之 SQL 解析实践

SphereEx

数据库 SQL语句 SphereEx

基于 Nebula Graph 构建百亿关系知识图谱实践

NebulaGraph

知识图谱 Nebula Graph

Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)

德育处主任

Vue composition-api 组件通信 6月月更 Vue透传

OpenSSF 安全计划:SBOM 将驱动软件供应链安全

SEAL安全

软件物料清单

浅谈软件研发的复杂性与效能提升之道

思码逸研发效能

研发效能

PostgreSQL 15新版本特性解读(含直播问答、PPT资料汇总)

墨天轮

数据库 postgresql

直播app运营模式有哪几种,我们该选择什么样的模式?

开源直播系统源码

软件开发 直播源码 带货直播

好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

沉默王二

Java macos GitHub

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