【Kafka集群架构设计原理】

文章目录

  • 一、Kafka的Zookeeper元数据梳理

一、Kafka的Zookeeper元数据梳理

1、zookeeper整体数据
Kafka将状态信息保存在Zookeeper中,这些状态信息记录了每个Kafka的Broker服务与另外的Broker服务
有什么不同。通过这些差异化的功能,共同体现出集群化的业务能力。这些数据,需要在集群中各个Broker
之间达成共识,因此,需要存储在一个所有集群都能共同访问的第三方存储中。
2、Controller Broker选举机制
在Kafka集群进行工作之前,需要选举出一个Broker来担任Controller角色,负责整体管理集群内的分区和
副本状态。选举Controller的过程就是通过抢占Zookeeper的/controller节点来实现的。
3、Leader Partition选举机制
在Kafka中,一个Topic下的所有消息,是分开存储在不同的Partition中的。在使用kafka-topics.sh脚本创
建Topic时,可以通过–partitions 参数指定Topic下包含多少个Partition,还可以通过–replication-factors参
数指定每个Partition有几个备份。而在一个Partition的众多备份中,需要选举出一个Leader Partition,负责
对接所有的客户端请求,并将消息优先保存,然后再通知其他Follower Partition来同步消息。
4、Leader Partition自动平衡机制
在一组Partiton中,Leader Partition通常是比较繁忙的节点,因为他要负责与客户端的数据交互,以及向
Follower同步数据。默认情况下,Kafka会尽量将Leader Partition分配到不同的Broker节点上,用以保证
整个集群的性能压力能够比较平均。
5、Partition故障恢复机制
Kafka设计时要面对的就是各种不稳定的网络以及服务环境。如果Broker的服务不稳定,随时崩溃,Kafka
集群要怎么保证数据安全呢?
当一组Partition中选举出了一个Leader节点后,这个Leader节点就会优先写入并保存Producer传递过来
的消息,然后再同步给其他Follower。当Leader Partition所在的Broker服务发生宕机时,Kafka就会触发
Leader Partition的重新选举。但是,在选举过程中,原来Partition上的数据是如何处理的呢?
Kafka为了保证消息能够在多个Parititon中保持数据同步,内部记录了两个关键的数据:
LEO(Log End Offset): 每个Partition的最后一个Offset
这个参数比较好理解,每个Partition都会记录自己保存的消息偏移量。leader partition收到并记录了生产
者发送的一条消息,就将LEO加1。而接下来,follower partition需要从leader partition同步消息,每同步
到一个消息,自己的LEO就加1。通过LEO值,就知道各个follower partition与leader partition之间的消息
差距。
HW(High Watermark): 一组Partiton中最小的LEO。
follower partition每次往leader partition同步消息时,都会同步自己的LEO给leader partition。这样
leader partition就可以计算出这个HW值,并最终会同步给各个follower partition。leader partition认为这
个HW值以前的消息,都是在所有follower partition之间完成了同步的,是安全的。这些安全的消息就可以
被消费者拉取过去了。而HW值之后的消息,就是不安全的,是可能丢失的。这些消息如果被消费者拉取过
去消费了,就有可能造成数据不一致。

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

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

相关文章

HarmonyOS:Neural Network Runtime 对接 AI 推理框架开发指导

场景介绍 Neural Network Runtime 作为 AI 推理引擎和加速芯片的桥梁,为 AI 推理引擎提供精简的 Native 接口,满足推理引擎通过加速芯片执行端到端推理的需求。 本文以图 1 展示的 Add 单算子模型为例,介绍 Neural Network Runtime 的开发流…

精通服务器远程管理:全面指南

引言 在当今数字化世界中,IT专业人员和管理员能够远程管理服务器的能力是无价之宝。远程服务器管理不仅提高了效率,而且在无法物理访问服务器的情况下确保了持续的运营。本指南将深入探讨远程管理的不同类型、远程桌面的使用方法,以及如何安全…

一、W5100S/W5500+RP2040之MicroPython开发<静态网络示例>

文章目录 1. 前言2. MicroPython介绍2.1 简介2.2 优点2.3 应用 3. WIZnet以太网芯片4. 静态IP网络设置示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证步骤1:将固件部署到设备步骤2:运行network_install.py程序步骤3&a…

【大数据存储与处理】实验一 HBase 的基本操作

一、实验目的: 1. 掌握 Hbase 创建数据库表及删除数据库表 2. 掌握 Hbase 对数据库表数据的增、删、改、查。 二、实验内容: 1、题目 0:进入 hbase shell 2、题目 1:Hbase 创建数据库表 创建数据库表的命令:create 表…

重塑数字生产力体系,生成式AI将开启云计算未来新十年?

科技云报道原创。 今天我们正身处一个历史的洪流,一个巨变的十字路口。生成式AI让人工智能技术完全破圈,带来了机器学习被大规模采用的历史转折点。 它掀起的新一轮科技革命,远超出我们今天的想象,这意味着一个巨大的历史机遇正…

【Dubbo】默认hession2反序列化机制导致dubbo接口返回HashMap

