流式计算常见的开源实现
当前比较主流的流式数据线(Data Pipeline)共分为四个阶段。
1)数据采集:该阶段主要负责从不同数据源上实时采集数据,典型的数据源包括移动客户端、网站后端等,通常根据后端数据缓存模块不同,选用不同的实现方案,可选的包括 Flume 以及自定义 Kafka Producer。
2)数据缓冲:为了平衡数据采集速率与数据处理速率的不对等,通常数据采集阶段和处理阶段之间加入一个数据缓冲阶段,通过由消息队列担任该角色,比如 Kafka。
3)实时分析:流式地从数据缓冲区获取数据,并快速完成数据处理,将结果写到后端的存储系统中。根据系统对延迟和吞吐率的要求不同,可选用不同的流式计算引擎,比如 Storm 或 Spark Streaming。
4)结果存储:将计算产生的结果存储到外存储系统中,根据应用场景不同,可选择不同的存储系统,比如大量可实时查询的系统,可存储到 HBase 中,小量但需可高并发查询的系统,可存入 Redis 中。
根据流式计算引擎的数据组织特点,可将其分为两类:基于行(row based)和基于微批处理(micro-batch based)。基于行的流式实时处理系统以行为单位处理数据,其主要优点是单条数据的处理延迟低,但系统吞吐率一般也较低,其典型代表是 Apache Storm;基于微批处理的流式实时处理系统则将流式处理转化为批处理,即以批为单位组织数据,它通常以时间为单位将流式数据切割成连续的批数据,并通过批处理的方式处理每批数据,这类系统的优点是吞吐率高,而缺点也很明显:单条数据处理延迟较高,其典型代表是 Spark Streaming。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/cad6a19f651e2f55392b45f84】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论