Kafka都没整明白,还敢去面试?( 三 )


该示例中 , 每个分区都有一个引导程序(称之为“leader”) , 以及其他两个同步副本(称之为“follower”) 。
对于分区 partition 0 来说 , broker1 是“leader” ,broker2 和 broker3 都是“follower” , 从而分区 partition 0 的所有读写操作都将在 broker1 中进行 。
同时 , 之后更新的内容也会被同步复制到 broker2 和 broker3 对应的分区(partition)中 。
创建 Kafka 集群——Demo
我们还是以上图中三个 Broker 组成的 Kafka 集群为例 , 拆解 Kafka 集群创建的步骤 。
①Kafka 集群环境准备
首先需要准备好一台安装有 Zookeeper 的机器 , 没有 Zookeeper , Kafka 集群将无法工作 。
同时建议直接从官网下载最新版本的 Apache Kafka , 目前版本更新至2.11 , 直接解压后将其放置到 bin 目录下:
https://archive.apache.org/dist/kafka/1.0.0/kafka_2.11-1.0.0.tgz 然后启动 ZooKeeper , 为什么需要 Zookeeper?它在这里主要负责协调服务 , 管理代理服务 Broker , 确定每个分区中的引导程序 , 以及在 Kafka 消息主题或代理服务发生变更时及时发出警告 。
通过以下命令可以启动一个Zookeeper实例:
Kafka都没整明白,还敢去面试?
本文插图
②启动 Kafka Brokers
成功安装 Kafka 并启动 ZooKeeper 实例后 , 接下来就可以开启 Kafka Broker 了 , 这里共启动了三个 Kafka Broker 。
具体启动方式:先定位到 Kafka 根目录下的“config”文件夹下 , 找到“server.properties”文件 , 将其复制三次 。
然后分别命名为server_1.properties , server_2.properties 以及 server_3.properties , 并针对三个文件内容做如下编辑 , 直接保存即可:
Kafka都没整明白,还敢去面试?
本文插图
保存后通过命令开启这三个代理服务:
Kafka都没整明白,还敢去面试?
本文插图
③创建主题
通过如下命令创建消息主题:
Kafka都没整明白,还敢去面试?
本文插图
④生成引导服务
通过 Kafka 控制台生成器(Kafka console)指定任意一个代理服务地址 , 并基于之前创建的主题发布一些消息 。
这个指定的代理服务就被视作为引导服务程序 , 用于访问整个集群 。
Kafka都没整明白,还敢去面试?
本文插图
⑤“消费”消息
通过 Kafka 控制台来使用消息 , 用户(即:消息消费者)需要指定任意一个代理服务(Broker)地址作为引导服务器 。
在阅读消息时 , 用户(即:消息消费者)是看不到消息顺序的 , 上文中也提到过消息的先后顺序仅在分区级别(partition level)进行维护 , 而非主题级别(topic level) 。
Kafka都没整明白,还敢去面试?
本文插图
通过以下命令可以描述主题并查看各分区的分布情况 , 以及每个分区的引导服务器:
Kafka都没整明白,还敢去面试?
本文插图
从上面的执行结果可以看出: