3月31日 Java学习笔记

事件驱动架构(EDA)与CQRS模式

  1. 事件溯源(Event Sourcing)
    核心思想:通过事件流记录状态变化,而非直接存储当前状态。

代码示例:

java

public class Order {
private List events = new ArrayList<>();
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)实战

  1. 战术设计要素
    实体(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 products) {
// 复杂校验与逻辑
}
}
2. 限界上下文(Bounded Context)
上下文映射:使用康威定律划分微服务边界。

通信方式:REST API、gRPC、领域事件。

posted @ 2025-03-31 23:27  头发少的文不识  阅读(13)  评论(0)    收藏  举报