本文讨论了餐饮直配业务中库存更新并发阻塞的问题。原因是WEBAPI对接采购入库单使用了自动提交审核参数和自动下推服务,导致事务过长、资源锁定,并发高时出现阻塞。解决方案是拆分大事务,避免使用相关参数和服务,并通过配置插件提前打上库存更新标识提升性能。
餐饮直配业务库存更新并发阻塞一种解决方案
背景:
系统集成中,使用WEBAPI对接的场景很多,很多项目初期要求快速上线使用了:IsAutoSubmitAndAudit 自动提交审核参数,此参数目前已知引发了太多的事务及性能问题,目前平台早已将此参数隐藏。
同时,针对餐饮行业发现存在客户一种直配的场景:WEBAPI对接采购入库单,对应单据审核上配置了自动下推服务(下推销售出库单),再由出库单自动提交审核。此事务非常长,在事务执行内会锁定很多资源无法及时得到释放,导致并发稍微一高,就出现大量阻塞。
解决:
要解决上述问题,就需要将大事务给拆开,这样系统才能支持一定量的并发请求。
(1).WEBAPI 对接时,避免使用 IsAutoSubmitAndAudit 自动提交审核参数。参考
(2).针对频繁调用WEBAPI 接口时,需要避免使用系统的 自动下推服务,此服务是在操作事务内执行,对于API频繁调用场景不适用。
场景:
针对餐饮直配业务:API调用采购入库单,并实时同步生成销售出库单的场景,此点针对库存来说一入一出均在同时发生,逻辑上来讲可以不用做库存的增加和扣减。从库存更新服务逻辑上看,提供以下方案,针对采购入库单、销售出库单单据类型(直配业务)配置:保存时则默认打上库存更新标识,这样直配单据初次审核时库存更新服务判断已更新库存,则可以跳过已提升对接性能。
影响:保证直配业务正常入库同时一定会生成出库,那此方案 和正常逻辑区别 就是初次审核时 库存标识已经打上,库存更新服务不做执行,对系统业务无影响。此点利用库存服务逻辑提前打上库存更新标识,在单据审核后,业务单据后台数据和正常单据审核保持完全一致,故对报表及二开取数也不影响。
步骤:
1.针对 直配业务(采购入库单单据类型判断),在采购入库单-保存操作-配置以下python插件(见附件:注意调整附件中 单据类型编码即可进行注册)
2.针对 直配业务(销售出库单单据类型判断),在销售出库单-保存操作-配置以下python插件(见附件:注意调整附件中 单据类型编码即可进行注册)
3.系统缓存管理清理缓存后 生效。
餐饮直配业务购销首次已更新库存.zip(0.80KB)