消费者端
消息队列两种模式
1.点对点:一对一,消费者主动拉取数据,消息收到后消息清除
2.发布/订阅模式:一对多,消费者消费数据之后不会消除消息
- 推-->以同样的方式传给消费者,可能导致消费者资源处理不足或消费者资源浪费(不同消费者处理能力不一样)
- 拉取-->消费者要不断轮询队列中是否有消息
基础架构
Zookeeper在Kafka中的作用
Kafka集群中有一个broker会被选举为Controller,负责管理集群broker的上下线,所有topic的分区副本分配和leader选举等工作。Controller的管理工作都是依赖于ZooKeeper的。
消费者分区分配策略
- RoundRobin
- Range
1.轮询策略中,会把消费者订阅的一个或多个主题当成一个整体,适合于订阅相同主题的消费者
2.Range策略,以订阅的主题为主体,平均分给消费者
offset维护
1.0.9版本之后,消费者读取的内容offset信息存在kafka端
2.修改配置文件consumer.properties
exclude.internal.topics=false;
2.读取offset
bin/kafka-console-consumer.sh --topic __consumer_offsets --zookeeper hadoop:2181 --formatter"kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter" --consumer.config config/consumer.properties --from-beginning