项目位置/技术/需求
在交易流程建模方面,我们采用事件识别来满足订单状态变化频繁、模块协作关系清晰的要求
解决的问题
原有系统更多依靠同步调用组织业务流程,订单、库存、支付和通知逻辑相互穿插,如果继续沿用这种方式,一旦支付结果延迟或库存处理变慢,就容易影响用户主流程,后续排查状态变化原因也比较困难
解决的方法
为解决这一问题,我组织项目组从业务状态变化角度梳理关键事件,将订单创建、支付确认、库存处理、订单关闭和退款完成等定义为主要业务事件,并明确每类事件的触发条件、订阅范围和必要业务摘要
具体的实现
具体实现时,我们要求事件内容只携带订单标识、用户标识、业务状态和处理时间等关键信息,详细业务数据仍由相关模块按需查询,避免事件内容过重
例子
以用户提交订单为例,订单模块完成必要校验和订单记录后,即形成订单创建事件,库存和消息通知等后续处理不再全部阻塞用户请求
效果
通过事件识别,系统协作从直接调用转为状态变化驱动,交易流程的关键节点更加清晰,也便于后续对订单状态进行追踪和分析