适用范围与版本边界
本文帮助理解 StarRocks 的 shared-nothing 与 shared-data 两种部署形态,适合架构评审、容量规划与运维交接。讨论以 3.3 及以后版本的基础能力为范围,但功能仍须按实际大版本和补丁核验。官方 Latest 页面会随发布更新,不代表已有集群具备全部能力;本文未连接真实集群验证,等级为 PENDING。
先收集 FE/BE/CN 清单、部署配置、表 DDL、远端存储类型与业务负载曲线。确认这次评审要解决的是容量、弹性、查询延迟还是隔离问题,分别给出可测量指标。不能仅凭架构名称判定哪种方案适合所有业务。
两种形态的核心区别
- shared-nothing:BE 计算并存储表数据。 主要数据位于 BE 本地存储,通过多副本提供冗余;容量重点是数据分布、副本和恢复空间。
- shared-data:CN 计算,远端保存持久数据。 主要数据位于对象存储或 HDFS,本地磁盘承载缓存等运行数据;容量重点是远端存储、缓存和请求开销。
两种形态都由 FE 承担连接、规划和元数据协调。shared-data 的 CN 执行计算,热数据通过本地缓存加速;远端存储并不会消除网络延迟与对象请求开销。此处是组件职责划分,不是对任意负载的性能保证,见 StarRocks 架构。
用集群视图校对资产
在具备相应只读查看权限的运维会话中执行组件清单查询:
SHOW FRONTENDS;
SHOW BACKENDS;
SHOW COMPUTE NODES;这些语句枚举集群节点,结果规模由已知集群大小决定,不是业务表扫描。保存节点 ID、版本、存活状态与最近心跳,并和部署配置交叉核对。不能只因为看到 CN 就跳过部署模式确认;不同用途的节点与外表计算场景需要一起解释。
对于 BE,DataUsedCapacity 与 UsedPct 的口径不同,后者可能包含非数据文件影响;MaxDiskUsedPct 还能暴露单盘热点。对于 CN,重点读节点状态和可用的缓存指标,不把本地占用直接当成远端表数据总量。字段按 SHOW BACKENDS 和 SHOW COMPUTE NODES 的版本说明解释。
shared-nothing 的运行检查
BE 同时承担存储和计算,扩缩容需要考虑数据分布与副本恢复过程。总剩余空间充足不代表每个节点、每块盘都能承接写入和合并。容量基线应包含表数据、版本合并临时空间、恢复任务和预留故障容量。
把节点离线与计划退役分开:某个 BE 标记退役并不等于数据已迁移完成。维护记录要包含受影响 Tablet、其他副本健康、目标容量与迁移收敛情况。本篇只建立检查清单,不运行退役或删除节点命令。若查询正好都命中健康副本,一次成功读取也不能证明该 BE 可以立即停机。
shared-data 的缓存与远端依赖
共享数据降低了计算节点与持久化容量之间的绑定,CN 变化时仍需关注缓存命中、冷读请求和在途任务。存储后端应有独立的权限、网络、容量和可用性监控;FE 正常、CN 心跳正常,也可能因为对象存储访问失败导致查询不可用。
对同一查询分别记录首次运行和后续运行的远端读取量、缓存命中与耗时。热缓存快不能推断扩容后的新节点也同样快。缓存目录不等于可随意清空的临时目录,删除缓存可能引发集中回源,需按维护流程评估查询和存储负载。
表模型与部署模式分开评审
Primary Key、Duplicate Key、Aggregate Key 等表模型决定数据语义;shared-data/shared-nothing 决定运行与存储形态。Primary Key 表在 shared-data 中自 3.1 开始支持,但持久化索引、部分更新等细分能力有各自版本要求,不能以“支持主键表”推断全部功能相同,见 Primary Key 表。
SHOW CREATE TABLE analytics.orders_current;
DESC analytics.orders_current;对目标表保存主键、分桶、分区、排序和存储相关属性。主键保证逻辑唯一性,排序键服务查询访问,两者不必承担相同职责;部分更新方式还需要与当前模式的功能表核对。主键写入问题可继续阅读 StarRocks 导入与主键实践。
设计一组公平的比较负载
比较两种形态时,使用相同数据、相同结果语义和明确的资源账单,覆盖冷读、热读、持续写入以及查询与写入同时发生的窗口。至少固定单日明细扫描、聚合和维表 Join 三种业务查询,不能只测缓存命中的单表 COUNT。
EXPLAIN
SELECT merchant_id, SUM(amount)
FROM analytics.orders_current
WHERE order_date = '2026-09-01' AND tenant_id = 42
GROUP BY merchant_id
LIMIT 20;先确认 order_date 的分区定义与计划选择范围,再决定是否在受控会话执行。输出里有少量行并不说明扫描量小;比较记录还必须包含实际读取量与并发。该例是候选负载,表名、字段与预算均需现场确认。
常见误区与迁移限制
官方 shared-data 支持说明列出不支持在同一集群混合两种模式,也不支持两者直接转换。迁移应按独立目标集群、历史数据迁入、增量同步和业务切换来规划,不能当成修改一个配置后重启。以实际版本文档为准,见 shared-data 功能支持。
另一个误区是把远端多副本存储当成完整备份。对象持久化、FE 元数据保护、逻辑误删恢复与跨区域灾难恢复是不同问题。也不要把 CN 无状态理解为任何时刻都可中断;协调中的导入与查询仍有运行状态,需要停止条件和客户端恢复策略。
验收、停止与回退
评审交付物应包含模式与组件图、版本能力清单、冷/热负载曲线、峰值写入下的查询延迟、容量及成本拆分。只有业务结果一致且恢复与维护流程可解释,才算完成架构验证;本站内容本身不构成环境验收。
若远端错误扩大、冷缓存拖垮关键查询、源目标出现差异或恢复链缺失,停止切换与缩容。迁移回退需保留旧集群及源端增量,明确切换后新写入的补齐方式;不能假定回改连接串自动恢复数据一致。性能分析继续阅读 StarRocks 查询 Profile 调优。