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

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



