kafka 生产者和消费者概念
趁着年轻多出来走走,不然你不会知道,呆在家里有多爽。
生产者 producer
在kafka 系统中的生产者产生的消息包含那几个部分
- topic:往哪个topic生产消息。
- partition:往哪个partition生产消息。
- key:根据该key将消息分区到不同partition。
- message:消息。
消费者 consumer
kafka通过consumer group将两种模式(队列和发布订阅)统一处理:每个consumer将自己标记consumer group名称,之后系统会将consumer group按名称分组,将消息复制并分发给所有分组,每个分组只有一个consumer能消费这条消息。
当所有consumer的consumer group相同时,系统变成队列模式;
当每个consumer的consumer group都不相同时,系统变成发布订阅;
一般的消息系统存在2种消费模型
push:优势在于消息实时性高。劣势在于没有考虑consumer消费能力和饱和情况,容易导致producer压垮consumer。
pull:优势在可以控制消费速度和消费数量,保证consumer不会出现饱和。劣势在于当没有数据,会出现空轮询,消耗cpu。
kafka 的consumer 采用的是pull 模型