
6
|
第
1
章
1.2
连续事件处理的目标
能够以非常低的延迟处理数据,这并不是流处理的唯一优势。人们希望流
处理不仅做到低延迟和高吞吐,还可以处理中断。优秀的流处理技术应该
能使系统在崩溃之后重新启动,并且产出准确的结果;换句话说,优秀的
流处理技术可以容错,而且能保证
exactly-once
2
。
与此同时,获得这种程度的容错性所采用的技术还需要在没有数据错误的
情况下不产生太大的开销。这种技术需要能够基于事件发生的时间(而不
是随意地设置处理间隔)来保证按照正确的顺序跟踪事件。对于开发人员
而言,不论是写代码还是修正错误,系统都要容易操作和维护。同样重要
的是,系统生成的结果需要与事件实际发生的顺序一致,比如能够处理乱
序事件流(一个很不幸但无法避免的事实),以及能够准确地替换流数据
(在审计或者调试时很有用)。
1.3
流处理技术的演变
分开处理连续的实时数据和有限批次的数据,可以使系统构建工作变得更
加简单,但是这种做法将管理两套系统的复杂性留给了系统用户:应用程
序的开发团队和
DevOps
团队需要自己使用并管理这两套系统。
为了处理这种情况,有些用户开发出了自己的流处理系统。在开源世界里,
Apache Storm
项目(以下简称
Storm
)是流处理先锋。
Storm
最早由
Nathan
Marz
和创业公司
BackType
(后来被
Twitter
收购)的一个团队开发,后来
才被
Apache
软件基金会接纳。
Storm
提供了低延迟的流处理,但是它为实
时性付出了一些代价:很难实现高吞吐,并且其正确性没能达到通常所需 ...