我正在尝试实现一个扑克服务器。 http服务器将数据包转发到后端服务器,后端服务器处理所有扑克牌手的状态。在任何给定的手中,玩家可以采取行动10秒(下注,弃牌,跟注,加注等)。如果在10秒内没有响应,服务器会自动折叠它们。要检查10秒是否已经过,必须保留必须接收操作的事件列表。它是按时间排序的优先级队列,当前正在播放的每个扑克牌在优先级队列中都有一个条目。
考虑以下情况,因为上一个操作在下一个操作到达http服务器之前经过9.99秒。当操作转发到后端服务器时,额外的时间过去了所以现在总共已经过了10.1秒。后端服务器将声明手动折叠,但我希望处理动作,因为技术上它在9.99秒后到达http服务器。现在一个解决方案是让后端等待一些额外的时间,然后再声明一只手折叠,以查看时间戳为9.99秒的动作是否到来。但是当手中的下一个人开始行动时,这会导致延迟。
我想要的目标是
有哪些解决方案?对于分布式系统的专家来说,已知有关于各种解决方案的权衡取舍的文献。我想知道分布式系统文献认为可接受的各种解决方案。不仅仅是各种临时解决方案。
答案 0 :(得分:0)
也许在服务器端,当客户端请求到达时,您可以采取时间戳? 那么你会采用“开始”和“停止”时间戳来准确测量9.9秒?