Domain Cloud Native

作者 actionbook5c40d3ad7851无许可证1.5K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库6周前更新

Use when building cloud-native apps. Keywords: kubernetes, k8s, docker, container, grpc, tonic, microservice, service mesh, observability, tracing, metrics, health check, cloud, deployment, 云原生, 微服务, 容器

AI 生成的概览

为 Rust 云原生服务设计提供 12 要素、无状态、可观测性与优雅关闭等约束指导。

功能
该技能为构建云原生应用(主要是 Rust)提供领域约束。它把 12 要素配置、无状态设计、健康检查、优雅关闭和可观测性等规则映射为设计影响与 crate 选择。文档包含优雅关闭和健康/就绪端点的代码模式,以及常见错误和相关技能对照表。
适用场景
适用于设计或评审运行在容器或 Kubernetes 中的云原生服务。适合需要无状态设计、分布式追踪、指标、健康检查或优雅关闭的工作。它仅提供指导,不产出文件或脚本。
运行要求
无需脚本或特殊工具,仅为纯说明文档。代码模式涉及 tonic、kube、tracing、opentelemetry、prometheus、config、axum 等 Rust crate,但阅读这些指导无需安装任何内容。

Cloud-Native Domain

Layer 3: Domain Constraints

Domain Constraints → Design Implications

Domain RuleDesign ConstraintRust Implication
12-FactorConfig from envEnvironment-based config
ObservabilityMetrics + tracestracing + opentelemetry
Health checksLiveness/readinessDedicated endpoints
Graceful shutdownClean terminationSignal handling
Horizontal scaleStateless designNo local state
Container-friendlySmall binariesRelease optimization

Critical Constraints

Stateless Design

RULE: No local persistent stateWHY: Pods can be killed/rescheduled anytimeRUST: External state (Redis, DB), no static mut

Graceful Shutdown

RULE: Handle SIGTERM, drain connectionsWHY: Zero-downtime deploymentsRUST: tokio::signal + graceful shutdown

Observability

RULE: Every request must be traceableWHY: Debugging distributed systemsRUST: tracing spans, opentelemetry export

Trace Down ↓

From constraints to design (Layer 2):

"Need distributed tracing"    ↓ m12-lifecycle: Span lifecycle    ↓ tracing + opentelemetry
"Need graceful shutdown"    ↓ m07-concurrency: Signal handling    ↓ m12-lifecycle: Connection draining
"Need health checks"    ↓ domain-web: HTTP endpoints    ↓ m06-error-handling: Health status

Key Crates

PurposeCrate
gRPCtonic
Kuberneteskube, kube-runtime
Dockerbollard
Tracingtracing, opentelemetry
Metricsprometheus, metrics
Configconfig, figment
HealthHTTP endpoints

Design Patterns

PatternPurposeImplementation
gRPC servicesService meshtonic + tower
K8s operatorsCustom resourceskube-runtime Controller
ObservabilityDebuggingtracing + OTEL
Health checksOrchestration/health, /ready
Config12-factorEnv vars + secrets

Code Pattern: Graceful Shutdown

rust
use tokio::signal;
async fn run_server() -> anyhow::Result<()> {    let app = Router::new()        .route("/health", get(health))        .route("/ready", get(ready));
    let addr = SocketAddr::from(([0, 0, 0, 0], 8080));
    axum::Server::bind(&addr)        .serve(app.into_make_service())        .with_graceful_shutdown(shutdown_signal())        .await?;
    Ok(())}
async fn shutdown_signal() {    signal::ctrl_c().await.expect("failed to listen for ctrl+c");    tracing::info!("shutdown signal received");}

Health Check Pattern

rust
async fn health() -> StatusCode {    StatusCode::OK}
async fn ready(State(db): State<Arc<DbPool>>) -> StatusCode {    match db.ping().await {        Ok(_) => StatusCode::OK,        Err(_) => StatusCode::SERVICE_UNAVAILABLE,    }}

Common Mistakes

MistakeDomain ViolationFix
Local file stateNot statelessExternal storage
No SIGTERM handlingHard killsGraceful shutdown
No tracingCan't debugtracing spans
Static configNot 12-factorEnv vars

Trace to Layer 1

ConstraintLayer 2 PatternLayer 1 Implementation
StatelessExternal stateArc<Client> for external
Graceful shutdownSignal handlingtokio::signal
TracingSpan lifecycletracing + OTEL
Health checksHTTP endpointsDedicated routes

Related Skills

WhenSee
Async patternsm07-concurrency
HTTP endpointsdomain-web
Error handlingm13-domain-error
Resource lifecyclem12-lifecycle

来源与署名

来源:actionbook/rust-skills位于skills/domain-cloud-native提交5c40d3a

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架