【发布时间】:2012-02-10 01:02:25
【问题描述】:
例如,Zendesk 有一个名为 Agent Collision Notification 的功能 - 当您编辑工单时,如果其他人编辑此工单,您会收到一条注释。
支持此类功能的基础架构是什么? This question 的目标似乎是相同的,但水平要低得多。
为了使系统完全动态(也通知第一个查看者)和合理的快速,可能需要一些类似彗星或 websocket 的东西。但与聊天系统(一个主要的彗星示例)不同的是,票务系统中的用户会不断地切换页面。
这样的程序流程和服务器基础架构是什么?
【问题讨论】:
-
如何在客户端(comet、websockets、AJAX 等)实现这一点取决于您,但系统的根通常基于在表中有一个或两个额外的列保存您要执行此操作的记录。这种事情通常被称为“记录锁定”。您要么在记录上有一个布尔“锁定”列(简单)或两列,“lockwho”保存拥有记录的用户引用,“lockwhen”保存时间戳,以允许您解锁过期锁(复杂)。生成锁定消息时,只需检查这些列。
-
感谢您的指点。但我更多的是考虑不锁定的非正式警告行。对于锁定,我们使用时间戳和乐观锁定。