首页 > 技术文章 > kafka基本知识

xiaoazheng 2021-07-24 20:00 原文

Kafka
1).kafka是分布式消息系统,生产者消费者模式,数据默认保存7天。
2).概念:
producter:
消息的生产者,自己决定往哪个partition中生产数据,i).轮循 ii).hash

consumer:
消息消费者,自己在zookeeper中维护消费者偏移量,每个消费者都有自己的消费者组,不同的消费者组消费同一个topic互不
影响。同一个消费者组内消费同一个topic,这个topic中的数据只能被消费一次。

broker:
组成kafka集群的节点,之间没有主从关系,通过zookeeper协调。一个broker可以管理多个partitioin,负责消息的读写,
存储。

topic:
一类消息/消息队列,topic是由partition组成的,有多少个?创建的时候可以指定。topic中的一个partition只能被同一个消费者组
中的一个消费者同时消费。

partition:
存储数据的文件,partition中有消息的offset,每个partition都由一个broker管理(Leader),每个partition都有副本,
有几个?创建topic的时候可以指定。

zookeeper:
存储原数据,topic,broker,partition,offset

3).集群搭建:
a).上传kafka_2.10-0.8.2.2.tgz包到三个不同节点上,解压。
b).配置../ kafka_2.10-0.8.2.2/config/server.properties文件
broker.id:Integer值 从0开始
log.dirs:真实存储数据位置
zookeeper.connect:zookeeper集群
c).启动zookeeper集群,在每个节点上启动kafka:
bin/kafka-server-start.sh config/server.properties

4).命令:
创建topic:
./kafka-topics.sh --zookeeper node3:2181,node4:2181,node5:2181 --create --topic topic2017 --partitions 3 --replication-factor 3

用一台节点控制台来当kafka的生产者:
./kafka-console-producer.sh --topic topic2017 --broker-list node1:9092,node2:9092,node3:9092

用另一台节点控制台来当kafka的消费者:
./kafka-console-consumer.sh --zookeeper node3:2181,node4:2181,node5:2181 --topic topic2017

查看kafka中topic列表:
./kafka-topics.sh --list --zookeeper node3:2181,node4:2181,node5:2181

查看kafka中topic的描述:
./kafka-topics.sh --describe --zookeeper node3:2181,node4:2181,node5:2181 --topic topic2017

5).删除kafka中的数据
a).在kafka集群中删除topic,当前topic被标记成删除。在每台broker节点上删除当前这个topic对应的真实数据。
./kafka-topics.sh --zookeeper node3:2181,node4:2181,node5:2181 --delete --topic t1205
b).进入zookeeper客户端,删除topic信息
rmr /brokers/topics/t1205
c).删除zookeeper中被标记为删除的topic信息
rmr /admin/delete_topics/t1205

6).leader的均衡机制

推荐阅读