多个创建操作请求

时间:2016-12-20 09:04:34

标签: web-services rest design-patterns soap concurrency

是否有标准设计模式来解决服务器上的多个并发创建请求? 例如,多个客户端(来自浏览器/移动设备)可以调用web服务以在给定时间内为医生创建约会。虽然,webservice可以初步检查医生是否有空,然后创建,仍然存在竞争条件,并可能最终在后端创建多个约会。我们如何阻止服务器创建多个约会?鉴于web服务在多个服务器上运行,并且约会没有任何固定的时间。

1 个答案:

答案 0 :(得分:0)

我不确定任何模式。我能想到的一个想法。

1)添加支票以查看约会是否已存在:

  if Appointment.where(time:, docter_id:).exists? 
      raise 'appointment already exists'
  else
      create_appointment

由于并发性,以上内容可以传递not exists检查并结束重复约会。这个问题可能有两种选择,

i)在数据库约束级别执行检查。 docter_id的唯一索引,appointment_time可能是一个好的开始。如果出现错误,请处理它,因为它已经存在。最好在数据库级别强制执行约束逻辑,以确保从app / scripts到更新DB记录的一致性。

ii)第二个选项我可以想到对事务表的悲观锁定 - 我不建议创建一个记录。