探索高效数据流转:LinkedIn 的 Brooklin 项目
项目简介
Brooklin 是一个分布式系统,专注于在各种异构源和目标系统之间高可靠性和高吞吐量地流传输大规模实时数据。设计为多租户架构,Brooklin 可以同时支持数百个跨不同系统的数据管道,并且易于扩展以支持新的源和目的地。
项目技术分析
-
可扩展性:Brooklin 提供灵活的 API,可以扩展以支持各种源和目标系统,不受特定类型的源或目标系统的限制。源和目标系统可以自由混合和匹配,无需保持一致。
-
可扩展性:支持创建任意数量并发独立处理的数据流,使单一流错误隔离,保证整体性能稳定。通过分区数据流在整个核心实现和 API 中,Brooklin 能够轻松部署到机器集群(横向扩展)以支持所需的数据流。
-
易操作和管理:提供用于管理数据流的 REST 终点,包括丰富的操作(如暂停和恢复),以及用于数据流状态的诊断 REST 终点,便于按需查询。
-
Kafka 集群镜像经验:尽管不限于任何特定系统,但 Brooklin 在与 Kafka 交互时表现出强大的高可靠性规模化能力,适合大规模数据传输。
-
支持变化数据捕获:Brooklin 支持从数据库(如 RDBMS 和 KV 存储)捕获并传播更改数据,同时还支持启动前的数据快照流传输。
应用场景
Kafka 集群镜像
- 多租户:一个 Brooklin 集群可以服务于多个 Kafka 集群的数据镜像需求。
- 故障隔离:单个不良分区不会影响整个 Kafka 主题,其他健康分区的镜像将继续进行。
- 主题白名单:通过正则表达式模式对主题名筛选,选择要镜像的主题。
- 细粒度控制:使用数据流管理服务(DMS)的 REST API 可以暂停和恢复 Kafka 主题的单独分区。
变更数据捕获
- 捕获来自各种数据存储的变更事件,如 RDBMS 和 KV 存储。
- 数据库初始化:在捕获变更事件之前,先流传输现有数据的快照。
流处理桥接
- 作为基础流传输基础设施,将数据推送到流处理系统,如 Apache Samza、Apache Storm、Apache Spark 或 Apache Flink。
项目特点
- 灵活的 API 扩展,适应各种源和目标系统。
- 支持并发独立处理的任意数量数据流。
- 完善的 REST 管理接口,方便操作和监控。
- 已验证的在 Kafka 集群中的大规模应用。
- 支持变更数据捕获和数据快照流。
尝试使用 Brooklin
查看 教程,学习如何在本地环境中运行 Brooklin 并体验示例场景。
文档资源
查阅 Brooklin Wiki 页面 获取更多详细信息。
社区参与
加入 Gitter 讨论室 与我们交流,或在 GitHub issues 上提交问题、建议和反馈。
贡献指南
许可协议
Brooklin 使用 BSD 2-Clause 许可证 开放源代码。