基于 Samza 的实时计算技术解析
1. Samza 简介
Samza 由 LinkedIn 开发,并于 2013 年 9 月捐赠给 Apache 软件基金会。多年来,LinkedIn 将大量数据概念化为流,因此需要一个对开发者友好的框架来处理这些无处不在的数据流。在数据处理领域,大部分关注集中在极端情况,如 RPC 工作负载通常是低延迟的同步系统,或周期性以小时计的批处理系统。而 Samza 针对的是这两者之间的领域,其多数作业的响应时间从毫秒到分钟不等,并且假设数据以理论上无限的连续消息流形式到达。
2. Samza 工作原理
在开源世界中,有许多流处理系统,如 Storm,还有很多商业工具,如复杂事件处理(CEP)系统,都针对连续消息流进行处理。这些系统有相似之处,但也存在重大差异。对于 Samza 而言,最显著的差异在于其对消息传递的假设。许多系统努力降低每条消息的延迟,而 Samza 则假设其流是持久且有弹性的,写入流的任何消息在首次到达后的一段时间内都可以重读,这为容错提供了强大的能力。此外,Samza 还基于此模型允许每个任务持有有弹性的本地状态。
Samza 主要用 Scala 实现,但其公共 API 用 Java 编写,任何 JVM 语言都可用于实现 Samza 应用程序。
3. Samza 高层架构
Samza 认为世界由三个主要层或组件构成:流层、执行层和处理层。
- 流层 :提供对数据流的访问,用于消费和发布。
- 执行层 :提供运行 Samza 应用程序的方式,分配 CPU 和内存等资源,并
超级会员免费看
订阅专栏 解锁全文
42

被折叠的 条评论
为什么被折叠?



