在啟動kafka之前要先啟動zookeeper
每台的broker.id 不同
listeners=PLAINTEXT://192.168.1.136:9092
log.dirs=/var/msb/kafka-logs
zookeeper.connect=192.168.1.136:2181,192.168.1.137:2181,192.168.1.138:2181,192.168.1.139:2181/kafka
不要再zookeeper根路徑創建不然文件太亂
配置kafka的環境變量
vi /etc/profile
最后添加
export KAFKA_HOME=/usr/local/kafka_2.11-2.2.0
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin
source /etc/profile
cd $KAFKA_HOME cd /config kafka-server-start.sh ./server.properties
如果出錯看下/var/msb/kafka 之前的數據是否需要刪除

在zkCli.sh命令中我們可以窺探kafka中的一些元數據
controller
brokers
ids
topics
seqid
在node02上創建topic
創建topic kafka-topics.sh --zookeeper node02:2181,node03:2181/kafka --create --topic oooo --partitions 2 --replication-factor 2
查看top 列表
kafka-topics.sh --zookeeper node02:2181,node03:2181/kafka --list
查看top詳細描述信息
kafka-topics.sh --zookeeper node02:2181,node03:2181/kafka --describe --topic oooo
在node03上創建消費者
kafka-console-consumer.sh --bootstrap-server node02:9092,node03:9092 --topic oooo --group msb
在node04上創建生產者 可以只寫一個消費者在list里
kafka-console-producer.sh --broker-list node03:9092 --topic oooo
再在node03上創建一個消費者 kafka-console-consumer.sh --bootstrap-server node02:9092,node03:9092 --topic oooo --group msb
假如上述代碼 --group msb 不寫 則消息進入默認分組 也就是這兩個分組會同時收到topic的消息,
但是把他們規定到一個組中的時候,是輪詢消費
當消費者多於分區 時 不會將消息分發給多出來的那個消費者
查看當前有哪些分組 kafka-consumer-groups.sh --bootstrap-server node02:9092 --list
查看組里的詳細信息 kafka-consumer-groups.sh --bootstrap-server node02:9092 --describe --group msb
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID oooo 1 10 10 0 consumer-1-c2d085fd-939d-43ac-8e4a-1581571043dd /192.168.1.138 consumer-1 oooo 0 11 11 0 consumer-1-b0cbdb77-fc24-46cc-ac06-af16363babab /192.168.1.138
CURRENT-OFFSET 消費的進度
LOG-END-OFFSET 消費的程度
消息有順序性
帶k v 相同的key 去到一個分區里,
broker或保證producer發送消息的順序
一個分區可能會有不同的key 且不同的key是交叉的 相同的key在一個分區里沒有排列在一起
但是是有順序的






怎么使用多線程解決重復消費和數據丟失的問題
假如 A1 提交失敗了 B1提交成功了 offset更新A1 還是B1
從A1的offset開始更新 B1重復消費
提交B1的offset下次處理是A2 A1數據丟失




