什么是好的方式来处理用户输入并发?

作为回答 这个问题 已排除的数据库锁,你怎么处理并发用户输入的一般?

是锁定总是一个坏主意,即使它不是实施的行锁?是否有最佳做法而不是使用情况下受抚养的?什么是你的经验你的策略?

编辑: 我知道的处理并发数据的水平,通过交易:如果两个用户simultanteously触发一个复杂的数据的变化,交易的将处理它。

但我感兴趣的是,在处理或至少使他们在GUI层。如果什么数据变化是一个漫长的操作中与用户互动?

让我们说有两个或更多的用户正在编辑的同一文件通过一个网络界面。在某些时点之一,用户命的救按钮。什么happes的其他用户?

  • 他们会得到通知和/或被迫重新装?或将最终复盖变化的第一个用户?
  • 我锁定的文件和防止多个用户编辑的同一文件?
  • 我可以把整个编辑过程中的交易(我非常怀疑,但谁知道...)

什么是最好的方式来处理这种和类似的情况吗?是否有任何其他战略?

有帮助吗?

解决方案

最佳的战略取决于什么 应该 发生(商业)过程的透视也非常重要的问题是什么,用户通常期望是什么惊喜他们的少,并且,当然,是否可行,以实现他们的期望。

你的编辑的文件 随着网络 可细分如下:

  1. 1检查 出/获取/downloads/打开了文件0
  2. 用户2检查 出/获取/downloads/打开了文件0
  3. 1改变他的副本 文件0
  4. 用户2改变他的副本 文件0
  5. 1节省文件版本v1到服务器
  6. 用户2节省文件版本v2到服务器

注意,这是典型的网络应用程序,并的确对正常的桌面办公室的程序,也是最新的变化,用户只能成为提供(他人)后,它们保存的,这意味着它不是一个具有同事的打字出现在你的复制的文件的编辑。

一个典型的版本控制的方法是,用户1没有什么变化,因为相比,正常的桌面剪辑/节约进程。

用户2,但是,当他试图保存v2服务器的应用程序必须检查是否已经有任何更改文件的版本0由于最后用户下载了它。由于这种情况下,一个版本控制系统时通常会给他看两个版本(v1和v2)在屏幕上,并让他混合他们和保存生成版本(v3),以服务器。

对于文本的文件,存在着一定数量的工具和系统的两on Unix and Windows,尝试的过程自动化,所以,如果该区域的文件编辑不重叠,改变合并。

该替代方法是锁定的文件用户2至1已编辑完成。

把编辑在交易是通常没有相关性。这是最后的操作,它试图复盖的现有文件的新版本,这是重要的。编辑发生独立于每个用户工作站和不接触的服务器直至最后一点(节能).


你的例子是,顺便说一句,明显不同的另一种情况,例如预订的机票或预约医生。

预订的机票,数量有限的个席位中的一面。它是可能的,事实上,由于数据转移实际上是不instanteous对于多于一个人把一项保留相同的最后一座在飞机上。

因此,订房应至少有2分步骤的过程:

  1. 系统显示了免费槽;
  2. 用户要求一个免费的插槽 (s1);
  3. 系统告诉用户是否隙 是真的还是免费的,如果是这样, 保留给你。
  4. 用户完成的预订。

对"真正仍然是免费的"步骤是因为信息的网页上用户意见通常不是实时更新,使之间,步骤1和2,这是可能的,另一个用户有用的免费隙。

其他提示

看看如何处理"交易"在任何语文/数据库API您使用。如果你设计的这些正确的,它将处理它。

和理解的理论,我建议 分布式系统通过Couloris et al 但还有很多其他的好书。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top