mcpField
D
ddd-microservices

ddd-microservices

github.com/partme-ai开发71681 次安装3 周前更新
代码仓库

关于 ddd-microservices

面向采用领域驱动设计构建微服务的开发者,涵盖服务边界、聚合、通信方式、数据归属与一致性策略。

主要功能

  1. 01将限界上下文映射为服务
  2. 02定义聚合与领域事件
  3. 03选择同步或异步通信
  4. 04明确各服务的数据归属
  5. 05规划最终一致性与 Saga 模式

适用场景

  1. 01拆分服务前识别服务边界
  2. 02设计 REST、gRPC 或事件契约
  3. 03规划跨服务一致性
  4. 04明确每个服务的数据库归属

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/partme-ai/full-stack-skills --skill ddd-microservices

安装后在 Claude Code 中输入/ddd-microservices确认已加载。

附带文件LICENSE.txt

详细介绍

适用场景

当用户希望执行以下操作时,使用此技能:

  • 使用 DDD 定义微服务边界(限界上下文、聚合、领域事件)
  • 设计服务间契约和事件驱动通信
  • 实现跨服务一致性、查询和运维策略
  • 在同步(REST/gRPC)和异步(事件/消息传递)通信之间做出选择

使用方法

工作流
  1. 映射限界上下文,以确定自然的服务边界
  2. 定义聚合,在每个服务内确保数据一致性
  3. 设计通信方式:查询和强一致性场景使用同步通信;解耦场景使用异步通信(领域事件)
  4. 确保数据所有权:每个服务拥有自己的数据库;通过 API 或事件共享数据
1. 限界上下文到服务的映射
E-Commerce Domain:
├── Order Service        ← Order bounded context
│   ├── Order aggregate
│   └── OrderPlaced event
├── Inventory Service    ← Inventory bounded context
│   ├── Product aggregate
│   └── StockReserved event
├── Payment Service      ← Payment bounded context
│   ├── Payment aggregate
│   └── PaymentCompleted event
└── Notification Service ← Cross-cutting
    └── Subscribes to all domain events
2. 同步通信(Feign/gRPC)
@FeignClient(name = "inventory-service")
public interface InventoryClient {
    @GetMapping("/api/products/{id}/stock")
    StockInfo getStock(@PathVariable String id);
}
3. 异步通信(领域事件)
// Order Service publishes
@Transactional
public void placeOrder(PlaceOrderCommand cmd) {
    Order order = Order.create(cmd);
    orderRepository.save(order);
    eventPublisher.publish(new OrderPlacedEvent(order.getId(), order.getItems()));
}

// Inventory Service subscribes
@EventListener
public void onOrderPlaced(OrderPlacedEvent event) {
    inventoryService.reserveStock(event.getItems());
}
4. 每个服务使用独立数据库
Order Service      → order_db (PostgreSQL)
Inventory Service  → inventory_db (PostgreSQL)
Payment Service    → payment_db (PostgreSQL)

最佳实践

  • 在拆分为服务之前,先清晰定义限界上下文;避免过早拆分
  • 使用领域事件表达跨聚合和跨服务的事实;确保幂等性和顺序性
  • 为每个服务定义明确的 SLA、数据所有权和故障边界
  • 优先采用带补偿事务(Saga 模式)的最终一致性,而非分布式事务

资源

关键词

DDD 微服务、限界上下文、聚合、领域事件、服务边界、Saga 模式、CQRS、每个服务独立数据库、最终一致性、API 网关

评论

支持 Markdown