用途
该技能面向使用 Rust 构建云原生应用的场景,属于 Rust 技能体系中的第三层——领域约束(Domain Constraints)。它把云原生领域规则映射为具体的设计约束和 Rust 实现方式,帮助开发者在架构与编码阶段遵循云原生最佳实践。
主要能力
技能围绕以下领域规则展开:
- 12-Factor:配置来自环境变量,采用基于环境的配置方式。
- 可观测性:指标与追踪,使用 tracing 与 opentelemetry。
- 健康检查:存活/就绪检查,提供专用端点。
- 优雅关闭:干净终止,处理信号。
- 水平扩展:无状态设计,不保存本地状态。
- 容器友好:小体积二进制,发布优化。
关键约束包括:
- 无状态设计:规则是不使用本地持久状态,原因是 Pod 可能随时被杀死或重新调度,Rust 实现上应使用外部状态(Redis、数据库),避免 static mut。
- 优雅关闭:规则是处理 SIGTERM、排空连接,原因是实现零停机部署,Rust 实现上使用 tokio::signal 加优雅关闭。
- 可观测性:规则是每个请求都必须可追踪,原因是调试分布式系统,Rust 实现上使用 tracing span 与 opentelemetry 导出。
使用方式
技能给出了从约束到设计(第二层)的追踪路径,例如:
- “需要分布式追踪” → m12-lifecycle:Span 生命周期 → tracing + opentelemetry
- “需要优雅关闭” → m07-concurrency:信号处理 → m12-lifecycle:连接排空
- “需要健康检查” → domain-web:HTTP 端点 → m06-error-handling:健康状态
同时列出了常用 crate:
- gRPC:tonic
- Kubernetes:kube、kube-runtime
- Docker:bollard
- Tracing:tracing、opentelemetry
- Metrics:prometheus、metrics
- Config:config、figment
- Health:HTTP 端点
设计模式包括:gRPC 服务(服务网格,tonic + tower)、K8s Operator(自定义资源,kube-runtime Controller)、可观测性(调试,tracing + OTEL)、健康检查(编排,/health、/ready)、配置(12-factor,环境变量 + 密钥)。
技能提供了代码模式示例,包括优雅关闭(使用 tokio::signal、axum 的 with_graceful_shutdown)和健康检查模式(/health 返回 OK,/ready 检查数据库 ping 后返回 OK 或 SERVICE_UNAVAILABLE)。
常见错误及修复:
- 本地文件状态 → 违反无状态 → 使用外部存储
- 无 SIGTERM 处理 → 硬杀死 → 优雅关闭
- 无追踪 → 无法调试 → tracing span
- 静态配置 → 不符合 12-factor → 环境变量
从约束到第一层的追踪:无状态 → 外部状态 → Arc 用于外部;优雅关闭 → 信号处理 → tokio::signal;追踪 → Span 生命周期 → tracing + OTEL;健康检查 → HTTP 端点 → 专用路由。
适用场景
适用于使用 Rust 开发云原生应用的场景,包括微服务、gRPC 服务、Kubernetes Operator、容器化服务等,尤其关注无状态、优雅关闭、可观测性和健康检查等云原生要求。
限制
资料未提供该技能的安装方式、收费模式、平台支持范围或具体使用步骤。相关技能包括 m07-concurrency(异步模式)、domain-web(HTTP 端点)、m13-domain-error(错误处理)、m12-lifecycle(资源生命周期)。