kafka的集群启动


在启动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:2181192.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数据丢失

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM