跳到主要内容
最后 更新

Doris Operator 总体架构

Doris Operator 遵循标准的 Kubernetes Operator 设计模式。用户通过 CRD 声明期望状态,Operator 持续观察实际状态,并通过创建、更新或删除 Kubernetes 资源来收敛差异。

本文聚焦整体架构。字段配置和部署步骤请参考对应的安装和配置文档。

架构分层

Doris Operator 可以分为控制面和数据面两层。

Doris Operator architecture layers

控制面负责读取 Doris 自定义资源并执行 Reconcile 流程;数据面由实际运行 Doris 组件的 Kubernetes 原生资源组成。

Reconcile 模型

Reconcile 循环是 Doris Operator 的核心。每当用户创建或修改 Doris 自定义资源,或者相关资源状态变化时,Operator 都会重新计算期望状态与实际状态的差异,并执行必要操作。

典型流程如下:

  1. 读取 Doris 自定义资源。
  2. 判断资源是否正在删除。
  3. 解析组件、存储、认证和访问配置。
  4. 创建或更新对应的 StatefulSetService、PVC 等资源。
  5. 汇总组件状态并写回 CR status
  6. 如果集群尚未就绪,则等待下一轮 Reconcile。

Doris Operator reconcile model

存算一体控制链路

DorisCluster 用于存算一体部署。一个资源通常包含 FE、BE、CN、Broker 等组件配置。

Control path for compute-storage integrated clusters

在这条链路里,主 Reconciler 负责读取 CR、组织组件执行顺序、清理无效资源并汇总状态;组件控制器负责各自组件的资源创建和状态检查。

存算分离控制链路

DorisDisaggregatedCluster 用于存算分离部署。一个资源中包含 MetaService、FE 和一个或多个 ComputeGroup。

Control path for compute-storage decoupled clusters

与存算一体相比,这条链路会涉及更多 Doris 元数据层动作。例如缩容 ComputeGroup 时,Operator 可能需要先执行 decommission 或 drop,再更新 Kubernetes 资源。

Webhook 与校验

Doris Operator 可以选择启用 Webhook,在配置进入 Reconcile 流程之前做默认值填充和基础校验。

常见校验包括:

  • FE 副本数与选举相关配置是否兼容。
  • 资源字段格式是否满足 CRD 约束。
  • 组件配置是否符合 Operator 支持的模型。

是否启用 Webhook 取决于部署方式和环境配置。即使未启用,CRD schema 校验和 Reconcile 状态反馈仍然提供基础约束。

状态汇总

Operator 不只负责创建资源,也会把组件状态写回 Doris 自定义资源。你可以通过 kubectl getkubectl describe 判断组件是否可用、是否在扩缩容、是否等待调度,或者是否存在失败实例。

存算一体集群按 FE、BE、CN、Broker 汇总状态;存算分离集群按 MetaService、FE、ComputeGroup 汇总状态,并额外提供整体健康度。