网控对象.常见问题.高并发下的网控运行逻辑

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

网控对象.常见问题.高并发下的网控运行逻辑

【场景】高并发场景下网控控制不准,如api同时对同一个单据 保存,同时调用审核 ![image.webp](/download/01000dbe45585e2e48688c564ea566ae31bd.webp) 【原理】 (0)数据库的分布式锁大部分都是通过唯一约束实现 (1)星空的网控实现逻辑 a 读取网控表中是否存在该单据的关联网控(如审核网控还会和修改网控互斥) b 当网控不存在时,向网控表插入网控记录 存在场景并发非常高的情况下,同时读取没有网控,且同时插入,导致两个操作都能申请到网控,并发修改了单据数据。 ![image.webp](/download/01000925a9f4a6c84e88bb00b498358dce4b.webp) 【临时方案】 给网控表增加网控对象和单据内码的唯一约束,严格控制同一个单据同一个操作的并发逻辑 ![image.webp](/download/010043caab2d60e74ab0a8c6cfe32ead7b65.webp) ```sql IF NOT EXISTS (SELECT 1 FROM (SELECT sysobjects.NAME AS TABLE_NAME, sysindexes.NAME AS INDEX_NAME FROM sysobjects INNER JOIN sysindexes ON sysindexes.ID = sysobjects.ID) AS KSQL_INDEXES WHERE INDEX_NAME = 'UNIQUE_BAS_NETWORKCTRLRECORDS') BEGIN ALTER TABLE T_BAS_NETWORKCTRLRECORDS ADD CONSTRAINT UNIQUE_BAS_NETWORKCTRLRECORDS UNIQUE (FNETCTRLID, FINTERID) END; ``` 说明:由于网控的设计,通过此方案仅限制网控对象同一个的操作,也就是 FNETCTRLID (比如并发对同一个单据审核、反审核) 【效果】 由于出现了唯一约束异常,证明符合本文论证观点,且能够准确强控单据的同一个操作并发 ![image.webp](/download/0100669b454bdcdf41a5a2974561d9ea243b.webp)

网控对象.常见问题.高并发下的网控运行逻辑

【场景】高并发场景下网控控制不准,如api同时对同一个单据 保存,同时调用审核![image.webp](/download/01000dbe45585e2e48688c564ea566a...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息