microservices-architect by jeffallan/claude-skills
npx skills add https://github.com/jeffallan/claude-skills --skill microservices-architect专注于云原生微服务架构、弹性模式和卓越运维的高级分布式系统架构师。
根据上下文加载详细指导:
| 主题 | 参考 | 加载时机 |
|---|---|---|
| 服务边界 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
references/decomposition.md |
| 单体应用分解、限界上下文、DDD |
| 通信 | references/communication.md | REST vs gRPC、异步消息传递、事件驱动 |
| 弹性模式 | references/patterns.md | 断路器、Saga、舱壁、重试策略 |
| 数据管理 | references/data.md | 每个服务独立的数据库、事件溯源、CQRS |
| 可观测性 | references/observability.md | 分布式追踪、关联 ID、指标 |
const { v4: uuidv4 } = require('uuid');
function correlationMiddleware(req, res, next) {
req.correlationId = req.headers['x-correlation-id'] || uuidv4();
res.setHeader('x-correlation-id', req.correlationId);
// 附加到日志记录器上下文,使每一行日志都包含该 ID
req.log = logger.child({ correlationId: req.correlationId });
next();
}
在每个出站 HTTP 调用和 Kafka 消息头中传播 x-correlation-id。
pybreaker)import pybreaker
# 在 5 次失败后打开;在半开状态下 30 秒后重置
breaker = pybreaker.CircuitBreaker(fail_max=5, reset_timeout=30)
@breaker
def call_inventory_service(order_id: str):
response = requests.get(f"{INVENTORY_URL}/stock/{order_id}", timeout=2)
response.raise_for_status()
return response.json()
def get_inventory(order_id: str):
try:
return call_inventory_service(order_id)
except pybreaker.CircuitBreakerError:
return {"status": "unavailable", "fallback": True}
// 每个步骤定义 execute() 和 compensate(),以便自动回滚。
interface SagaStep<T> {
execute(ctx: T): Promise<T>;
compensate(ctx: T): Promise<void>;
}
async function runSaga<T>(steps: SagaStep<T>[], initialCtx: T): Promise<T> {
const completed: SagaStep<T>[] = [];
let ctx = initialCtx;
for (const step of steps) {
try {
ctx = await step.execute(ctx);
completed.push(step);
} catch (err) {
for (const done of completed.reverse()) {
await done.compensate(ctx).catch(console.error);
}
throw err;
}
}
return ctx;
}
// 用法:订单创建 saga
const orderSaga = [reserveInventoryStep, chargePaymentStep, scheduleShipmentStep];
await runSaga(orderSaga, { orderId, customerId, items });
livenessProbe:
httpGet:
path: /health/live
port: 8080
initialDelaySeconds: 10
periodSeconds: 15
readinessProbe:
httpGet:
path: /health/ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
/health/live — 如果进程正在运行,则返回 200。
/health/ready — 仅当服务可以处理流量时(数据库已连接、缓存已预热)才返回 200。
设计微服务架构时,请提供:
领域驱动设计、限界上下文、事件风暴、REST/gRPC、消息队列(Kafka、RabbitMQ)、服务网格(Istio、Linkerd)、Kubernetes、断路器、Saga 模式、事件溯源、CQRS、分布式追踪(Jaeger、Zipkin)、API 网关、最终一致性、CAP 定理
每周安装数
1.0K
仓库
GitHub 星标数
7.3K
首次出现
2026年1月21日
安全审计
安装于
opencode848
gemini-cli813
codex797
claude-code775
github-copilot766
cursor734
Senior distributed systems architect specializing in cloud-native microservices architectures, resilience patterns, and operational excellence.
Load detailed guidance based on context:
| Topic | Reference | Load When |
|---|---|---|
| Service Boundaries | references/decomposition.md | Monolith decomposition, bounded contexts, DDD |
| Communication | references/communication.md | REST vs gRPC, async messaging, event-driven |
| Resilience Patterns | references/patterns.md | Circuit breakers, saga, bulkhead, retry strategies |
| Data Management | references/data.md | Database per service, event sourcing, CQRS |
| Observability | references/observability.md |
const { v4: uuidv4 } = require('uuid');
function correlationMiddleware(req, res, next) {
req.correlationId = req.headers['x-correlation-id'] || uuidv4();
res.setHeader('x-correlation-id', req.correlationId);
// Attach to logger context so every log line includes the ID
req.log = logger.child({ correlationId: req.correlationId });
next();
}
Propagate x-correlation-id in every outbound HTTP call and Kafka message header.
pybreaker)import pybreaker
# Opens after 5 failures; resets after 30 s in half-open state
breaker = pybreaker.CircuitBreaker(fail_max=5, reset_timeout=30)
@breaker
def call_inventory_service(order_id: str):
response = requests.get(f"{INVENTORY_URL}/stock/{order_id}", timeout=2)
response.raise_for_status()
return response.json()
def get_inventory(order_id: str):
try:
return call_inventory_service(order_id)
except pybreaker.CircuitBreakerError:
return {"status": "unavailable", "fallback": True}
// Each step defines execute() and compensate() so rollback is automatic.
interface SagaStep<T> {
execute(ctx: T): Promise<T>;
compensate(ctx: T): Promise<void>;
}
async function runSaga<T>(steps: SagaStep<T>[], initialCtx: T): Promise<T> {
const completed: SagaStep<T>[] = [];
let ctx = initialCtx;
for (const step of steps) {
try {
ctx = await step.execute(ctx);
completed.push(step);
} catch (err) {
for (const done of completed.reverse()) {
await done.compensate(ctx).catch(console.error);
}
throw err;
}
}
return ctx;
}
// Usage: order creation saga
const orderSaga = [reserveInventoryStep, chargePaymentStep, scheduleShipmentStep];
await runSaga(orderSaga, { orderId, customerId, items });
livenessProbe:
httpGet:
path: /health/live
port: 8080
initialDelaySeconds: 10
periodSeconds: 15
readinessProbe:
httpGet:
path: /health/ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
/health/live — returns 200 if the process is running.
/health/ready — returns 200 only when the service can serve traffic (DB connected, caches warm).
When designing microservices architecture, provide:
Domain-driven design, bounded contexts, event storming, REST/gRPC, message queues (Kafka, RabbitMQ), service mesh (Istio, Linkerd), Kubernetes, circuit breakers, saga patterns, event sourcing, CQRS, distributed tracing (Jaeger, Zipkin), API gateways, eventual consistency, CAP theorem
Weekly Installs
1.0K
Repository
GitHub Stars
7.3K
First Seen
Jan 21, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode848
gemini-cli813
codex797
claude-code775
github-copilot766
cursor734
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
103,800 周安装
| Distributed tracing, correlation IDs, metrics |