问题描述 在使用dubbo调用接口的时候,莫名其妙出现java.lang.ClassCastException: java.util.HashMap cannot be cast to xxxx异常经过排查发现,是因为dubbo接口返回的不是xxxx对象,而是HashMap 源码分析 dubbo的反序列化机制默认是hessia…

【扩散模型】8、DALL-E2 | 借助 CLIP 的图文对齐能力来实现文本到图像的生成

文章目录 一、背景二、方法2.1 Decoder2.2 Prior 三、图像控制3.1 Variations3.2 Interpolations3.3 Text Diffs 四、探索 CLIP 的潜在空间五、文本到图像的生成5.1 先验的重要性5.2 人类评价5.3 多样性和保真性的平衡5.3 在 COCO 上对比 论文:DALLE.2 代码&#x…

《网络安全面试总结》--web白盒漏洞问题

网络安全面试题目 Web安全 web白盒漏洞问题 1.JAVA反序列化了解吗?有没有了解过shrio反序列化? Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,其作用把对象转换成字节流,便于保存或者传输,而Ob…

JVM-12-即时编译器

Java程序最初都是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁,就会把这些代码认定为“热点代码”(Hot Spot Code),为了提高热点代码的执行效率&#xf…

178.【2023年华为OD机试真题(C卷)】CPU算力分配(实现JavaPythonC++JS)

🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】CPU算力分配(实现Java&Python&C++&&JS)题目描述解题思路题解代码Python 题解代码Java 题解…

案例 | 数据中台如何支撑6000+门店降本提效?

对于企业来说,上中台不是目的,借助数据中台让企业建立数据驱动意识,并结合数据中台持续做好各项业务运营,才是根本。 那么对于零售行业来说,该如何利用数据中台为业务赋能?惟客数据以某头部连锁零售企业为…

leetcode 974. 和可被 K 整除的子数组(优质解法)

代码&#xff1a; class Solution {public int subarraysDivByK(int[] nums, int k) {HashMap<Integer,Integer> hashMapnew HashMap();hashMap.put(0,1);int count0; //记录子数组的个数int last0; //前一个下标的前缀和int now0; //当前下标的前缀和for(int i0;…

打开任务管理器的13种方法,总有一款适合你

任务管理器是一个很好的工具,可以帮助你管理应用程序、进程和服务在Windows PC上的运行方式。在使用任务管理器之前,你应该首先知道如何打开它。在本指南中,我们将向你展示运行它的不同方式,无论你使用的是Windows 11还是Windows 10。该列表包括启动任务管理器的十三种方法…

使用Python爬取GooglePlay并从复杂的自定义数据结构中实现解析

文章目录 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》&#xff0c;对分布…

计算机组成原理综合3

41、计算机操作的最小时间单位是__________。A A. 时钟周期 B. 指令周期 C. CPU周期 D. 外围设备 42、微程序控制器中&#xff0c;机器指令与微指令的关系是__________。B A. 每一条机器指令由一条微指令来执行 B. 每一条机器指令由一段用微指令编成…

在做题中学习(35):判断字符是否唯一

面试题 01.01. 判定字符是否唯一 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;1.用哈希表&#xff08;创建另一个数组存储&#xff09;然后和原数组一一比对。 时间复杂度O&#xff08;N&#xff09; 空间复杂度 O&#xff08;N&#xff09; 2.位图&#xff08…

使用物理机的burpsuite抓取虚拟机的请求包(虚拟机代理配置)

关于burpsuite抓取本地浏览器的请求包大家应该都会配置吧 我也是第一次配抓取虚拟机的包&#xff0c;最开始遇到了些问题&#xff0c;这里简单给大家分享一下 下面以Windows系统下的Firefox浏览器为例&#xff1a; 首先我还是先添加了一个小狐狸&#xff08;foxyproxy&#…

ubuntu保存分辨率失效解决办法

在VM虚拟机中&#xff0c;遇到修改ubuntu分辨率后&#xff0c;重启后又重置的解决办法。 目前我的ubuntu版本是&#xff1a;ubuntu 18.04.6 版本。 1.首先&#xff0c;在你喜欢的目录建立一个.sh 脚本文件。 终端执行命令&#xff1a;sudo vim xrandr.sh 2.按 i 进入编辑状…

神经网络:优化器和全连接层

SGD&#xff08;随机梯度下降&#xff09; 随机梯度下降的优化算法在科研和工业界是很常用的。 很多理论和工程问题都能转化成对目标函数进行最小化的数学问题。 举个例子&#xff1a;梯度下降&#xff08;Gradient Descent&#xff09;就好比一个人想从高山上奔跑到山谷最低…

[node] Node.js 缓冲区Buffer

[node] Node.js 缓冲区Buffer 什么是BufferBuffer 与字符编码Buffer 的方法概览Buffer 的实例Buffer 的创建写入缓冲区从 Buffer 区读取数据将 Buffer 转换为 JSON 对象Buffer 的合并Buffer 的比较Buffer 的覆盖Buffer 的截取--sliceBuffer 的长度writeUIntLEwriteUIntBE 什么是…