一、消息队列
1、应用场景
1⃣️、解耦
2⃣️、可恢复性
3⃣️、缓冲
4⃣️、灵活性 & 峰值处理问题
5⃣️、异步通信等
2、消费模式
1⃣️、点对点
2⃣️、发布订阅
二、基础架构
kafka cluster 中有多个broker,一个topic可以有多个partition,每个partition可以有多个副本,副本数不能大于broker数,否则创建时会报错。一个消费者组里面有多个消费者,多个消费者组相当于发布订阅模式,一个消费者组相当于点对点。
三、安装部署
1、下载
https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.12-2.3.0.tgz
2、安装
需要先安装zookeeper集群,kafka-a,kafka-b,kafka-c,上传解压。
修改conf/server.properties文件:
#broker的全局唯一编号,不能重复
broker.id=0
#删除topic功能使用
delete.topic.enable=true
#kafka运行日志存放的路径
log.dirs=/usr/data/kafka
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#segment文件大小,超过生成一个新的文件
log.segment.bytes=1073741824
#zookeeper集群地址
zookeeper.connect=zookeeper-a:2181,zookeeper-b:2181,zookeeper-c:2181
3、启动
先启动zookeeper,在启动kafka。
/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kakfa/conf/server.properties
四、kafka命令行操作
1、topic列表
/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server kafka-a:9092 --list
/usr/local/kafka/bin/kafka-topics.sh --zookeeper zookeeper-a:2181 --list
2、创建topic
/usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server kafka-a:9092
--topic topic --partitions 3 --replication-factor 3
--partitions 分区,--replication-factor 副本数
3、删除
/usr/local/kafka/bin/kafka-topics.sh --delete --bootstrap-server kafka-a:9092 --topic demo
需要设置server.properties中delete.topic.enable=true 否则只是标记删除
4、生产者
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list kafka-a:9092 --topic topic
5、消费者
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server kafka-a:9092 --topic topic --from-beginning
--from-beginning 表示重头开始消费
6、查看某个topic详情
/usr/local/kafka/bin/kafka-topics.sh --describe --bootstrap-server kafka-a:9092 --topic topic