2

我正在尝试实现扑克服务器。http 服务器将数据包转发到处理所有扑克手状态的后端服务器。在任何一手牌中,玩家行动的时间为 10 秒(下注、弃牌、跟注、加注等)。如果 10 秒内没有响应,服务器会自动为他们折叠。为了检查 10 秒是否已经过去,维护了必须接收动作的事件列表。这是一个按时间排序的优先级队列,当前正在玩的每一手牌在优先级队列中都有一个条目。

考虑以下场景,因为最后一个动作在下一个动作到达 http 服务器之前 9.99 秒过去了。当操作被转发到后端服务器时,额外的时间过去了,所以现在总共过去了 10.1 秒。后端服务器将宣布手折叠,但我希望处理该操作,因为从技术上讲它在 9.99 秒后到达 http 服务器。现在一种解决方案是让后端在宣布弃牌之前等待一些额外的时间,以查看时间戳为 9.99 秒的动作是否到来。但这会导致下一个人开始行动的时间延迟。

我想要的目标是

  1. 处理在 9.99 秒到达 http 服务器的操作,而不是折叠他们的手。
  2. 积极减少由于必须进行空闲等待以“解决”要点 1 中提到的问题而导致的延迟。

有哪些不同的解决方案?对于分布式系统的专家来说,有关于各种解决方案的权衡是什么的已知文献。我想知道分布式系统文献认为可以接受的各种解决方案。不仅仅是各种临时解决方案。

4

1 回答 1

0

当客户端请求到达时,也许在服务器端您可以获取时间戳?所以你会用“开始”和“停止”时间戳来精确测量 9.9 秒?

于 2012-02-25T19:49:17.050 回答