方案概述
背景信息
在应用开发过程中,常面临核心业务逻辑需要同时调用多个下游业务协同处理的情况,保证核心与下游业务执行结果一致,是事务管理的关键难题。
以某工厂业务流程为例,生产管理部发放生产工单这一核心操作,会带动生产部领料加工、采购部原材料采购等子系统联动。具体业务分支包括:
- 生产工单系统:状态由“待处理”转为“生产中”。
- 加工系统:新增产品加工记录与用料记录。
- 原材料采购:变更原材料数量,更新库存表。
传统普通消息方案,将工单系统变更设为本地事务,其余系统变更放于普通消息下游异步执行。但这极易造成分支间执行结果不一致。例如:
- 消息发送成功,工单执行失败,需要回滚事务。
- 工单执行成功,消息发送失败,需要额外补偿来修复。
- 消息发送超时,无法判断需要回滚工单还是提交工单。
为解决上述问题,实现各分支执行结果一致及操作统一协调,工业数字模型驱动引擎-数据建模引擎(xDM Foundation,简称xDM-F)提供事务型管理功能。它能编排多个原子接口,并与本地事务绑定,实现多接口提交结果的一致性,并提升接口调用速率和性能。
本方案基于v3版本的事务型接口进行说明。关于其他版本的事务型接口详情,请参见全量数据服务的 。
前提条件
在使用v3版本的事务型接口之前,您需要先在iDME控制台上开启事务支持功能。具体操作步骤请参见配置事务支持。
操作流程
主要操作流程 |
操作目的 |
---|---|
用于创建一个事务上下文,将后续所有操作绑定到同一事务中,确保这些操作要么全部成功,要么全部回滚。 |
|
在事务上下文中,执行一个或多个iDME原子接口的创建、读取、更新和删除(CRUD)操作。这些操作的结果将被设置为待提交的中间状态,根据最终的事务状态(提交或回滚),来确定是否使这些更改永久生效。 |
|
约束与限制
xDM-F提供了多个版本的事务型接口,各版本间的具体约束和限制如下:
- 不支持跨租户或跨数据源使用事务型功能。
- 不支持非数据库操作,例如文件上传。如需进行文件上传,请使用预签名URL上传的方式,具体操作请参见使用预签名URL分块上传文件。
- v1、v2和v3版本的事务型接口不可混合使用。
- v1版本事务型任务接口,最多支持执行5个原子接口。
- v2版本事务型任务接口,取消了异步提交事务型任务时原子接口的数量限制。
- v3版本事务型接口,最多支持执行10个原子接口。
- 在同一v3版本事务中,重复提交或回滚事务将不会生效。
- 在同一台设备(即同一个IP地址)上,每秒最多可以开启30个v3版本事务。
- v3版本事务型接口采用数据库长连接方式构建。使用时,请合理管理事务生命周期,并及时提交事务,以防止数据库锁长时间未释放导致系统吞吐量下降。