并发分析太难?4个处理机制帮你干掉并发问题
第1期:两个用户同时操作一个数据怎么处理
通常情况下,系统会有多个用户,并且这些用户可能会共享某些数据。当两个用户同时对同一份数据进行操作时,需要考虑如何处理这种情况。
然而,在许多需求分析中,可能没有明确提及这种场景,导致处理结果可能是随机的。这可能会给实际发生这种情况时的用户带来困扰。因此,为了提高用户体验,应该在系统设计中考虑到这种并发操作的情况,并采取适当的处理措施。
比如,在微信中,如果一个人发送了一个文件给另一个人,当接收者打开文件后,如果发送者发现发送了错误的文件,发送者可以撤回文件。然而,这个特性会导致接收者侧的文件也被撤回,从而无法继续阅读文件。
尽管这个特性给用户一定的安全感,在误发送文件时能够方便地撤回文件,最大程度地避免信息泄露造成的损失。
以下是一些常见的两个用户同时操作同一份数据时的处理机制:
1.无锁处理
通过记录操作数据的时间戳,确保两个用户不会相互干扰或阻碍对方的操作。在实际项目中,可以在操作数据时先校验时间戳是否已被其他用户修改,如果已发生变化,则本次操作失败。
2.乐观锁处理
允许多个事务同时对数据进行操作,但在提交更新时才会检测数据是否发生冲突。如果检测到冲突,则向用户返回异常信息,让用户决定如何处理。
例如,在银行业务中,两个用户同时操作同一银行账户,一个用户尝试扣除金额,另一个用户尝试存入金额。乐观锁机制可以确保这两个操作在并发环境中正确执行,避免数据不一致的问题。
3.悲观锁处理
悲观锁认为每次数据访问都可能被其他线程修改,因此在每次数据修改时会尝试给数据加锁,确保其他线程无法对数据进行操作。一旦数据被锁定,其他用户必须等待锁释放后才能对数据进行操作。
4.实时同步处理
实时同步处理机制会在一个系统对数据进行修改时,立即将修改的数据实时同步到其他系统或数据库中,以确保数据的一致性。常用的方式是通过消息队列来实现实时同步处理,避免数据不一致或重复录入等问题。
回复【电子书】领取需求分析实用技巧。数万名产品经理、BA汇聚地,深入需求分析与产品设计、产品运营,帮助你提升产品思维与洞察能力。原创知识体系:可视化需求分析。