当前位置: 首页 > news >正文

谙流 ASK 技术解析(一):秒级扩容

谙流 ASK 是谙流团队自主研发的国产新一代云原生流平台,与 Apache Kafka 100% 协议兼容,全栈自主可控,专注私有化部署与行业场景赋能。

传统Kafka存储之殇

图片

IO模型缺陷

每个分区对应独立文件,采用单分区异步批量顺序写机制。当多分区并发写入时,IO 模式逐渐退化为随机写。若将 Kafka 刷盘条数调至极小值(如高可靠性场景),随机写问题将显著加剧(机械盘顺序写性能可达随机写的100倍),导致性能断崖式下跌[1]。此为 Broker 节点无法承载过多分区的核心根因。

分区-机器绑定困局

存算一体架构限制:分区与特定Broker机器绑定。随着业务增长,部分Broker可能出现分区数据空间占用不均——少数分区占据大量磁盘空间。为保障业务稳定,需将大分区迁移至低负载Broker。

扩容引发二次灾难:当业务流量激增导致磁盘即将写满时,必须扩容。由于分区与机器强绑定,扩容需将高负载Broker的分区全量迁移至新Broker。此过程将进一步加剧本已高负载集群的压力,引发连锁故障。

正是由于Kafka的存算一体架构设计,实际运维中高要求场景需遵循两条核心准则,Broker节点磁盘使用率控制在60%以内,避免瞬时写满引发服务中断;严控集群Topic总规模,规避后续扩容[2]与故障定位困难。

ASK 分片存储模型

为彻底解决传统架构中分区数据与特定物理机器的强绑定问题,ASK引入分片存储模型,将分区数据切割为逻辑分片(Shard1-6),并全域分布式存储于集群共享存储池中(Storage1-3),其核心设计如下:

图片

在谙流 ASK 存储架构中,分区(Partition)- 分片(Ledger)- 存储节点(Storage Node)的关联关系如下:

PART/储存架构

分片是分布式存储的最小逻辑单元,其 ID 由 Storage 分配,保证全局单调递增。

分区与分片映射示例

  • 一个Topic(如两分区 P0/P1)。

  • 每个分区绑定一组递增的分片ID(如P0: L1→L3→L6P1: L2→L4→L5)。

  • 仅最新分片可写(如 L6/L5),其他分片关闭后只读不可修改

分片写入规则

  • 副本数由Topic级别参数replication.factor定义(默认3副本)。

  • 目标存储节点通过动态负载均衡算法选择。

分片数据在 Storage Node 组织方式如下:

PART/分片数据

读写IO物理隔离

  • 操作日志(WAL):使用独立的磁盘设备,全局顺序写入,采用组提交机制合并小IO以提升效率。副本写入操作日志成功即代表该副本写入成功。操作日志仅需保留近期数据,主要用于节点异常退出时的恢复,可根据实际场景配置为同步写入、异步写入或不写入(三种模式可选)。

  • 消息数据:用户数据会写入其它磁盘或磁盘阵列中,采用异步、批量方式刷盘以提高性能。消息读请求主要从这部分磁盘读取,从而实现了消息读写路径的物理分离。

消息数据文件结构(图中 a.logb.log...)

  • 混合存储:先将多个分片的数据写入内存,并对该分片内的数据进行排序和合并,当达到一定条件后批量写入文件中。

  • 文件切割:单个文件达到阈值时(例如文件大小到达2G),则生成新文件(a.log→b.log)。

索引管理

为更高效地读取数据,建立了索引机制,快速根据分片读取消息内容。

凭借出色的性能保障机制,ASK 以更周密的数据读取机制实现了比 Apache Kafka 更优的性能表现。这一点我们会在技术解析的后续文章中进行详细分析。

ASK存算分离架构

上面介绍了分布式存储服务,其整体存算分离架构主要包括 Metadata 服务和 Broker 服务,三者共同构成如下三层架构:

图片

PART/存算分离

Metadata层(元数据控制层)

  • 存储租户(Tenant)、命名空间(Namespace)、Topic、分区(Partition)的定义和映射关系。

  • 存储分区(Partition)、分片(Ledger)的映射关系。

  • 存储分片(Ledger)的元数据,例如分片的记录数、副本数、副本所在的Storage Node信息等。

Broker层(无状态计算层)

  • Broker 节点本身不存储业务数据,启动时通过与元数据服务交互,动态加载 Topic 与分区的路由映射关系。

  • Broker 集群通过一种简单快速的方式选出Leader,由其统一管理分区分配及负载均衡策略。

  • 每个分区仅绑定至单一 Broker 节点,读写请求由该节点直接对接 Storage 层处理。

Storage层(持久化存储层)

负责真正的数据持久化存储

ASK秒级扩容

在介绍完 ASK 的分片存储模型和存算分离架构后,接下来我们将看看如何实现快速扩容。

图片

PART/秒级扩容

存储层扩容(左侧→中部)

  • 紧急扩容:当存储层磁盘空间不足时,Storage 节点从 3个(Storage1/2/3) 快速扩容至 5个(新增Storage4/5),新节点加入后 Broker 秒级探测,并依据调度算法将新分片定向写入扩容节点(如分片7→Storage4/5)。

  • 日常扩容:当分片达到阈值(如5000条或4小时),系统自动关闭当前分片并创建新分片,新数据优先写入扩容节点(如分片8→Storage4)。

  • 空间释放:旧节点数据依赖消息保留策略渐进回收空间(非立即删除),避免瞬时IO压力。

