1、启动 zookeeper 服务器端
小黑窗输入命令: zkServer
2、启动 zookeeper 的命令行客户端工具
小黑窗输入命令:zkCli -server 127.0.0.1:2181
3、启动 Kafka 服务器:
第1个kafka服务器,也就是第1个节点:端口9092
kafka-server-start E:/install/kafka_2.13-3.6.1/config/server.properties
第2个kafka服务器,也就是第2个节点:端口9093
kafka-server-start E:/install/kafka_2.13-3.6.1/config/server-1.properties
第3个kafka服务器,也就是第3个节点:端口9094
kafka-server-start E:/install/kafka_2.13-3.6.1/config/server-2.properties
4、打开小黑窗,运行如下命令来启动CMAK:
E:/cmak/bin/cmak.bat
5、打开CMAK图形界面
http://localhost:9000/
如图,安装完,小黑窗输入 E:\cmak\bin\cmak.bat 命令启动这个cmak之后,发现什么都没有。
接下来,演示通过cmak来管理Kafka
启动cmak.bat命令后,使用浏览器访问“http://localhost:9000/”即可进入CMAK管理界面
单击管理页面上方的“Cluster”下拉菜单展开的“Add Cluster”菜单项,即可打开添加Cluster的界面。
Kafka 使用 ZooKeerper 管理集群,因此添加集群的关键就是在Cluster ZooKeeper Hosts中输入ZooKeeper的主机地址和端口。
集群名和Kafka版本并不关键
点击这里添加kafka集群:
输入这三个信息即可。点击save保存即可,然后再去查看创建出来的集群
查看集群可看到如下信息:
- ZooKeeper的地址和Kafka版本
- 集群包含多少个主题和多少个Broker(节点)
▲ Kafka 的 topic 和 JMS 的 topic 是完全不同的,Kafka 的 topic 是消息的逻辑容器。
——换而言之,Kafka 的 topic 是用来装消息的。
通过页面上方的“Brokers”链接,即可进入Broker列表页面。
通过Broker列表页面中任一Broker的id链接,即可查看该Broker的详细信息,可看到该Broker的
- ID
- 主题数
- 分区数
- 领导者分区数
该主题的复制因子为1,这意味着每个分区仅有一个副本,因此该副本只能是领导者分区,只不过它没有追随者分区。
点击broker的id进入这里:
主题的详细信息:
这个是kafka内部自己建立的主题,叫位移主题,
点开每个kafka节点,加起来一共有50个分区。
Kafka默认就有一个名为“__consumer_offsets”的主题,该主题是Kafka自动创建的内部主题:位移主题。
它用于保存Kafka内部的位移信息,一般不建议手动管理它,让系统自己管理它是最好的。
位移主题的消息格式也是Kafka自定义的,用户不能修改。
开发者不应该向位移主题写入消息,否则一旦写入的消息格式不满足Kafka的定义,那就会导致Broker崩溃。
加深理解:
比如rocketmq、rabbitmq这些消息中间件,它们的消息是放在消息队列里面的,如果消息被消费完后,该消息就会被移除该消息队列。
而 Kafka 是一个数据流平台,kafka 是把消息存放在分区(或者说主题,主题包含分区)里面的,当消息被消费完,该消息也不会被移除掉。
因为消费完的消息没有被移除掉,所以就需要这个内部主题–>【位移主题】这个机制来记录我们消息已经消费到哪个位置了。它存储kafka内部相关的位移信息。
这个位移主题不需要我们做任何操作。了解就好。
——控制主题内分区副本的数量。
主题由多个分区组成。
复制因子控制主题内各分区的副本的数量,复制因子为1,表明每个分区的副本数量为1——也就是所有分区仅有1个副本。
复制因子必须大于或等于1,这意味着每个分区至少要有一个副本。
Kafka的副本机制(也可称为备份机制)仅提供数据冗余功能。
比如将某个主题的复制因子设为3,那意味着该主题内每个分区都有3个副本,
这3个副本中有1个是“领导者(leader)副本”,该领导者副本负责与客户端交互(接受客户端读、写操作),
另外2个是“追随者(follower)副本”,追随者副本完全不能与客户端交互,
追随者副本仅仅只是作为“领导者副本”的后备(自动与领导者副本的数据保持同步、但会有一定的滞后性)。
领导者副本与追随者副本并不位于同一个Broker上,当“领导者副本”挂掉之后, Kafka会从追随者副本中重新选一个(专业术语叫选举:elect)作为新的“领导者副本”。
若将某个主题的复制因子设为1,那意味着该主题内每个分区只有1个副本,该分区副本也就是领导者副本。
就像是公司的技术部,只有我一个人,那么部门领导者是我,追随者也是我。
Kafka会将主题内的分区“分摊”到不同 broker 节点上,从而让不同节点能并行地向客户端提供服务
——这是Kafka性能优秀的关键。
查看主题可看到如下信息:
包含多少分区
分区分布在几个Broker上
分布率多少:从提升性能角度来看,肯定是分布率越高越好,分布率越好就意味着更多的节点可以一起为该主题对外提供服务。
单击“Add Partition”可添加分区
单击“Generate Partition Assignments” 和 “Run Partition Assignments”按钮可对分区进行重新分布。
加深理解:
一个程序从一个主题获取消息,这个主题只是一个逻辑的东西,这个主题下面还有50个分区,这些分区假如分布到10个broker节点里面去,那么我们从这个主题获取消息的时候,Kafka 内部会用负载均衡的方式依次自动的从这10个节点里面去提取消息给我们访问。
Kafka的 broker 节点是可以无限增加的,这种机制可以很方便的扩充kafka 容量。
如果分区访问速度慢了,性能降低的话,也可以修改分区的数量
分区跟主题是很重要的一个概念,它们对kafka的性能有关键性的影响。
可以修改分区之类的配置。
这个是kafka集群信息:
这个是主题信息: