一:概念
Kafka是一个分布式的消息队列,相当于我们生活中的快递柜,快递点,快递员将快递放到快递柜中,收件人去取,把快递(消息)的入柜(入队)和处理进行解耦,使得双方以自己合适的时间和频率处理快递,此外快递柜也起着削峰填谷的作用,双十一,一车快递进入一个快递点,收件一时间无法领取掉自己的快递,可以暂存到快递点,收件人有时间在去取。
Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。
其他知识点可查看
博客kafka有趣的介绍:https://www.cnblogs.com/sujing/p/10960832.html
(自己总结kafka 知识架构见百度脑图:http://naotu.baidu.com/file/1533ce4eb64b046a45696ad745490720 和百度云盘-组件知识库-kafka中的word文档)
二:部署kafka相关命令(单机,集群)
使用kafka自带的zookeeper集群启动
(1)下载好kafka的包,并解压到/opt/kafka/目录下
tar zxvf kafka_2.11-2.2.1.tgz -C /opt/kafka
(2)启动自带的zookeeper(2181端口)
cd /opt/kafka/kafka_2.11-2.2.1/
bin/zookeeper-server-start.sh config/zookeeper.properties
(3)启动kafka(9092端口)
bin/kafka-server-start.sh -daemon config/server.properties (-daemon表示守护进程)
lsof -i :9092 (列出9092端口是否在使用)
(4)创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --partitions 2 --replication-factor 3 --topic first
其中:--partitions 2 //创建2个分区
--replications-factor 3 //副本数,leader在副本中
--topic //主题为first
查看topic列表
bin/kafka-topics.sh --list --zookeeper localhost:2181 first
查看topic详情描述
bin/kafka-topics.sh --zookeeper localhost:2181 --describe topic first
(5)创建生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic first
(6) 创建消费者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first --from-beginning (--from-beginning表示从开始topic起点开始消费)
注:旧版本中--bootstrap-server是 --zookeeper (消费者的offset之前的版本存放在zookeeper中,新版本offset存放在broker集群的topic中)
补充:下载和命令详情可参考kafka官网 (http://kafka.apache.org/quickstart)
删除topic
bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic first
停止kafka
bin/kafka-server-stop.sh stop
启动指定配置文件的消费者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first --from-beginning --consumer.config config/consumer.properties