《企业级云原生白皮书项目实战》——第四章 云原生中间件——4.1 消息队列RocketMQ&&Kafka——4.1.6 消息队列Kafka版最佳实践(上) https://developer.aliyun.com/article/1229110?groupCode=supportservice
4.1.6.3 流计算处理
在很多领域,如股市走向分析、气象数据测控、网站用户行为分析等场景下,由于数据产生快、实时性强且量大,很难统一采集这些数据并将其入库存储后再做处理,这便导致传统的数据处理架构不能满足需求。与传统架构不同,消息队列Kafka版以及Storm、Samza、Spark等流计算引擎的出现,就是为了更好地解决这类数据在处理过程中遇到的问题,流计算模型能实现在数据流动的过程中对数据进行实时地捕捉和处理,并根据业务需求进行计算分析,最终把结果保存或者分发给需要的组件。使用消息队列Kafka在业务解耦的基础上增加了海量的消息堆积能力,使得数据的采集与消费能力可以不一致,极大的增加了系统的稳定性。
图:流计算处理示意图
4.1.6.4 数据中转枢纽
近10多年来,诸如KV存储(HBase)、搜索(Elasticsearch)、流式处理(Storm、Spark、Samza)、时序数据库(OpenTSDB)等专用系统应运而生。这些系统是为单一的目标而产生的,因其简单性使得在商业硬件上构建分布式系统变得更加容易且性价比更高。普遍场景下同一份数据集可能需要被注入到多个专用系统内。例如,当应用日志用于离线日志分析时,搜索单个日志记录同样不可或缺,而构建各自独立的工作流来采集每种类型的数据再导入到各自的专用系统显然不切实际,这个时候利用消息队列Kafka版作为数据中转枢纽将成为一个不错的解决方案,同一份数据可以被导入到不同专用系统中。根据需要注入数据的系统建立消费者组,通过多个消费者组订阅一个topic的方式来实现将一份数据注入到不同的消费者系统。对于数据的生产端而言则无需为每个系统独立采集数据,只需要将一份数据导入到对应的topic中即可。
图:数据中转枢纽示意图