Kafka是什么级别的存在?不用多说
Kafka在现代数据架构中的地位,近乎“空气和水”——你可能不会天天强调它,可一旦停了,整个系统立刻就会窒息。而它的诞生地,正是 LinkedIn。
然而,真正顶级的工程能力,往往不是创造一个传奇系统,而是有勇气亲手替换掉它。
所以,当 LinkedIn 最新的工程博客宣布,正在用一个名为 Northguard 的全新系统逐步替代 Kafka 的核心职责时,很多工程师的第一反应并非震惊,而是困惑:Kafka 不是你们的“亲儿子”吗?一个已经服务全球无数超大规模系统的王者,究竟遇到了什么规模的挑战,才会被推到设计的极限?
这里不讨论“Kafka会不会死”这类情绪化话题。我们只聚焦于工程事实:拆解 LinkedIn 为什么必须这么做,以及他们究竟做对了什么。
回到起点:Kafka 原本就是为 LinkedIn 而生
时间拨回到2010年。
当时的 LinkedIn 面临什么局面?用户规模大约9000万,核心痛点在于日志、事件和用户行为数据无法实时流转。当时的技术栈依赖传统消息队列和数据库,完全无法招架这样的压力。于是,团队做出了一个非常“工程师式”的决定:自己动手,打造一套高吞吐、低延迟且能横向扩展的日志系统。
Kafka 就这样诞生了。
后来的故事众所周知:Kafka 进入 Apache 基金会,成为流式数据领域的事实标准,被广泛应用于金融、电商、广告、风控、IoT 等几乎所有关键领域。但问题在于,Kafka 长大了,LinkedIn 也长大了,而且这个增长速度实在太快。
规模断层:当“互联网级”变成“行星级”
到了2026年,LinkedIn 的内部数据规模已经完全脱离了“常规互联网公司”的范畴:用户规模突破12亿,每日处理的记录数超过32万亿条,Kafka 集群数量超过150个,Topic 数量达到40万级。
在这样的体量下,Kafka 并非“不好用”,而是开始暴露出其设计之初的边界。请注意,这不是 Bug,也不是工程失误,而是架构的代价在极端规模下开始显性化。
Kafka 在超极限场景下暴露的三大核心瓶颈
元数据集中化:控制器成了系统“心脏病点”
Kafka 的控制平面高度依赖单一的 Controller 节点,负责处理 Topic 创建、Partition 分配、Leader 选举和 Rebalance 协调。在小规模时,这完全没问题。
但在 LinkedIn 的规模下,这相当于让一个经理同时审批40万个项目、管理150个部门,还要实时处理高频变更。结果只有一个:控制器成为全系统放大级的瓶颈。
Rebalance = Stop-The-World
在 Kafka 的架构里,无论是新增 Broker、扩容磁盘,还是调整副本策略,都极有可能触发大规模的分区重平衡(Rebalance)。
工程上的体验是什么?好比为了给仓库增加一个货架,整个仓库的货物都得重新搬运一遍。在高吞吐、强服务等级协议(SLA)的场景下,这种全局性的“停机搬家”是不可接受的运维风险。
热分区问题:资源利用率持续失衡
Kafka 的 Partition 模型在现实世界中,很容易演化成一种失衡状态:少数几个 Partition 被流量打爆成为热点,而大量其他 Partition 却长期处于空闲。随之而来的是磁盘、IO 和网络资源无法均衡利用。对于那些在凌晨三点被告警叫醒的工程师来说,这种场景再熟悉不过了。
不是修 Kafka,而是重写范式:Northguard 登场
面对这些根植于架构的根本性问题,LinkedIn 做出了一个既激进又理性的选择:不是继续在原有模型上打补丁,而是承认,是时候换一个模型了。
于是,Northguard 应运而生。它并非“Kafka Plus”式的增强版,而是从底层假设就完全不同。
Northguard 的三项关键架构创新
Log Striping:拆掉“大分区”的原罪
Kafka 的基本数据单位是 Partition(分区),而 Northguard 选择了一个更细粒度的模型:将数据日志切分为固定大小(约1GB)的最小段(Segment)。
这个改变非常关键。数据因此变得天然可迁移,负载能够自动均衡,不再需要人工干预热点问题。你可以这样理解:它把数据存储从“一个巨大的、笨重的硬盘”,变成了“一堆可以随意搬运和组合的 SSD 模块”。
去中心化元数据:Raft + 分片状态机
Northguard 彻底抛弃了 Kafka 的单点 Controller 设计。它将元数据按分片(Shard)拆分,每个分片由一个 Raft 共识算法管理的小型状态机负责。这样一来,整个控制平面本身也是分布式的。
最终效果用一句话概括:系统不再存在一个可能导致“脑死亡”的单一故障点。
Xinfra:真正可落地的渐进式迁移层
这或许是最被低估、但却是最重要的一步。LinkedIn 并没有要求所有业务系统“立刻、全部”切换到新系统,而是引入了一个名为 Xinfra 的抽象层。
Xinfra 对上提供统一的发布/订阅 API,对下则同时支持 Kafka 和 Northguard 作为后端。对于业务方而言,迁移是完全无感的。正是这个设计,才让每天32万亿条记录的巨系统能够平稳迁移成为可能。
Kafka vs Northguard:这是替代吗?
一句话总结:这不是一场技术路线之争,而是“极端规模下的必然技术分化”。
Kafka 是为世界上99%的公司而生的通用解决方案,而 Northguard 则是为 LinkedIn 这种体量和复杂度的“特殊物种”定制的。这个区别,就好比 Kafka 是一辆可靠的重型卡车,足以应对绝大多数运输任务;而 Northguard 是一辆为 F1 赛道量身定制的赛车。你显然不需要开着赛车去买菜。
工程师最关心的三个现实问题
Northguard 能用吗?
目前还不能。Northguard 是 LinkedIn 的内部系统,尚未开源。
还要学 Kafka 吗?
当然要学,而且必须学。Kafka 至今仍是行业无可争议的事实标准。
这种迁移普通公司能做吗?
几乎不可能。光是构建和运营 Xinfra 这样的抽象迁移层,本身就是一个超大型工程组织才能完成的壮举。
结论
真正的工程成熟,在于坦然承认即使是成功的方案也有其生命周期。LinkedIn 用 Northguard 并非否定 Kafka,恰恰相反——这正是 Kafka 成功到极致之后必然产生的结果。
这件事告诉我们三点:第一,架构没有永恒的正确,只有与规模的适配;第二,世界级的系统,最终很可能会被最了解它的“自己人”超越;第三,能亲手替换掉自己代表作的团队,才是真正顶级的工程团队。
至于 Kafka?大可放心,它不会消失。只是 LinkedIn 已经走到了一个大多数人永远无需、也永远不会到达的规模前沿。
