关于 event-driven
面向采用事件驱动架构的开发者,介绍事件溯源、CQRS、Saga 和事件总线等模式。资料包含事件重建、分布式事务协调及 Kafka 和 Symfony 代码示例。
主要功能
- 01事件溯源与状态重建
- 02CQRS 读写模型分离
- 03Saga 编排与协作模式
- 04Kafka 事件总线示例
- 05Symfony 领域事件示例
适用场景
- 01从事件日志重建应用状态
- 02将读取模型与写入模型分离
- 03协调微服务间的分布式事务
- 04通过事件触发领域操作
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ thebeardedbearsas/ claude-craft --skill event-driven安装后在 Claude Code 中输入/event-driven确认已加载。
详细介绍
事件驱动——事件溯源、Saga、CQRS
用于解耦和扩展性的事件驱动架构。
模式
事件溯源 — 存储事件,而非状态(审计、重放)
CQRS — 分离读写模型(投影)
Saga — 分布式事务(微服务)
事件总线 — 解耦的发布/订阅(Kafka、RabbitMQ)
事件溯源
events = [OrderCreated(...), OrderPaid(...), OrderShipped(...)]
def rebuild(events):
state = {}
for e in events: state = apply(state, e)
return state
Saga — 编排与协同
协同 — 事件串联服务(解耦,但调试困难)
编排 — 中央协调器(清晰,但耦合)
Choreo: OrderCreated → Payment → Shipping
Orchestrator: ProcessPayment() → ShipOrder()
Kafka 事件总线
// Producer
producer.send({ topic: 'orders', messages: [{ ... }] });
// Consumer
consumer.run({
eachMessage: async ({ message }) => {
handleEvent(JSON.parse(message.value));
}
});
领域事件(Symfony)
class OrderCreatedEvent {
public function __construct(public Order $order) {}
}
class SendEmail {
public function __invoke(OrderCreatedEvent $e) {
$this->mailer->send($e->order->email, 'Confirmation');
}
}
参见 @.claude/rules/21-cqrs.md、@.claude/skills/async/SKILL.md
评论
支持 Markdown