简介:NBF是阿里巴巴供应链中台的基础技术团队打造的一个技术PaaS平台,她提供了微服务FaaS框架,低代码平台和中台基础设施等一系列的PaaS产品,旨在帮助业务伙伴快速复用和扩展中台能力,提升研发效能和对外的商业化输出。事件中心就是NBF系列技术产品中的一员。本文首先介绍事件驱动架构的概念及适用场景,然后会介绍事件中心产品的设计和实现。
作者 | 林晖
来源 | 阿里技术公众号
一 业务背景
电商平台供应链的业务场景非常复杂,技术中台需要支持非常复杂且不断变化的业务需求,构建了数量繁多且紧密耦合的业务链路,为技术架构的维护带来了压力。
1 问题描述
上图是一个典型的业务架构,A域是上游域,B域和C域是下游域。A域在收到外部调用请求时,首先同步调用B域的服务接口完成同步业务逻辑,然后发送消息通知到MQ。C域异步消费消息后,反向调用A域的接口查询详细信息,完成异步业务逻辑。
这种架构的问题包括:
- A域强依赖B域的接口,B域接口变动会导致A域调用失败,而A域无法管控B域的接口变动;
- C域收到消息后需要反查A域的接口,对A域形成了双重依赖,A域接口和消息格式的任何变动及不稳定性都会影响C域;
- A域的消息和接口都是瞬时数据,两者由于时间差可能不一致,增加了C域处理的复杂度(例如:C域收到的消息是单据已创建,调用接口时查到该单据已完结);
- A域需要保证同步调用和消息通知的一致性,包括MQ不可用等情况发生时的容灾处理
面对这些问题,我们希望应用事件驱动架构的特性来解耦子域,降低业务链路复杂度,构建稳定并向前兼容的事件契约,从而提升全域的稳定性。
2 事件驱动架构的应用过程
- 重新梳理全链路业务流和业务活动,建立统一的标准语言;
- 定义标准的事件格式和通用基础字段;
- 各域定义包含完整业务语义、自闭包、多租户的领域事件;
- 开发并接入一套适应供应链业务特点的事件系统(NBF事件中心);
3 关于NBF
NBF[1] 是阿里巴巴供应链中台的基础技术团队打造的一个技术PaaS平台,全称是New-Retail Business Factory,她提供了微服务FaaS框架,低代码平台和中台基础设施等一系列的PaaS产品,旨在帮助业务伙伴快速复用和扩展中台能力,提升研发效能和对外的商业化输出。事件中心就是NBF系列技术产品中的一员。
本文首先介绍事件驱动架构的概念及适用场景,然后会介绍事件中心产品的设计和实现。
二 什么是事件驱动架构(EDA)
1 领域事件
很多同学会将事件和消息混淆。在业务系统中,事件指的是领域事件,而消息可以是任意数据或数据片段。领域事件的特点包括:
- 与服务接口一样有完整的schema,并保证schema向前兼容;
- 是业务流程的一部分,由业务动作触发,包含了完整(或部分但有独立语义)的业务状态变化;
- 事件消费者接收到事件后,相应修改自身的业务状态,并按需发出新的事件;消费者需要保证所有事件最终消费成功,否则会导致业务流程不完整;