如何将Net套接字存储到数据库以保持节点js app无状态?

问题描述 投票:0回答:2

我的应用程序使用Net API(https://nodejs.org/api/net.html)套接字并接受来自客户端的连接,这些客户端不能使用任何其他方式进行通信而不是原始TCP套接字。

我正在尝试将pm2与我的应用程序一起使用,并将其聚类在我所有的cpu上。不幸的是,这不起作用,因为一个进程不能使用来自任何其他进程的内存存储套接字。

我正在寻找一种方法来保存每个数据库的连接,即使是内存存储也符合我的需求,只要我可以调用它并从任何其他进程再次使用它。

有人在这里问了几乎同样的问题,他被告知他应该只使用Redis来存储插座。但那个回答显然不知道怎么做的人。

问题在这里问:Will PM2 work with Node.js net API?

我的问题是我怎么能这样做?

其实我认为这是不可能的。我真正需要的是一种通过它的文件描述符号“重新创建”套接字对象的方法,该文件描述符号可以在数据库中保存为整数,但同样,这变得非常棘手。我有点被困在这里。文档没有说明它。

也许有另一种方法可以保持我的应用程序无状态?

非常感谢阅读,如果有人可以提供帮助,我会很高兴。

node.js sockets cluster-computing pm2
2个回答
1
投票

没有方法可以保存作为资源的特殊类型。

在数据库中,您可以保存重新创建它的方式(重新打开)。

但我认为在您的情况下,更好的解决方案是添加一个额外的层,以提供与描述符和集群的所有元素的通信。在您拥有的选项中:在节点进程或WebSockets之间交换事件。


0
投票

您可以做的是通过使用Unix域套接字在服务器进程之间传递文件描述符来共享文件描述符。看看实现Node.js传递文件描述符的usocket包。

© www.soinside.com 2019 - 2024. All rights reserved.