消息队列的两种模式
点对点模式
消费者主动拉取数据,消息收到后清除消息
发布/订阅模式
可以有多个topic主题(浏览、点赞、收藏、评论等)
消费者消费数据之后,不删除数据
每个消费者相互独立,都可以消费到数据
Kafka基础架构
Producer:生产者,用来对接外部传入的数据
Topic:主题,存储数据
Consumer:消费者,用来消费Kafka的数据
zookeeper:记录哪些服务器上线,还会记录每个分区谁是leader,Kafka2.8.0以后也可以配置不采用zk
为方便扩展,并提高吞量,一个topic分为多个partition
配合分区的设计,提出消费者组的概念,组内每个消费者并行消费
为提高可用性,为每个partition增加若干副本,类似NameNode HA,这里的副本分为leader和follower,生产和消费只针对leader,当leader挂掉,follower有条件成为新的leader
Kafka启动
先启动zookeeper
zkServer.sh start
启动kafka
kafka-server-start.sh -daemon /usr/local/soft/kafka/config/server.properties
Kafka启动停止脚本
#!/bin/bash
case $1 in
"start")
for i in master slave1 slave2
do
echo "--- 启动 $i kafka ---"
ssh $i "/usr/local/soft/kafka/bin/kafka-server-start.sh -daemon /usr/local/soft/kafka/config/server.properties"
done
;;
"stop")
for i in master slave1 slave2
do
echo "--- 停止 $i kafka ---"
ssh $i "/usr/local/soft/kafka/bin/kafka-server-stop.sh"
done
;;
esac
启动Kafka
关闭Kafka
Kafka停止需要一点时间,并没有立马停止
注意:由于Kafka存储信息在Zookeeper中,要等Kafka完全关闭后再停止ZooKeeper,否则需要kill停止Kafka