kafka(1)-概念介绍
kafka中文官网有更较为详细的介绍。
broker
1个broker就是1个kafka节点,当你用启动命令启动1个kafka时,这个kafka实例就是一个broker。
topic
topic是主题的意思,和ActiveMQ、RabbitMQ等其他消息队列类似,表示一类消息的集合,在技术上可以理解为一个队列(当只有1个partition时就是1个队列,有多个partition就有多个队列),在业务场景中指定一个关于order(订单)的消息类别,那么这些消息的topic就是order,存储在一个名为“order”的队列中(说明一下,假设只有1个partition)。
partition
当1个topic中的消息数量太多了,为了可靠可用、处理效率等方面的考虑,就可以将1个topic拆分成多个partition,topic和partition可以理解为部队中排和班的关系,开始的时候,这个排的人数很少,编一个班就可以了,后来人数多了,另拆出一个班来。
在创建topic时就要设置partition数量,虽然创建topic完成之后可以再新增partition,但会很麻烦,会触发分区再均衡事件,对kafka性能有一定影响,如果想删除分区那就更麻烦了,后续再说。
producer
producer表示生产者,生产者可以将数据发布到所选择的topic(主题)中。生产者负责将消息分配到topic的哪一个 partition(分区)中。
consumer
consumer表示消费者,消费者从topic的partition中获取消费,至于如何处理这条消息,应用程序开发者完全自己决定。
消费者组
有时候,生产者发布消息的速率远大于消费者消费消息的速率,这样就会造成大量消息堆积在partition中,对于那些想及时处理消息的应用程序来说就不符合要求,这时可以用一个消费者组包含多个消费者,共同消费1个topic的partition。但是请注意:同一个消费者组的消费者不能在同一时间消费1个partition。
如果所有的消费者实例在同一消费组中,消息记录会负载平衡到每一个消费者实例;如果所有的消费者实例在不同的消费组中,每条消息记录会广播到所有的消费者进程。