2、Kafka学习分享|应用场景-V2.0

Kafka学习分享|应用场景

消息队列

Kafka作为一个更加传统的消息代理者的替代者,运行得非常好。消息代理用户给种各样的理由(从数据生产者中分离进程,去缓存未被加工的消息,等等)。与大多数的消息系统相比,Kafka拥有更好的吞吐量,内置的分区,冗余和故障容错能力,这些使它成为了大规模消息处理应用程序的很好的解决方案。

在我们的经验中,消息使用通常是相当地低吞吐量,但是可能需要较低的端到端时延,并且经常依赖于Kafka提供的强大的持久性保障。

在这个领域,Kafka比得上传统的消息系统,如ActiveMQ or RabbitMQ

网站活动追踪

对于Kafka来说经典的使用案例是能够作为一个实时发布-订阅feeds重建一个用户活动追踪管道。这意味着站点活动(页面浏览,搜索或者其他用户活动)以一种活动类型一个topic的方式被发布到主要的Topics。这些feeds可以用于一系列使用实例的订阅,这些实例包括实时处理,实时监控,以及加载到Hadoop或者用来离线处理和报告的离线数据仓库系统。

随着为每个用户页面浏览生成许多活动消息,活动追踪的量通常都很大。 

度量

Kafka经常被用于操作监控数据。这包含了从分布式应用系统中聚合统计资料来产生集中的运行数据feeds。

日志收集

许多人使用Kafka作为一个日志聚合解决方案的替代品。日志聚合典型地收集物理服务器的日志文件,并且把他们放到一个集中的地方(一个文件服务器或者HDFS)用来进行处理。Kafka从文件中抽象出细节信息,并且对日志或者事件数据给出一个清洗的抽象,抽象为一连串的消息。这允许更低时延处理和对多个数据源的更简单支撑和分布式的数据消费。与日志中央系统如Scribe or Flume相比,Kafka提供相等地高性能、强持久性保障(由于复制),和更低的端到端时延。

流处理

许多Kafka的使用者在包含多阶段的处理通道处理数据,在这里未加工的输入数据被Kafka topics消费,然后被聚合,被丰富,或者被转发到新的topics用于更多消费或者后续的加工。例如,一个用于推荐新的文章处理管道可能从RSS feeds中抓取文章的内容并且发布到它们到一个文章的topic;更进一步的处理可能使标准化或删除重复的内容,并且发布清洗后的文章内容到一个新的topic;一个最终的处理阶段可能尝试推荐这个内容给用户。这样的处理管道创造基于个人topics的实时数据流的图形。从0.10.0.0开始,一个轻量级并且功能强大的流处理图书馆叫做Kafka Streams,按照上述描述处理这样的数据流在Apache Kafka成为了可行的。除Kafka Streams之外,可供选择的开源流处理工具包括Apache Storm 和Apache Samza

事件溯源

事件溯源是一种应用程序设计的类型,这里状态变化被记录为一个按时间顺序排列的消息序列。Kafka对于大量存储日志数据的支撑使它成为基于这种类型构建的应用程序的一个极好的后端。

日志持久化

Kafka可以作为一个分布式系统的外部提交日志。该日志有助于在节点之间复制数据,并充当故障节点恢复数据的重新同步机制。Kafka日志压缩特性帮助支撑这种使用。在这种使用中,Kafka类似于 Apache BookKeeper工程。

posted on 2017-06-21 16:24  Alice-feng  阅读(356)  评论(0编辑  收藏  举报

导航