3月31日 Java学习笔记
事件驱动架构(EDA)与CQRS模式
- 事件溯源(Event Sourcing)
核心思想:通过事件流记录状态变化,而非直接存储当前状态。
代码示例:
java
public class Order {
private List
private OrderStatus status;
public void apply(OrderCreatedEvent event) {
this.status = OrderStatus.CREATED;
events.add(event);
}
public void apply(OrderPaidEvent event) {
this.status = OrderStatus.PAID;
events.add(event);
}
}
2. CQRS(命令查询职责分离)
架构拆分:
命令端:处理写操作,更新事件存储。
查询端:从物化视图读取数据,优化查询性能。
技术栈:Axon Framework、Kafka Streams。
领域驱动设计(DDD)实战
- 战术设计要素
实体(Entity):具有唯一标识的对象。
java
public class Product {
@Id private ProductId id;
private String name;
// 业务方法
}
值对象(Value Object):无标识,通过属性定义。
java
public class Money {
private BigDecimal amount;
private Currency currency;
// 不可变方法
}
领域服务:跨聚合的业务逻辑。
java
public class OrderCreationService {
public Order createOrder(CustomerId customerId, List
// 复杂校验与逻辑
}
}
2. 限界上下文(Bounded Context)
上下文映射:使用康威定律划分微服务边界。
通信方式:REST API、gRPC、领域事件。
浙公网安备 33010602011771号