Kafka入门教程 (一) 基本概念

本文是系列教程kafka入门教程的第一篇,介绍了kafka的基础概念:topic、partition、broker、consumer、consumer group和producer。

  1. Topic
    一个Topic代表了一类资源,一种事件。比如用户上传的数据可以是一个topic,系统产生的事件也可以是一个topic

  2. Broker
    一个broker代表一个kafka实例,通常建议一台物理机配置一个kafka实例,因为配置多个磁盘的IO限制也注定了性能不会提升太多

  3. Partition
    一个Topic可以创建多个Partition,一个partition就是一个存储kafka数据的文件(称为log),每个partition内部,消息是顺序排列的。

    由于Partition是顺序写磁盘,不需要关心锁的问题,保证了Kafka的高吞吐量;每个partition内的数据是有序的。多个partition可以解决磁盘IO的性能限制,同时,也可以通过指定数据发送给kafka时的key,key被用来决定数据放到哪个partition,这样就消费数据时,某个partition的数据就是按照某个规则有序的了。

    Partition和broker没有必然联系(可以参考Partition分配到broker的策略),但是一个partition只能位于一个broker上。

  4. Consumer
    消费者,消费Kafka中存储的数据,一个consumer可以消费多个partition(同topic/不同topic)

  5. Consumer Group
    消费者组。一个消费者组可以有多个消费者,当使用高级消费者时,只需要指定订阅(subscribe)的topic;使用低级消费时,则需要指定consumer分配(assign)的topic和partitio,,指定哪个partition就消费哪个,没有限制。
    一个patition只能被同一个消费者组的一个订阅的consumer(高级)消费,但是可以被不同消费者组的多个consumer消费(订阅/分配均可),或者被同一个组的一个订阅的consumer和任意个分配的consumer(低级)消费;这个限制是由client端实现的,详情参见本系列第二篇文章。

  6. Offset
    offset记录了某个consumer group在一个partition中消费数据的位置。由partition和group唯一确定。

  7. Producer
    生产者,生产数据到Kafka

示意图如下:

topic a:
p1 被groupMconsumerA 消费
p2 被groupMconsumerB 消费
实现了一个topic被两个同group独立的consumer消费,提升消费速度。

topicb:
p1 被groupMconsumerB和groupNconsumerC同时消费
p2 被groupMconsumerB和groupNconsumerC同时消费
实现了多播的效果,所有到topicb的数据,consumerB和C同时接收到

kafka结构示意图

【参考链接】

  1. Kafka背景及架构介绍
  2. KafkaPartition与Broker的映射关系
Song wechat
扫一扫,关注微信公众号,订阅我的博客
扫码领红包,支持走一波