你有一个运行的Node.js服务器,接受来自外部的连接(通过Socket.io,但它无关紧要)。每次建立连接时,都会创建“实例”结构,然后在全局Instances数组中复制实例。这部分是异步的。
创建的每三个实例,你都会将它们全部交给另一个进程,并将它们标记为“已提升”(或删除它们,或其他内容,你明白了)。
问题是,如果连接将在一个不连续的时间段内到达,比如100毫秒一个接一个地到达,它将会很顺利。如果它们几乎同时到达,那么很可能你最终会在缓冲区中拥有着名的三个实例,事实上,由于实例对象的创建和缓冲是异步的,所以实际上还有很多实例已经到达。 / p>
你能想出一种缓解这个问题的方法吗?
(我会在Redis中缓存实例,而不是在内存中缓存,但在这种情况下,我会遇到一些严重的序列化问题。每个实例对象的方法都非常丰富)