介绍 Northguard 和 Xinfra:LinkedIn 上可扩展的日志存储

主要观点: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 的发展。
阅读 16
0 条评论