扫码阅读
手机扫码阅读

并发分析太难?4个处理机制帮你干掉并发问题

84 2024-03-26



#
产品经理必须知道的99个事



第1期:两个用户同时操作一个数据怎么处理

通常情况下,系统会有多个用户,并且这些用户可能会共享某些数据。当两个用户同时对同一份数据进行操作时,需要考虑如何处理这种情况。

然而,在许多需求分析中,可能没有明确提及这种场景,导致处理结果可能是随机的。这可能会给实际发生这种情况时的用户带来困扰。因此,为了提高用户体验,应该在系统设计中考虑到这种并发操作的情况,并采取适当的处理措施。



需求分析原则:你不说清楚,我就肯定做错


Business Analysis





比如,在微信中,如果一个人发送了一个文件给另一个人,当接收者打开文件后,如果发送者发现发送了错误的文件,发送者可以撤回文件。然而,这个特性会导致接收者侧的文件也被撤回,从而无法继续阅读文件。

尽管这个特性给用户一定的安全感,在误发送文件时能够方便地撤回文件,最大程度地避免信息泄露造成的损失。

以下是一些常见的两个用户同时操作同一份数据时的处理机制:

1.无锁处理

通过记录操作数据的时间戳,确保两个用户不会相互干扰或阻碍对方的操作。在实际项目中,可以在操作数据时先校验时间戳是否已被其他用户修改,如果已发生变化,则本次操作失败。

2.乐观锁处理

允许多个事务同时对数据进行操作,但在提交更新时才会检测数据是否发生冲突。如果检测到冲突,则向用户返回异常信息,让用户决定如何处理。

例如,在银行业务中,两个用户同时操作同一银行账户,一个用户尝试扣除金额,另一个用户尝试存入金额。乐观锁机制可以确保这两个操作在并发环境中正确执行,避免数据不一致的问题。

3.悲观锁处理

悲观锁认为每次数据访问都可能被其他线程修改,因此在每次数据修改时会尝试给数据加锁,确保其他线程无法对数据进行操作。一旦数据被锁定,其他用户必须等待锁释放后才能对数据进行操作。

4.实时同步处理

实时同步处理机制会在一个系统对数据进行修改时,立即将修改的数据实时同步到其他系统或数据库中,以确保数据的一致性。常用的方式是通过消息队列来实现实时同步处理,避免数据不一致或重复录入等问题。

原文链接: http://mp.weixin.qq.com/s?__biz=Mzk0MzM2OTQzOA==&mid=2247485423&idx=1&sn=ca192c76b628c042a5284e62b1dfa854&chksm=c335ba5ef44233485fb4e50f731a68b7bfb677eb30d62072f2b226a6352c51a5c38ee37beabf#rd