主用例说明:宿主调用插件
背景概述
PowerX 宿主为企业提供统一的业务编排与智能体运行平台,插件则承载各类垂直能力。若宿主缺乏对插件调用的标准化治理,常出现路由混乱、鉴权不一致、可观测性不足和故障恢复滞后等问题。本主用例聚焦“宿主调用插件”,梳理从调用路径管理、请求编排、重试熔断到多租户隔离的全链路,确保宿主能够安全、高可用地消费插件服务。
目标与价值
- 统一调用编排:提供标准的调用入口、协议转换与请求路由,降低插件接入成本。
- 租户级安全隔离:根据租户策略精准路由并执行访问控制,避免数据越界。
- 可观测与可恢复:构建调用指标、日志、链路追踪与自动化重试,提升韧性。
- 弹性扩缩容:依据调用压力调度插件实例,实现资源利用最大化。
参与角色
- 宿主编排服务(Core Services):发起插件调用、负责协议转换与安全校验。
- 租户策略引擎 / IAM 服务:根据租户与用户策略判断授权范围与限流规则。
- 插件网关 / Sidecar:管理插件实例路由、连接池与传输协议。
- 插件实例(Runtime):接收请求并返回业务处理结果或事件。
- 运维与 SRE 团队:监控调用链路、处理异常并制定恢复策略。
主场景 User Story
作为 PowerX 宿主编排服务,我希望 能够按照租户策略稳定地调用插件实例,从而 向终端用户提供一致、可靠的业务能力体验。
子场景详解
子场景 A:调用入口统一与协议编排
- 角色与触发:宿主接收到来自前端、Agent 或工作流的任务,需要调用插件能力。
- 主要流程:
- 宿主根据任务上下文选择目标插件能力并生成调用请求。
- 调用请求在 API Gateway / Orchestrator 中统一落地,完成鉴权、限流与参数校验。
- 编排服务根据插件声明的协议(gRPC、HTTP、MCP 等)适配序列化与头部信息。
- 将请求转交插件网关或 Service Mesh Sidecar,准备路由到具体实例。
- 成功标准:统一入口响应时间 <50ms;协议转换后保持幂等;调用上下文(Trace ID、租户 ID)完整传递。
- 异常与风控:参数校验失败直接阻断;鉴权失败返回 401/403;请求体过大触发拒绝并记录审计。
- 指标建议:入口 QPS、鉴权失败率、协议转换耗时。
子场景 B:多租户策略路由与隔离
- 角色与触发:宿主需根据租户策略决定调用目标实例与资源配额。
- 主要流程:
- 调用上下文携带租户 ID、用户角色、业务标签。
- 策略引擎校验租户是否授权该插件能力,并获取限流、地域、数据域等策略。
- 路由层根据策略匹配相应的插件实例池(同城/跨区、生产/测试)。
- 调用过程中注入租户隔离 Header / Token,并记录租户级调用指标。
- 成功标准:未授权租户调用被阻断;租户切换时路由正确;限流策略实时生效。
- 异常与风控:策略缓存失效时回退至权威配置;当租户实例不可用时触发降级(备用实例、Mock 响应)。
- 指标建议:租户授权命中率、限流触发次数、降级率。
子场景 C:调用链路可观测与重试熔断
- 角色与触发:宿主需要在调用失败或性能下降时自动恢复并告警。
- 主要流程:
- 调用请求通过分布式追踪记录 Trace/Span,并附带关键指标(延迟、状态码、payload 大小)。
- 若返回超时或 5xx,宿主根据策略执行重试(指数退避、最大次数控制)。
- 重试失败时触发熔断,将请求导向降级逻辑或返回友好提示。
- 异常事件同步到监控与告警系统,SRE 可快速定位问题实例。
- 成功标准:追踪日志完整;重试命中率可观测;熔断后自动恢复需要健康探针验证。
- 异常与风控:防止雪崩—重试策略需设置抖动;熔断与降级需避免影响其他租户;监控系统需隔离敏感数据。
- 指标建议:平均响应时间、重试成功率、熔断次数、MTTR。
子场景 D:异步任务与批量调用编排
- 角色与触发:宿主需要批量处理或异步执行插件任务。
- 主要流程:
- 宿主将批量任务拆分为消息或事件,投递至任务队列 / EventBus。
- 插件订阅任务并异步返回处理结果或回调。
- 宿主聚合结果并更新业务状态(如工作流节点完成、生成报表)。
- 对长耗时任务提供状态查询与取消接口。
- 成功标准:任务投递可靠(至少一次或恰好一次);结果聚合成功;长任务状态可追踪。
- 异常与风控:消息积压时触发扩容;回调失败时支持补偿;防止重复消费造成副作用。
- 指标建议:任务吞吐量、积压深度、回调成功率。
功能边界 & 非目标场景
- 不覆盖插件能力注册、授权审批流程,相关内容见“插件能力注册与暴露”主用例。
- 不讨论插件内部逻辑与调试流程,可参考“插件开发与调试”主用例。
- 宿主对外提供的公共 API 网关治理另属“系统监控与告警”,此处仅聚焦宿主到插件的调用闭环。
- 不包含插件主动调用宿主的回调场景,请参阅“插件调用宿主”主用例。
依赖与接口
- 宿主编排引擎 API:统一生成调用上下文、序列化与重试策略配置。
- 租户策略 / IAM 服务:校验授权、返回租户级限流与路由策略。
- Service Mesh / 插件网关:维护插件实例注册、健康检查、流量调度。
- 监控与日志平台:采集链路指标、触发告警、支持追踪查询。
- 任务队列 / EventBus(针对异步场景):承担批量任务与回调消息分发。
验收要点
- 宿主调用插件的统一入口具备鉴权、限流、协议转换能力,并支持至少 gRPC 与 HTTP。
- 租户级策略生效可验证:未授权租户被拦截,限流与地域策略可配置并即时生效。
- 调用链路具备可观测性:Trace、日志、指标三位一体,并能快速定位失败实例。
- 自动化恢复能力完善:重试、熔断、降级策略可配置,异常后能通知运维并支持快速恢复。
- 异步批量场景可执行:任务分发、状态回调与结果汇总流程完整,并支持超时/取消控制。
场景级测试用例示例
测试准备:在沙箱环境部署
host-core@1.4.0与插件insight-calculator@2.1.0,配置 Service Mesh(Istio)与租户策略服务。准备租户tenant-pro(已授权)与tenant-beta(未授权),并在监控平台开启调用追踪。
用例 A-1:gRPC 调用成功(正向)
- 前置条件:插件注册 gRPC 服务
CalcService.Compute,租户tenant-pro授权启用。 - 操作步骤:
- 宿主通过统一入口发起 gRPC 请求,携带 Trace ID 与租户 Header。
- Service Mesh 路由到就近插件实例。
- 预期结果:
- 返回 200/OK,响应时间 <300ms。
- Trace 平台可查看完整链路,租户调用计数 +1。
用例 A-2:协议转换失败(逆向)
- 前置条件:插件仅支持 gRPC,宿主误以 HTTP 方式调用。
- 操作步骤:
- 模拟错误协议请求。
- 预期结果:
- 统一入口返回 415 Unsupported Media Type,并记录错误。
- 不会触发下游插件实例。
用例 B-1:未授权租户调用阻断(逆向)
- 前置条件:
tenant-beta未在策略中授权该插件。 - 操作步骤:
- 使用
tenant-beta的上下文调用同一能力。
- 使用
- 预期结果:
- 返回 403 Forbidden,日志记录租户信息与阻断原因。
- 监控面板显示一次策略拒绝事件。
用例 B-2:限流策略生效(正向)
- 前置条件:为
tenant-pro设置每分钟 100 次的限流阈值。 - 操作步骤:
- 通过压测脚本在 1 分钟内发起 150 次请求。
- 预期结果:
- 前 100 次成功,后续请求返回 429 Too Many Requests。
- 限流日志记录触发时间与租户 ID,指标面板可见限流曲线。
用例 C-1:自动重试成功(正向)
- 前置条件:插件实例首次调用模拟 500 错误,第二次恢复正常。
- 操作步骤:
- 发起调用并观察宿主重试策略。
- 预期结果:
- 第一次响应 500,宿主在 200ms 后自动重试成功。
- Trace 显示两次调用,监控记录一次重试事件。
用例 C-2:熔断与降级(逆向)
- 前置条件:插件连续返回 500;熔断阈值设置为 3 次失败/30s。
- 操作步骤:
- 连续触发失败调用 5 次。
- 预期结果:
- 第 4 次后宿主触发熔断,返回降级结果并提示稍后重试。
- 监控告警发送给 SRE,熔断状态 60s 后自动恢复。
用例 D-1:异步任务结果聚合(正向)
- 前置条件:启用任务队列模式,插件支持异步回调。
- 操作步骤:
- 宿主一次性提交 50 个批量任务到队列。
- 插件处理完成后回调宿主结果。
- 预期结果:
- 队列无积压,所有任务状态在 5 分钟内更新为完成。
- 宿主生成聚合报表,并在监控中记录吞吐指标。
用例 D-2:回调失败补偿(逆向)
- 前置条件:模拟回调接口超时。
- 操作步骤:
- 插件回调宿主时故意返回超时。
- 预期结果:
- 宿主检测到失败后触发补偿任务重新拉取结果。
- 日志保留补偿记录,并在 10 分钟内完成数据对账。
