Skip to content

事件驱动

事件驱动其实就是数据流架构

例:订单

传统流程

创建订单后需要:

发短信
发邮件
更新排行榜
更新推荐系统
更新统计系统
触发风控
触发审计

事件驱动:状态变化 → 产生事件

订单服务只做一件事:写订单、发布事件

go
func CreateOrder() {
    saveOrder()

    publishEvent("OrderCreated")
}

其他系统 订阅 OrderCreated 自己处理

数据库变动

Write -> DB -> 发布事件 -> 其他系统订阅处理

其他系统可能不在需要查询数据库。

三层

Event Layer
   Kafka

State Layer
   PostgreSQL
   Redis

Query Layer
   ClickHouse
   ElasticSearch