2

我们知道粘性会话使用 IP 地址的哈希来使每个客户端连接到同一个集群(或进程)。相反,我使用具有相同原理但更好的粘性集群。

那么……如果移动设备的 IP 发生变化怎么办? 我们也知道每一个移动设备移动,它的 IP 都可能改变。如果发生这种情况,握手协议将被破坏。

就我而言,因为我必须使用 socket.io 来制作 messenger 应用程序,所以我必须解决这个问题。

实际上,我向粘性集群开发人员 Denis Zhbankov 发送了电子邮件,他说
这是粘性会话的一个缺点,但是主人应该决定哪个工人在没有实际读取数据(标头,cookie ......)的情况下接收连接......不幸的是没有解决方案......所以我来到了这里。


但我试图找到解决方案。我希望它会帮助你提示。

function serverCreate () {
   var hash = require('string-hash');
  return require('net')
            .createServer({ pauseOnConnect: true }, function (connection) {
        var index = hash(connection.remoteAddress || '') % CONCURRENCY;
        workers.entrust(index, connection);
   });
}

这是粘性集群的代码示例。如您所见,它使用 ip 哈希,获取 idx,并将连接传递给工作人员 [idx]。(平衡)
在这里,我认为连接(参数)会有一些唯一标识符,可以代替ip。所以我解开了连接(套接字)对象。但是没有什么可以代替 ip ......
这太愚蠢了!:D




如果您有解决此问题的任何想法,请回答任何问题..;)

简短:使用粘性会话时,即使客户端 IP 在移动设备中发生变化,如何使客户端连接到同一个集群。

4

0 回答 0