一、kakfka的基本概念
1.1下面我们会从 个角度分析Kafka 的几个基本概念,并尝试解决下面 个问题
Kafka
主题与分区内部是如 存储的
,它
有什么特点?
与传统的消息系统相比
Kafka
的消
费模型有什么优点?
Kafka
如何
实现分布式的数据存储与数据读取?
1.2分区模型
1.3消费模型
消息
由生产者发布到
fk
集群后,会被消费者消费。
消息的两种消费模型:
推送模型(
push)
和拉取模型(
pull
)
生产者发布消息到分区的两种方式:
1.通过随机方式将请求负载到不同的消息代理节点(分区partition)
2.使用分区语义函数将相同键的所有消息发布到同一分区,对于分区语义,Kafka暴露了一个接口,允许用户指定消息的键如何参与分区。比如,我们可以将用户编号作为消息的键,因为对相同用户编号散列后的值是罔定的,所以对应的分区也是固定的。
消费组实例
查看消费组下消费者
偏移量信息:
其中
PARTITION
表示分区编号
CURRENT-OFFSET
表示当前消费进度偏移量,LOG-END-OFFSET日志结束总偏移量,
Lag
表示落后的数据量
CONSUMER-ID
表示分区归哪个消费者所有test-01_hadoop01-1605790352267-5997c31c
[root@hadoop01 kafka_2.11-1.0.0]# bin/kafka-consumer-groups.sh --zookeeper hadoop01:2181 --describe --group test-01
Note: This will only show information about consumers that use ZooKeeper (not those using the Java consumer API).
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID
first01 0 29 32 3 -
first 0 8 8 0 -
first02 0 3 3 0 test-01_hadoop01-1605790352267-5997c31c
first02 1 3 3 0 test-01_hadoop01-1605790352267-5997c31c
查看所有消费组名称:
[root@hadoop01 kafka_2.11-1.0.0]# bin/kafka-consumer-groups.sh --zookeeper hadoop01:2181 --list
Note: This will only show information about consumers that use ZooKeeper (not those using the Java consumer API).
console-consumer-11288
test-01
perf-consumer-66096
console-consumer-34521
test-consumer-group
发布-订阅模式
。同一条消息会被多个消费组消费,每个消费组只有一个消费者,实现广播
队列模式
。只有一个消费组、多个消费者
一条消息只被消费组 一个消费者消费
,实现
单播
Kafka源码包
二、Kafka生产者--向Kafka写入数据
2.1发送消息的3种方式:
2.1.1.发送消息
2.2.2.同步发送消息
2.2.3.异步发送消息
2.2 生产者配置