分布式消息服务Kafka主要适用于以下几种场景:
日志收集
- 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦。
- 支持实时在线分析系统和类似于 Hadoop 的离线分析系统。
Kafka本身的性能是非常高效的,同时Kafka的特性决定它非常适合作为"日志收集中心",这是因为Kafka在采集日志的时候业务是无感知的,其能够兼容自己的上游,能够直接地通过配置加密消息。当日志数据发送到Kafka集群里面,其实对于业务而言是完全无侵入的。同时其在下游又能够直接地对接Hadoop/ODPS等离线仓库存储和Strom/Spark等实现实时在线分析。在这样的情况之下,使用Kafka,只需要用户去关注整个流程里面的业务逻辑,而无需做更多的开发就能够实现统计、分析以及报表。
流计算处理
- 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦。
- 通过支持流计算引擎,可对接开源 Storm/Samza/Spark 流计算引擎。
Kafka能够做到流计算处理,比如股市走向分析、气象数据测控、网站用户行为分析等领域,由于在这些领域中数据产生快、实时性强、数据量大,所以很难统一采集并入库存储后再做处理,这便导致传统的数据处理架构不能满足需求。而Kafka Stream以及Storm/Samza/Spark等流计算引擎的出现,可以根据业务需求对数据进行计算分析,最终把结果保存或者分发给需要的组件。
多路转发
- 一对多消费模型:发布/订阅”模型,支持同份数据集能同时被消费多次。
- 支持实时和批处理:支持本地数据持久化和 Page Cache,在无性能损耗的情况下能同时传送消息到实时和批处理的消费者。
对于不同业务维度,需要不同计算方式,比如对于对账系统而言,可能需要实时的流处理方式;对于统计分析而言,可能使用批计算方式。Kafka能够实现多路转发,上游生产一份数据,多个下游节点都能够获取这份数据并做出相应的处理,Kafka可完成数据多路转发功能。