我需要设计一个实时的产品库存管理引擎(C# & WCF),但我不知道如何处理并发访问和数据完整性。
下面是引擎应该处理的一些特性:
preparation
可以使用MSMQ以确保正确的库存计数(消息池按顺序处理的消息),也可以使用应用程序线程锁定。
请注意,我的应用程序必须是实时的,预制者必须实时知道有多少产品有库存。如果在挑选时缺少产品,他可以向运营商发送“请求”。
发布于 2009-11-06 19:30:00
正如Lee所说,您可能应该使用SQL数据库。如果您使用事务来存储订单并减少可用的产品数量(都在同一事务中),数据库将保证原子性。您可能还希望使用某种并发机制(如行版本)来防止不一致的值(第一个进程读取、第二个进程更新相同的值,然后第一个进程更新太过覆盖基于过时值的前一个更新)。
发布于 2009-11-06 19:06:55
使用SQL数据库。它们的设计考虑到了数据的完整性、并发性和数据存储。
发布于 2009-11-19 19:23:10
您所提到的场景通常是必须使用队列而不是持久存储来满足吞吐量需求的场景。在网上搜索时,您可以找到许多案例研究,其中人们使用排队系统来提高系统的吞吐量。SQL server不能扩展到这个级别。
在特殊情况下,当您需要使队列持久时,将使用非常特殊的方法来减轻性能影响。为了前夫。Apache的ActiveMQ有自己的特殊文件存储系统,它的性能比简单地使用MySQL进行后端持久性要好得多。也许MSMQ也提供了类似的选项,但我不确定。
https://stackoverflow.com/questions/1689375
复制相似问题