Kafka入门

1. 特点

  • 同时为发布和订阅提供高吞吐量,即使是非常廉价的商用机也能做到支持每秒100K条数据传输。
  • 消息持久化。将消息持久化到磁盘,因此可用于批量消费。
  • 分布式
  • 消费消息采用Pull模式。消息被处理状态是在Comsumer端维护的,而不是由服务器端维护,即Consumer自己保存offset,Broker无状态
    2.基本概念
  • Broker:Kafka集群中的一台或多台服务器。
  • Topic:消息类别。一个Topic可以在多个分区里面。比如微博上明星基本信息全都放在一个Topic里面。用户只需要指定Topic就可以生产或消费数据,而不必关心数据在哪台机器或者分区。
  • Partition(分区):物理上的概念,可以理解为一个个的文件夹,里面存放Topic的数据。可以存放不同的Topic的数据。
  • Producer:消息生产者
  • Consumer:消息消费者
  • ConsumerGroup:消费者组。Topic的消息会被“复制”到所有订阅它的消费者组里面,但是每个消费者组只会有一个消费者竞争到。所以要实现广播,只要让每个消费者都单独的在一个消费者组里,单播即让所有消费者都在同一个消费者组。
    3.运用场景
  • 用户行为数据采集:主要是收集用户前端的活动,比如用户在哪个页面停留了多长时间,那么可以说明这个页面的受欢迎程度。具体做法是在前端页面采集所需要关注的数据,传到后端,上传到kafka。在这个案例中,kafka的高吞吐量就体现出了优势,因为用户的活动量特别的大。
  • 日志收集:收集日志到Kafka中(传统做法是输出到本地磁盘,排查问题比较困难),然后导入Elasticsearch、HDFS、Storm等具体日志数据消费者中,用于实时搜索分析、离线统计、数据备份、大数据分析等等。
  • 流量削峰:以某个秒杀场景为例。主要思想是后端具体的业务逻辑,比如生成订单、短信通知、减库存等比较耗时的业务请求放到kafka消息队列中,前台直接根据简单的库存是否足够来返回是否能进入秒杀订单界面,或者直接提示秒杀结束。具体的业务通过 kafka消费端来实现。
    Kafka入门
    4.分区
    Kafka的基本存储单元是分区(Partition)。由于不同的Partition可位于不同的机器上,因此可以实现机器间的并行处理。由于一个Partition对应一个文件夹,多个Partition也可以位于同一台服务器上,这样就可以在同一台服务器上使用不同的Partition对应不同的磁盘,实现磁盘间的并行处理。所以一般通过增加Partition的数量来提高系统的并行吞吐量。(注意这里的并行与多线程中的内存并行的区别)