1.2 用例
以下是一些Kafka 常见的用例。关于功能方面的一些概念,可以看这篇博客:http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying。
消息
Kafka 可以很好的替代传统的消息代理。消息代理的使用有很多原因。(将数据发布解耦,缓存未处理消息等等)。相比于大多数消息系统,Kafka 有更大的吞吐量,内置分区,备份容错,这些特点使它可以很好处理大量消息请求。
在应用体验中,我们会经常遇到相对不高的吞吐量需求,但需要很低的端到端延迟并且需要依赖Kafka持久化的情况。
在这个领域中,Kafka相当于传统的消息系统,比如ActiveMQ 或 RabbitMQ。
网站活动跟踪
Kafka 最早是提供一套实时发布订阅被用来重绘用户活动跟踪线路。网站的活动(页面展示,搜索,用户其他可能的活动)根据活动类型被转发给对应主题。为包括实时处理、实时监控和为离线处理和报表装载Hadoop或离线数据仓库的用例提供有效的支持。
活动跟踪是每个用户页面的活动信息聚集合成的。
评审
Kafka经常被用于运行监控数据。这涉及从分布式应用到生产数据的汇总统计过程中的运行数据的支持。
日志聚集
Kafka经常被用来作为日志聚集的替代解决方案。日志聚集通常收集服务器上的日志文件放到一个集中的位置(一种文件系统比如HDFS)处理。 Kafka提取日志文件中的明细并返回清洗过的日志概要或流形式的事件数据信息。这样就可以提高处理速度同时对多数据源和分布式消费的支持更容易。相比集中式日志系统,如Scribe 或 Flume,Kafka 提供了相对更好的性能,较低的端到端延迟以及通过多备份保证了更健壮的持久化。
流处理
很多用户喜欢分阶段处理数据从原始数据主题中被消费经过汇总,加工或其他转化方式进一步消费到新主题的过程。例如一个文章推荐的处理流程会从RSS订阅抓取文章内容并发布给一个文章主题;然后经过有助于格式化或去重的处理后加入到一个文章清理的主题;最后阶段推送给匹配的用户。通过这些可以组成一个来至于各个主题的实时数据流程图。 这类转换框架中比较常见的有Storm 和 Samza。
事件持久化
事件持久化是一种将状态变化按时间顺序序列化记录存储的应用设计方式。Kafka 对巨大数据存储的支持可以支撑起建立在事件持久化方式上的优秀应用后端。
提交日志
Kafka 可以作为分布式系统的外部日志提交服务。日志可以用来进行多节点间数据备份和重新同步以恢复失败节点的数据。这种场景下 Kafka 支持日志压缩。在这种场景下Kafka 和Apache BookKeeper项目类似。