嗨,我们尝试实施一个过程,例如当用户做某事时,他的公司的信用将被相应地扣除。
但是当一个公司中的多个用户参与此过程时会出现并发问题,因为信用卡被扣除错误。
任何人都可以指出这个问题的正确方向吗? 非常感谢。
答案 0 :(得分:0)
这是一个完全独立于实现语言的经典问题。
您有一个维护持久数据存储的共享资源。 (这通常是一个数据库,可能是一个RDBMS)。
您还有一个(业务)流程,用于和/或修改共享数据存储中维护的信息。
当这个过程可以由多个参与者同时执行时,就会出现信息完整性问题。
解决此问题的最常见方法是序列化对共享资源的访问,以便针对共享资源的操作按顺序发生。
此序列化可以在actor级别进行,也可以在共享资源本身进行,并且可以采用多种形式,例如排队操作,使用消息传递,或使用共享资源上的事务。在这里,诸如系统类型,应用程序以及所使用的平台和系统等考虑因素变得重要并决定整个系统的设计。
查看此wikipedia article on db transactions,然后按照您的方式了解有关此主题的更多技术内容。您可能还希望了解一下消息系统,如果您有冒险精神,还可以阅读software transactional memory。