
1) 【一句话结论】
设计贸易业务中台,核心是通过事件驱动架构结合消息队列(如Kafka)实现系统间实时异步数据同步,采用Saga分布式事务保障流程一致性,并基于微服务+容器化(K8s)提升可扩展性,通过API网关与配置中心增强系统灵活性。
2) 【原理/概念讲解】
老师口吻解释关键概念:
3) 【对比与适用场景】
| 方式/模式 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 实时同步(消息队列) | 系统A操作后,通过消息队列发送事件,系统B消费事件 | 异步、解耦、高可用、低延迟 | 交易系统创建订单后,实时通知库存系统扣减库存(避免交易阻塞) | 需消息队列基础设施,确保消息不丢失 |
| 定时同步(ETL工具) | 定时任务从源系统拉取数据,写入目标系统 | 同步、批量、适合数据仓库 | 每日汇总交易数据到数据仓库,用于报表分析 | 适合数据量不大、对实时性要求不高的场景 |
| 事件驱动流程(Saga模式) | 系统A发布事件,系统B订阅并执行,若失败触发补偿事务 | 分布式事务,最终一致性 | 订单创建→库存扣减→物流派单(顺序执行,失败可回滚) | 需事件总线,补偿事务逻辑复杂 |
| API调用流程 | 系统A调用系统B的API接口 | 同步、强依赖、实时返回 | 交易系统调用库存系统API扣减库存(同步扣减) | 可能导致系统阻塞,适合低并发场景 |
4) 【示例】
伪代码展示Saga流程(交易系统创建订单→库存系统扣减库存→物流系统生成运单,含故障补偿):
交易系统(发布订单创建事件)
def create_order(order_data):
order_id = order_service.create(order_data) # 创建订单
kafka_producer.send('order-created', order_id, partition=1, key=order_id) # 分区1,key确保顺序
return order_id
库存系统(消费订单创建事件,扣减库存)
def consume_order_created(order_id):
inventory_service.deduct_stock(order_id, order_data['quantity']) # 扣减库存
kafka_producer.send('stock-deducted', order_id, partition=2) # 分区2,发布库存扣减完成事件
物流系统(消费库存扣减完成事件,生成运单)
def consume_stock_deducted(order_id):
logistics_service.create_shipment(order_id) # 生成运单
补偿事务(库存系统故障时触发)
def compensate_stock_deduct(order_id):
inventory_service.rollback_stock(order_id) # 回滚库存
logistics_service.cancel_shipment(order_id) # 取消运单
交易系统POST订单请求示例
POST /api/orders
Content-Type: application/json
{
"customer_id": "user123",
"items": [
{"product_id": "p1", "quantity": 2}
]
}
5) 【面试口播版答案】
面试官您好,设计贸易业务中台,核心是通过事件驱动架构实现系统间数据同步与流程协同,同时保障可扩展性。具体来说:
6) 【追问清单】
7) 【常见坑/雷区】