运维与权限控制

为了支持流计算任务的稳定运行与高效排障,Orca 提供了完善的运维接口与可视化支持。

流图运维

Orca 提供了丰富的运维函数,可对流图进行全面监控,详情请参考 Orca 声明式 API

可视化界面支持

除运维函数外,Orca 还提供了 Web 可视化模块,用于图形化展示流图结构与运行状态。该模块可展示当前集群中所有流图。图 1-1 展示了流图中某个节点的状态:

1. 图 1-1 Web 可视化界面

权限控制

Orca 的权限控制基于 DolphinDB 统一的权限系统,在此基础上引入了 Orca 专用权限,用于精细化控制流图、流表及流计算引擎的操作权限。

对流图的提交、删除、启动等涉及计算资源的操作,用户仍需具备 DolphinDB 的基础权限,例如 COMPUTE_GROUP_EXEC,用于控制计算资源(计算组)的使用权限。

Orca 权限类型

在满足基础计算权限的前提下,Orca 进一步通过以下 ORCA 相关权限,对流图、流表及流计算引擎的操作进行细粒度管控。不同权限可作用于 Catalog 级、对象级(流图 / 流表 / 引擎)或全局级,用于满足多用户场景下的权限隔离需求。

权限应用对象 权限类型 权限说明 作用范围
流图 ORCA_GRAPH_CREATE 创建流图 Catalog 级
ORCA_GRAPH_DROP 删除流图 Catalog 级
ORCA_GRAPH_CONTROL 操作和运维流图,包括启动、停止、重新提交、配置流图参数等 Catalog 级或流图级
流表 ORCA_TABLE_CREATE 创建流表 Catalog 级
ORCA_TABLE_DROP 删除流表 Catalog 级
ORCA_TABLE_READ 读取流表数据 Catalog 级或流表级
ORCA_TABLE_WRITE 向流表写入数据 Catalog 级或流表级
流计算引擎 ORCA_ENGINE_MANAGE 管理流计算引擎相关操作,包括:warmupOrcaStreamEnginestopTimerEngineresumeTimerEngineuseOrcaStreamEngine Catalog 级或引擎级
Orca 管理 ORCA_MANAGE Orca 管理权限,包含以上所有 ORCA 相关权限 全局级或 Catalog 级

权限作用范围

全局级别权限

授予全局级别权限后,用户将对所有 Catalog 下的所有流图、流表及流计算引擎拥有相应权限。

目前,仅 ORCA_MANAGE 权限支持授予到全局级别。

Catalog 级别权限

授予某一 Catalog 的权限后,用户将对该 Catalog 下的所有流图、流表或流计算引擎拥有对应权限。

对象级别权限

对象级别权限支持精确控制到单个流图、流表或流计算引擎。进行对象级授权时,需使用完全限定名(FQN)标识具体对象:

  • 流图:catalog.orca_graph.graphName

  • 流表:catalog.orca_table.tableName

示例

授予 user1 用户在 myCatalog 中创建流图的权限。

grant("user1", ORCA_GRAPH_CREATE, "myCatalog")

授予 user1 用户删除 myCatalog 中流图的权限。

grant("user1", ORCA_GRAPH_DROP, "myCatalog")

授予 user1 用户操作流图权限。

// 授予用户操作 myCatalog 中所有流图的权限
grant("user1", ORCA_GRAPH_CONTROL, "myCatalog")
// 授予用户操作特定流图的权限
grant("user1", ORCA_GRAPH_CONTROL, "myCatalog.orca_graph.myGraph")

授予 user1 用户在 myCatalog 中创建流表的权限。

grant("user1", ORCA_TABLE_CREATE, "myCatalog")

授予 user1 用户删除 myCatalog 中流表的权限。

grant("user1", ORCA_TABLE_DROP, "myCatalog")

授予 user1 用户读取流表权限。

// 授予用户读取 myCatalog 中所有流表的权限
grant("user1", ORCA_TABLE_READ, "myCatalog")
// 授予用户读取特定流表的权限
grant("user1", ORCA_TABLE_READ, "myCatalog.orca_table.myTable")

授予 user1 用户写入流表权限。

// 授予用户写入 myCatalog 中所有流表的权限
grant("user1", ORCA_TABLE_WRITE, "myCatalog")
// 授予用户写入特定流表的权限
grant("user1", ORCA_TABLE_WRITE, "myCatalog.orca_table.myTable")

授予 user1 用户 管理 ORCA 的权限。

// 授予用户在 myCatalog 范围内的 ORCA 管理权限
grant("user1", ORCA_MANAGE, "myCatalog")
// 授予用户在全局范围内(即所有 catalog)的 ORCA 管理权限
grant("user1", ORCA_MANAGE, "*")

权限判定与生效规则

admin 用户为超级管理员(非普通管理员), 拥有所有 Orca 相关权限,不受任何权限校验限制。

创建流图或流表的用户自动成为该流图或流表的 owner,并拥有该流图或流表的全部操作权限。

在创建新流图时,系统会对其内所引用的流表进行权限校验,只有同时拥有被引用流表的读写权限,流图才能成功创建。

拥有 ORCA_MANAGE 权限的用户,自动拥有该 Catalog 下的所有 Orca 权限,无需再对单个流图或流表单独授权。

当 Catalog 级权限(大范围)与流图 / 流表级权限(小范围)同时存在时,权限生效遵循以下规则:

  • 若先对小范围资源进行授权、撤销或禁止操作,再对大范围资源设置权限,则小范围权限将失效,由大范围权限统一覆盖。

  • 若先对大范围资源设置 allow,再对小范围资源设置 deny,则 deny 操作生效,其余未被 deny 的范围仍保持 allow。

  • 若先对大范围资源设置 allow,再对小范围资源执行 revoke,则 revoke 操作不生效,大范围 allow 仍然生效。

  • 若先对大范围资源设置 deny,再对小范围资源执行 revoke,则 revoke 操作不生效,大范围 deny 仍然生效。