主要观点:LinkedIn 的数千服务以数据为核心,15 年前开发 Kafka 用于发布者和订阅者的集中式管道,解决了分布式系统的常见问题,但随着业务增长,Kafka 在扩展和运营方面面临困难,因此推出 Northguard 以解决这些问题,还引入了 Xinfra 作为虚拟化的 Pub/Sub 层来支持 Northguard 和 Kafka 并实现迁移。
关键信息:
- Kafka 曾是基础设施骨干,现在 Northguard 注重可扩展性和可操作性,如数据分片、日志条带化等。
- Northguard 的数据模型包括记录、段、范围、主题等,通过存储策略和属性进行管理。
- 日志条带化避免资源倾斜问题,范围比索引分区更适合扩展吞吐量和流处理。
- Northguard 的元数据模型通过 vnode、协调器等进行管理,采用动态分片复制状态机。
- Northguard 使用 SWIM 作为组成员协议,协议包括元数据协议和流式协议。
- Northguard 的段存储可插拔,采用预写日志等方式。
- 通过确定性模拟进行测试,Northguard 在多个方面优于 Kafka。
- 从 Kafka 迁移到 Northguard 困难,Xinfra 实现了虚拟化 Pub/Sub 层,支持主题迁移等操作。
重要细节: - Kafka 支持多种服务,订阅者需处理全部数据,有 bug 时可重新处理。
- Northguard 集群由代理组成,数据模型各元素及其关系详细阐述。
- 日志条带化通过将日志分成小块平衡 IO 负载。
- 范围在扩展吞吐量和流处理方面的优势及与索引分区的对比。
- Northguard 元数据管理的各个组件及作用。
- 集群状态和成员管理使用 SWIM 协议及相关信息。
- 测试中模拟各种故障以捕捉 bug。
- Kafka 和 Northguard 在多个方面的性能对比。
- Xinfra 实现主题跨集群迁移及相关操作细节,如利用双写、阶段迁移等。
- Xinfra 已被广泛采用,未来将重点推动 Northguard 和 Xinfra 的发展。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。