1.kafka分区,副本
kafka 每个主题在结构上有一个或者多个分区构成,分区数可以在创建主题时指定,也可以在主题创建之后修改,由kafka-topic.sh修改,但是只能增加不能减少分区数。
每个分区有一个副本或者多个副本组成,挑选其中一个副本作为leader,其它的为follower,
leader负责读写操作,接受生产者将消息发送,follower只从leader同步数据。
2. 日志结构
每个分区对应一个物理目录,每个分区至少有一个副本,每个副本分布在不同节点上,对应分区的日志
.log 日志文件 任何发布到分区的消息都会被直接追加到该日志文件 .index 消息偏移量索引文件 .timeindex 消息时间戳索引文件
3. IST kafka在zookeeper中动态维护了一个ISR(In-sync Replica),即同步保存副本列表,即所有副本对应节点id
4.启动kafka
bin目录下
./kafka-server-start.sh -daemon ../config/server.properties
5.查看java进程
[root@docp-n bin]# jps 2032 Kafka 5188 Jps 5157 Kafka 1755 QuorumPeerMain
启动两个kafka
6.通过zookeeper 客户端登录zookeeper查看目录结构
./zkCli.sh -server localhost:2181
[root@docp-n bin]# ./zkCli.sh -server localhost:2181 Connecting to localhost:2181 Welcome to ZooKeeper! JLine support is enabled WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: localhost:2181(CONNECTED) 0] ls /brokers/ids #查看已启动的节点 [0, 1]
7.伪分布
在一个节点可以启动多个kafka,指定另一个配置文件即可,需要修改节点id
./kafka-server-start.sh -daemon ../config/server.properties-1
8.集群
集群修改 conf/server.properties 下的 zookeeper.connect即可
zookeeper.connect=docp1:2181,10.0.1.222:2181