Topic和Partition
作用
主题作为消息的一级分类, 分区是对二级分类。分区是Kafka可伸缩性和水平扩展的关键, 也是多副本机制保证可用性的基础。分区可以有一到多个副本, 每个副本对应1个日志文件, 每个日志文件对应1到多个日志分段。每个日志分段又可以细分为日志文件, 索引文件和快照文件。
创建主题
参数有主题名称, 分区数量, 分区副本因子。显然主题名称是必须指定的, 分区数量和副本因子如不指定, 默认值都是1(测试玩玩可以, 生产别这么敷衍)。毕竟没有任何容错能力。如果有.或者_都会被替换为_, 最终可能会导致冲突, 这个kafka-topics.sh帮你做了处理。此外, Kafka会将分区尽可能分配在一个机架里, 与broker.rack参数有关。集群中的broker要么都指定rack, 要么都没有rack。负责创建主题失败。
副本位置
实际的日志文件数量=分区*副本因子, 这些日志文件应该放在哪个broker, 按照如下基本原则进行:
- 每个broker上的副本不重复(副本放在一个节点, 节点宕机则分区全军覆没);
- 每个broker上的副本数尽可能接近(副本的读写压力尽可能分摊);
如果某个分区有数据倾斜(topic的某个副本消息特别多), 则可以手动指定broker节点进而均衡broker压力。
分区数量
如果topic的消息随着业务扩张增长存量的broker不堪重负, 我们就得向集群中加入新节点。但新节点默认情况下只会被增量topic使用, 存量topic不受影响。如果希望新节点承担负载, 则需要扩大存量topic的分区数量。然而, 扩大到多少是合理的则见仁见智。一般来说, 节点数固定的情况下, 存在一个相对理想的分区数, 超过之后吞吐量反而会下降。这需要基于实际场景测试获得。按照常规的读写分离理论, 应该扩大副本因子, 创建更多的副本。但在Kafka这里, 该方案没有存在的基础。这就是下面的优先副本。
数量参考
- broker的整数倍, 节点非常多忽略;
- 考虑机架因素;
- 消息中key的规则设置;
- 后续通过增加broker, 增加分区和分区重分配来进一步调整;
优先副本
Kafka分区的副本中, 只有leader副本对外提供读写服务, 其他follower副本仅作为冗余。因此当一个分区的leader副本不可用时, 该分区处于不可用状态, 此时Kafka会从副本集中选出新的leader副本再切换为可用状态。因此, 不严谨的角度来说, leader副本的多少决定了broker节点的负载。这也是增加节点后, 采用增加分区而不是扩大副本因子的原因。
鉴于此, 分区尽可能地均匀分布到broker节点上, 有利于leader副本的均匀分布, 进而有利于均衡broker节点的负载。从运维的角度来看, 我们需要一种干预手段来影响负载均衡的结果, 这就是Kafka的优先副本, 一般来说是分区的第一个副本。干预手段实际上就是尝试把优先副本选举为leader副本, 从而影响集群的负载情况。
小结
对于一个topic而言, 其相关的文件数量=分区*副本因子。而所有的副本中, 通常第一个副本为优先副本, 而实际对外提供读写服务的是leader副本。通过优先副本选举, 将优先副本重新选举为leader副本。站在集群视角, leader副本数量影响broker的负载, 我们需要重新调整分区数量, 或指定副本位置来平衡负载。
相关文章:
Topic和Partition
作用 主题作为消息的一级分类, 分区是对二级分类。分区是Kafka可伸缩性和水平扩展的关键, 也是多副本机制保证可用性的基础。分区可以有一到多个副本, 每个副本对应1个日志文件, 每个日志文件对应1到多个日志分段。每个日志分段又可以细分为日志文件, 索引文件和快照文件。 创…...
算法通关村第十四关|黄金挑战|数据流的中位数
数据流的中位数 原题:力扣295. 设计一种数据结构可以支持添加整数和返回中位数的操作。 之前写过找中间用两个堆,这道题就可以使用一个大顶堆和一个小顶堆。 大顶堆存储比较小的元素,小顶堆存储比较大的元素。 class MedianFinder {Prio…...
挑选数据可视化工具:图表类型、交互功能与数据安全
作为一名数据分析师,我经常需要使用各种数据可视化工具来将数据以直观、清晰的方式呈现出来,以便更好地理解和分析。在市面上的众多可视化工具中,我根据实际需求和项目特点进行选择。本文将从以下几个角度对市面上的数据可视化工具进行对比&a…...
华纳云:有效解决服务器宕机的办法
服务器宕机可能是由多种原因引起的,包括硬件故障、软件问题、网络问题等。以下是一些简单的解决服务器宕机问题的办法: 检查硬件连接: 确保服务器的所有硬件连接正常。检查电源线、网络连接、存储设备连接等,确保没有松动或断开的…...
坦克大战-部分
通过键盘操控坦克移动,转弯,射击 消灭所有敌人可以过关 23个类,3个gif图片 wsad控制移动 j射击 砖墙限制移动,可以打穿;铁墙,限制移动,不能打穿;水&#x…...
OracleRac跨网段修改Public IP/VIP/Private IP/Scan IP
本验证于测试环境,生产操作需谨慎 现为测试环境,机器有且仅有两个网卡存在,需求修改Public IP/VIP/Private IP/Scan IP,把Public IP/VIP/Scan IP的网段改为Private IP的网段,Private IP于Public IP网段互换。 先停掉两…...
使用Pytorch从零开始实现BERT
生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…...
Python爬虫-新能源汽车销量榜
前言 本文是该专栏的第11篇,后面会持续分享python爬虫案例干货,记得关注。 本文以懂车平台的新能源汽车销量榜单为例,获取各车型的销量排行榜单数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。 废话不多说,跟着笔者直接往下看正文详细内容。(附带…...
外包干了8个月,技术退步明显.......
先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…...
<JavaEE> volatile关键字 -- 保证内存可见性、禁止指令重排序
目录 一、内存可见性 1.1 Java内存模型(JMM) 1.2 内存可见性演示 二、指令重排序 三、关键字 volatile 一、内存可见性 1.1 Java内存模型(JMM) 1)什么是Java内存模型(JMM)?Java内存模型即Java Memory Model,简…...
docker安装mysql8
docker安装mysql8 docker search mysql:8 #搜索可以使用的msyql8的镜像 docker pull mysql:8.0.27 #拉去mysql8的镜像 创建挂载的宿主机目录 mkdir -p /data/mysql/mysql8/conf # 配置文件目录 mkdir -p /data/mysql/mysql8/data # 数据目录 touch /data/mysql/mysql8/conf/my.…...
消息丢失排查方法?
遇到丢消息问题,如果是单聊,群聊,聊天室,系统消息可以在开发者后台北极星自助查询一下消息是否发送成功。根据您实际发送的相关信息(发送者、接收者、时间、消息 ID ……)看是否可以查到消息 如果消息查不到…...
Linux 匿名页反向映射
1. 何为反向映射 正向映射: 用户进程在申请内存时,内核并不会立刻给其分配物理内存,而是先为其分配一段虚拟地址空间,当进程访问该虚拟地址空间时,触发page fault异常,异常处理流程中会为其分配物理页面&am…...
国内首个农业开源鸿蒙操作系统联合华为正式发布
2023年11月29日,在中国国际供应链促进博览会上,中信农业科技股份有限公司(简称“中信农业”)与深圳开鸿数字产业发展有限公司(简称“深开鸿”)以及华为技术有限公司(简称“华为”)联…...
python HTML文件标题解析问题的挑战
引言 在网络爬虫中,HTML文件标题解析扮演着至关重要的角色。正确地解析HTML文件标题可以帮助爬虫准确地获取所需信息,但是在实际操作中,我们常常会面临一些挑战和问题。本文将探讨在Scrapy中解析HTML文件标题时可能遇到的问题,并…...
AIM: Symmetric Primitive for Shorter Signatures with Stronger Security
目录 笔记后续的研究方向摘要引言贡献 AIM: Symmetric Primitive for Shorter Signatures with Stronger Security CCS 2023 笔记 后续的研究方向 摘要 基于头部MPC(MPCitH)范式的后量子签名方案最近引起了人们的极大关注,因为它们的安全性…...
【 Go语言使用xorm框架操作数据库】
Go语言使用xorm框架操作数据库 Xorm 是一个简单而强大的Go语言ORM(对象关系映射)库。它支持自动将结构体映射到数据库表,并提供了一系列便捷的API来执行CRUD(创建、读取、更新和删除)操作。 安装 Xorm 首先…...
DouyinAPI接口系列丨Douyin商品详情数据接口丨Douyin视频详情数据接口
抖音商品详情API是抖音开放平台提供的一套API接口,用于获取商品详情信息。通过该API,开发者可以获取到商品的详细信息,包括商品ID、名称、描述、价格、销量、评价等信息。 在使用抖音商品详情API之前,需要先注册并登录抖音开放平…...
旺店通对接中国南方电网,打破跨系统连接,让数据轻易互通成为现实
接入系统:旺店通企业版 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案,助力零售企业数字化智能化管理升级。为零售电商企业的订单管理及仓储管理提供…...
简介Kadane算法及相关的普通动态规划
简介Kadane算法及相关的普通动态规划 本文详细论述Kadane算法的经典题目,并通过“首先列出动态规划解法,再改为Kadane算法解法”的方式,讲解二者的不同。最后给出一道Kadane算法变体的题目,解法极为简洁优美。 Kadane算法也是一…...
如何高效构建视频数据集:video2frame终极实战指南
如何高效构建视频数据集:video2frame终极实战指南 【免费下载链接】video2frame Yet another easy-to-use tool to extract frames from videos, for deep learning and computer vision. 项目地址: https://gitcode.com/gh_mirrors/vi/video2frame 在计算机…...
2026年主流抓娃娃App大对比,哪个才是你的“抓宝神器”?
在当今快节奏的生活中,年轻人面临着来自学业、工作、社交等多方面的压力。为了缓解这些压力,寻找适合的解压方式成为了大家的共同需求。抓娃娃App作为一种新兴的娱乐方式,正逐渐受到年轻人的喜爱。下面我们就从潮流趋势、科技前沿、行业洞察等…...
小红书无水印下载工具XHS-Downloader:3种使用模式全解析
小红书无水印下载工具XHS-Downloader:3种使用模式全解析 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接&a…...
百度网盘直链解析工具:告别限速,实现高速下载的Python解决方案
百度网盘直链解析工具:告别限速,实现高速下载的Python解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在数字资源共享日益频繁的今天ÿ…...
英雄联盟智能助手Seraphine:告别手动查询,实现高效游戏决策自动化
英雄联盟智能助手Seraphine:告别手动查询,实现高效游戏决策自动化 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 在英雄联盟排位赛中,你是否曾因错过接受对局而懊恼不已&a…...
终极免费换肤方案:R3nzSkin国服版完整使用教程
终极免费换肤方案:R3nzSkin国服版完整使用教程 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想要在英雄联盟国服免费体验所有皮肤&#x…...
告别命令行启动!在Ubuntu 20.04上为Clion创建桌面快捷方式的保姆级教程
告别命令行启动!在Ubuntu 20.04上为Clion创建桌面快捷方式的保姆级教程 每次打开Clion都要在终端输入./clion.sh?作为从Windows转战Linux的开发者,这种操作简直让人抓狂。本文将彻底解决这个痛点,手把手教你用.desktop文件创建专业…...
Cortex-A78C架构解析:AMU与ETM寄存器实战指南
1. Cortex-A78C核心架构与寄存器概览Cortex-A78C是Armv8-A架构的高性能实现,面向移动计算和边缘AI场景优化。作为A78系列的安全增强版本,它在保留原有3发射乱序执行流水线的基础上,新增了Pointer Authentication等安全扩展,同时强…...
AI团队协作镜像:Docker容器化实现环境一致性与高效复现
1. 项目概述:从开源镜像到AI协作平台的深度解构最近在GitHub上看到一个名为“team9ai/team9”的仓库,这个看似简单的镜像名背后,其实隐藏着一个非常典型的现代AI项目协作范式。它不是某个单一的算法模型,也不是一个孤立的工具&…...
用Circuit Playground Express制作可穿戴互动闪光T恤:零焊接图形化编程入门
1. 项目概述:一件会“跳舞”的闪光T恤几年前,当我第一次把微控制器缝进衣服里时,那感觉既兴奋又麻烦——满桌子的电线、烙铁,还有对洗衣机深深的恐惧。但现在,像Adafruit的Circuit Playground Express(后面…...
