事件驱动
事件驱动其实就是数据流架构
例:订单
传统流程
创建订单后需要:
发短信
发邮件
更新排行榜
更新推荐系统
更新统计系统
触发风控
触发审计事件驱动:状态变化 → 产生事件
订单服务只做一件事:写订单、发布事件
go
func CreateOrder() {
saveOrder()
publishEvent("OrderCreated")
}其他系统 订阅 OrderCreated 自己处理
数据库变动
Write -> DB -> 发布事件 -> 其他系统订阅处理
其他系统可能不在需要查询数据库。
三层
Event Layer
Kafka
State Layer
PostgreSQL
Redis
Query Layer
ClickHouse
ElasticSearch