kafka 集群原理设计(三)之启动原理介绍

kafka 集群原理设计(三)之启动原理介绍

业务背景问题描述

现在有三个机器节点192.168.0.200、192.168.0.201、192.168.0.202,分别安装部署zookeeper、
kafka集群,每个topic有3个分区,3个副本,则kafka各个节点在刚启动时,是如何选择哪个Kafka节
点为管理节点,哪个副本为主,其余为副本?

在 Kafka 集群中,部署 ZooKeeper 和 Kafka 后,各个节点在启动时的行为包括以下几个步骤:

  1. ZooKeeper 启动和配置:每个节点启动 ZooKeeper,配置 ZooKeeper 集群。
  2. Kafka 启动和注册:每个 Kafka Broker 启动并向 ZooKeeper 注册自身信息。
  3. Controller 选举:ZooKeeper 选举出 Kafka Controller。
  4. Partition 领导者和副本分配:Kafka Controller 负责分配 Partition 的领导者和副本。

以下是详细的启动过程、实现原理和核心代码示意:

1. ZooKeeper 启动和配置

每个机器节点启动 ZooKeeper,并配置集群。

配置文件 (zoo.cfg) 示例:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.0.200:2888:3888
server.2=192.168.0.201:2888:3888
server.3=192.168.0.202:2888:3888
启动 ZooKeeper:
# 在每个节点上执行
bin/zkServer.sh start

2. Kafka 启动和注册

每个 Kafka Broker 启动并向 ZooKeeper 注册自身信息。

配置文件 (server.properties) 示例:
broker.id=0
listeners=PLAINTEXT://192.168.0.200:9092
log.dirs=/var/lib/kafka/logs
zookeeper.connect=192.168.0.200:2181,192.168.0.201:2181,192.168.0.202:2181
启动 Kafka Broker:
# 在每个节点上执行
bin/kafka-server-start.sh config/server.properties

3. Controller 选举

当所有 Broker 启动后,ZooKeeper 开始选举 Kafka Controller。Controller 是负责管理集群范
围内的管理任务的 Broker。

核心代码示例(ControllerElection.scala):
class ControllerElection(zooKeeperClient: KafkaZkClient) {def elect

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android进阶学习】Android-广播接收器(Broadcast-Receivers)

android:theme“style/AppTheme” > 现在,无论什么时候Android设备被启动,都将被广播接收器MyReceiver所拦截,并且在onReceive()中实现的逻辑将被执行。 有许多系统产生的事件被定义为类Intent中的静态常量值。下面的表格列举了重要的系…

微积分-导数1(导数与变化率)

切线 要求与曲线 C C C相切于 P ( a , f ( a ) ) P(a, f(a)) P(a,f(a))点的切线,我们可以在曲线上找到与之相近的一点 Q ( x , f ( x ) ) Q(x, f(x)) Q(x,f(x)),然后求出割线 P Q PQ PQ的斜率: m P Q f ( x ) − f ( a ) x − a m_{PQ} \…

前端面试题(基础篇七)

一、谈谈你对webpack的看法 webpack是一个模块打包工具,我们可以使用webpack管理我们的模块依赖,编译输出模块所需的静态文件。它可以很好的管理、打包web开发中所需的html、css、JavaScript以及其他各种静态文件(使用的图片、字体图标等&am…

给数据库的表添加字段

周五有一个需求是这样的: 原来数据库有一个表B,现在需要添加一个字段C,我把代码中增删改查部分进行了修改, 比如insert中也添入了字段C。 但没有考虑到一个问题,数据库的兼容性。因为之前的版本已经投入使用了&…

AES 高级加密加速器实验

1、AES介绍 Kendryte K210 内置 AES(高级加密加速器),相对于软件可以极⼤的提高 AES 运算速度。 AES 加速器支持多种加密/解密模式(ECB,CBC,GCM),多种⻓度的 KEY(ECB,CBC,GCM)的运算。 AES 加…

Linux常用环境变量

Linux常用环境变量 一、常用的默认的shell环境变量二、环境变量 PATH三、持久化修改环境变量四、常用的环境变量 一、常用的默认的shell环境变量 1、当我们在shell命令行属于一个命令,shell解释器去解释这个命令的时候,需要先找到这个命令. 找到命令有两…

C++模板类原理讲解

C模板类原理讲解 C模板是一种强大的编译期工具,它允许我们创建通用的、类型无关的类和函数。模板的主要目的是实现代码的重用和泛型编程。模板类的原理涉及以下几个方面: 模板的定义和实例化模板的类型参数模板特化模板的编译过程模板的优点和缺点 1.…

【人机交互 复习】第2章 Hadoop

一、概念 1.Hadoop 是一个能够对大量数据进行分布式处理的软件框架,并 且是以一种可靠、高效、可伸缩的方式进行处理的, 2.特点: 高可靠性,高效性,高可扩展性,高容错性 运行在Linux平台上,支持…

鸿蒙 HarmonyOS NEXT星河版APP应用开发—上篇

一、鸿蒙开发环境搭建 DevEco Studio安装 下载 访问官网:https://developer.huawei.com/consumer/cn/deveco-studio/选择操作系统版本后并注册登录华为账号既可下载安装包 安装 建议:软件和依赖安装目录不要使用中文字符软件安装包下载完成后&#xff0…

【Linux 基础】文件与目录管理

1. 文件和目录的基本概念 文件:是数据的集合,可以是文本、图像、视频等。 目录(也称为文件夹):是文件和子目录的集合,用于组织文件。 2. 目录和路径 绝对路径:从根目录(/&#x…

2021-03-29:加密与解密

前段时间导师分配的任务主要是看《加密与解密》这本书,“书本写的很详细,认真看会看懂的!” 是的啊,书本写的很详细,可是作为一个没基础的小白看起来还是挺吃力的,概念一个接一个的出现,虽然看…

【C/C++】常量定义

常量定义 在C中,#define和constexpr都用于定义常量,但它们之间存在显著的差异。以下是它们之间的主要区别: 类型安全: #define:#define是预处理器指令,它在编译之前对源代码进行文本替换。这意味着#define…

LTE和5G基站规划原则

LTE和5G基站规划原则 以下是一些常见的规划原则: 基站覆盖与容量规划 1. **覆盖需求评估**:确定目标区域需要的覆盖范围,包括地理特性和用户分布情况。 2. **容量需求评估**:估算区域内的用户数量及其数据传输需求&#xff0c…

Android应用--简、美音乐播放器添加电话监听

3. 控制音量 4. 获取专辑图片 5. 在线下载歌词 6. 在线搜索音乐 7. 在线下载音乐 8. 实现有趣功能–甩歌 9. 界面美化–实现专辑倒影 10.实现左右界面切换 11.实现在通知栏显示播放状态 12.实现音乐播放的桌面小控件 暂时想到这些功能,如果朋友们有什么建…

Day7 —— 大数据技术之Hive

Hive快速入门系列 Hive的概述什么是Hive?使用Hive的原因 Hive架构Hive安装Hive配置文件修改启动Hive以命令行方式启动(在$HIVE_HOME/bin目录下)以JDBC连接启动(beeline方式连接) Hive基本操作Hive数据库操作Hive表操作…

css 动画

transform的3D动画 3D形变函数会创建一个合成层来启用GPU硬件加速 translate transform: translateY(100px);transform: translateX(100px);transform: translateZ(100px);transform: translate3d(100px,100px,100px); // x,y,z的简写rotate deg弧度 transform: rotateX(-40…

C语言学习记录20240622

这次需要用 C 语言库 Allegro 写爆破彗星游戏。项目有一些描述如需要绘制飞船、彗星、子弹,需要响应按键实现飞船加速、减速、转向、开火,需要绘制弹道,需要实现彗星旋转、缩放,需要碰撞检测,需要显示计分。 这些用 w…

Redis—SortedSet数据类型及其常用命令详解

文章目录 一、Redis概述SortedSet类型1 ZADD:向有序集合添加成员2 ZREM:从有序集合中移除一个或多个成员3 ZSCORE : 获取sorted set中的指定元素的score值4 ZRANK:获取sorted set 中的指定元素的排名5 ZCARD:获取sorted set中的元…

赵丽颖纯白茉莉绽放温柔之美

赵丽颖纯白茉莉,绽放温柔之美在这个繁忙喧嚣的娱乐圈,赵丽颖以其独特的魅力,成为了无数人心中的白月光。近日,赵丽颖工作室发布了一组live图,她身着一袭温柔白裙,宛如一朵盛开的纯白茉莉花,美得…

kali linux安装中文输入法

kali linux安装中文输入法:先进入root权限 第1步:安装fctix sudo apt-get install fcitx第2步:安装fcitx-pinyin输入法 apt-get install fcitx-pinyin第3步:配置输入法 打开 Fcitx配置 应用,点击 ,去除勾…