计算层扩容(中部→右侧)

  • 分区接管:新增 Broker 节点(如Broker4)后,系统自动触发负载均衡,将指定分片(如分片7)迁移至新节点。迁移流程如下:

    关闭写入:原 Broker 停止对该分片的写入(元数据标记为关闭状态)。

    路由切换:分片绑定至新 Broker,由其加载分片元数据并接管读写流量。

  • 秒级转移:全流程秒级完成,客户端自动重连新节点,业务零感知。

  • 零数据迁移:仅更新元数据路由,Storage 层数据物理位置不变,规避迁移开销。

下面是某实际客户的扩容的效果图:

  • 双向奔赴:扩容后,新节快速承接新增写入流量,各存储节点间的负载快速趋于均衡。同时,存储集群的数据分布随时间推移逐步收敛,最终达成容量平衡状态,全过程无需人工干预,无数据迁移。

图片

图片

  • 平滑稳定:整个集群在扩容的过程中,生产消息服务平滑无感。

图片

图片

总结

谙流 ASK 以国产化云原生架构,重塑 Apache Kafka 核心引擎:

  • 破传统之殇:独创分片存储模型,彻底解耦分区与物理机器的强绑定困局;

  • 立三层之优:Metadata-Broker-Storage 存算分离架构,实现计算、存储、调度的独立弹性;

  • 证秒级之效:存储层秒级扩容免迁移,计算层分区无感切换零中断,性能与容量实现「双向奔赴」。

这就是 ASK —— 协议 100% 兼容,稳定性大跃升,让企业在私有化场景下告别 Apache Kafka 的扩容之痛,驾驭流数据再无后顾之忧


文章转载自:

http://MKg7wwFC.nchLk.cn
http://ev4ubBpc.nchLk.cn
http://WWub0lDP.nchLk.cn
http://7ADGyAJL.nchLk.cn
http://M6DOOIz2.nchLk.cn
http://QpTtqGxW.nchLk.cn
http://4auOMTPy.nchLk.cn
http://vsr8ejaG.nchLk.cn
http://CtTD7DT6.nchLk.cn
http://1ICpYnGV.nchLk.cn
http://pwH6ln0r.nchLk.cn
http://8txDAzOZ.nchLk.cn
http://2az5gvpN.nchLk.cn
http://QjhivjIz.nchLk.cn
http://GrGkFc9N.nchLk.cn
http://o9BYPGET.nchLk.cn
http://lngXAt8y.nchLk.cn
http://Xz9kfUWA.nchLk.cn
http://69D6E6d4.nchLk.cn
http://uaamCCPR.nchLk.cn
http://icOzZT2b.nchLk.cn
http://ReUpuJ93.nchLk.cn
http://eXWJoqZb.nchLk.cn
http://H966iDpZ.nchLk.cn
http://ldwJDPGl.nchLk.cn
http://BybNThib.nchLk.cn
http://uKW9Klw2.nchLk.cn
http://3Tlz1AvD.nchLk.cn
http://G3Arobla.nchLk.cn
http://bNaRL7Wu.nchLk.cn
http://www.dtcms.com/a/369379.html

相关文章:

  • 阿里云ESA 没有数据发送到SLS的解决
  • 【Python】根据开始时间、结束时间计算中间时间
  • 《Istio故障溯源:从流量劫持异常到服务网格的底层博弈》
  • STC携手VEX发起全球首个碳资产RWA生态,泰国峰会即将引爆绿色金融
  • 工业设备管理软件与AI_HawkEye智能运维平台_璞华大数据
  • 调试寄录之dc-dc芯片
  • 显存与内存
  • nVisual从入门到精通—基础知识
  • 栈:有效的括号
  • TPU|DHH访谈|AI与开发
  • Linux 文件管理
  • Hive实战:如何优雅地为已存在表添加二级分区?(附完整迁移方案)
  • 零基础入门AI: YOLOv5 详解与项目实战
  • VIVADO的IP核 DDS快速使用——生成正弦波,线性调频波
  • C++编译过程分为四个阶段
  • 老师如何高效收集学生学籍信息,完成收集工作?
  • 中国移动浪潮云电脑CD1000-系统全分区备份包-可瑞芯微工具刷机-可救砖
  • VAE(变分自动编码器)技术解析
  • 毕业项目推荐:83-基于yolov8/yolov5/yolo11的农作物杂草检测识别系统(Python+卷积神经网络)
  • 植物翻译官:基于 EfficientNetB7 的植物性状预测
  • Sunlord破解AI服务器供电难题!揭秘高效、小型化电感黑科技
  • OpenCV: cv::warpAffine()逆仿射变换详解
  • 复合机器人能否更换末端执行器?
  • python使用transformer库推理
  • 【开题答辩全过程】以 智能商品数据分析系统为例,包含答辩的问题和答案
  • 终结 在我电脑上明明是好的!我们团队的协作秘诀
  • 神经网络|(十九)概率论基础知识-伽马函数·下
  • 基于STM32单片机的水位浑浊度检测设计
  • 个人健康管理系统设计与实现
  • MySQL集群——高可用架构