The Log: What every software engineer should know about real-time data′s unifying abstraction(二)
Part 3 日志与实时流处理
到目前为止,我只讲述了系统之间拷贝数据的理想机制。但是在存储系统之间搬运字节不是所要讲述内容的全部。最终会发现,日志是流的另一种说法,且日志是流处理的核心。
但是稍等,流处理到底是什么呢?
如果你是上世纪90年代晚期或者21世纪初数据库文化或者成功了一半的数据基础设施产品的爱好者,那么你可能会把流处理与建创 SQL 引擎或者箱子和箭头(boxes and arrows)接口用于事件驱动的处理联系起来。
如果你关注大量出现的开源数据库系统,你就可能把流处理和一些这领域的系统关联起来,比如Storm、Akka、S4 和 Samza。但是大部分人会把这些系统看为异步消息处理系统,与支持群集的RPC(远程过程调用)层没什么差别(而事实上该领域的一些系统确实是如此)。
这些观点都有一些局限性。流处理既与 SQL 无关,也不局限于实时流处理。并没有什么不可克服的原因导致我们不能做到:通过多种不同的语言来表达计算(express the computation),处理一天前或一个月之前的数据流。
我把流处理视为更广泛的概念:持续数据流处理的基础设施。我认为计算模型可以像 MapReduce 或者分布式处理框架一样通用,但是达到低时延的能力。
...
数据流图
流处理最有趣的特点是它与流处理系统的内部无关,但是与之密切相关的是,流处理是如何扩展之前在数据集成讨论中提到的认识:输入数据(data feed)是什么。我们主要讨论了原始数据输入(primarily feeds)或说是原始数据(primary data)的日志——各种系统执行所产生的事件和数据行。但是流处理允许我们囊括由其它输入计算出的输入。这些派生的输入在消费者看来,和用于生成它们的原始数据的输入看起来没什么差别。这些派生的输入可以按任意的复杂方式封装组合。
让我们再深入一步。我们的目标是:流处理作业可以读取任意的日志并把日志写入到日志或者其它的系统中。他们用于输入输出的日志把这些处理关联到一组处理过程中。事实上,使用这种样式的集中日志,你可以把组织全部的数据抓取、转化和工作流看成是一系列的日志和写入它们的处理过程。
流处理器根本不需要理想的框架:它可能是读写日志的任何处理器或者处理器集合,而为了便于管理处理所用的代码,也可以提供一些额外的基础设施和支持。
...
Part 4 系统构建
...
结束语
...
共有 0 条评论