我有一个关于双向数据同步的查询。方案是,我们在PowerBuilder开发的本地网络上运行ERP软件,数据库是 software 16,还有我们的云软件是用net6开发的,数据库是Azure SQL。此外,我们还开发了一个基于.net的中间件,它与我们的API和本地数据库交互。在进行了像发票生成这样的操作之后,我们需要保证产品数量与本地DB和云DB一样准确。操作是否发生在云或本地网络中。请分享你的想法。
发布于 2022-11-08 16:32:10
这种方法将取决于您是否愿意牺牲一致性或并发性。
如果您愿意牺牲一致性(在您的情况下是可以接受的),我相信对于某些用例,比如同步云的本地发票,您的中间件可以异步地确保这两个数据库是同步的。
如果您愿意牺牲并发性(在签出之前确保产品的数量是准确的),那么您基本上可以使用锁来确保产品是可用的,而不是由其他人签出的。这有减慢系统速度的缺点,因为在处理以前的请求时,多个请求将等待。
至于实际的实现本身,您可以为中间件可以接收的每个事务使用一个队列,并为第一个选项进行同步。对于第二个选项,您需要对API/中间件需要获取的每个产品在提交更改之前使用某种分布式锁。
根据应用程序的规模和业务KPI,您必须决定如何处理第二个选项。下面是another SO thread,它对各种基于您愿意牺牲的方法进行了适当的讨论。
https://stackoverflow.com/questions/73342898
复制相似问题