我的应用程序使用Net
API(https://nodejs.org/api/net.html)套接字并接受来自客户端的连接,这些客户端不能使用任何其他方式进行通信而不是原始TCP套接字。
我正在尝试将pm2
与我的应用程序一起使用,并将其聚类在我所有的cpu上。不幸的是,这不起作用,因为一个进程不能使用来自任何其他进程的内存存储套接字。
我正在寻找一种方法来保存每个数据库的连接,即使是内存存储也符合我的需求,只要我可以调用它并从任何其他进程再次使用它。
有人在这里问了几乎同样的问题,他被告知他应该只使用Redis来存储插座。但那个回答显然不知道怎么做的人。
问题在这里问:Will PM2 work with Node.js net API?
我的问题是我怎么能这样做?
其实我认为这是不可能的。我真正需要的是一种通过它的文件描述符号“重新创建”套接字对象的方法,该文件描述符号可以在数据库中保存为整数,但同样,这变得非常棘手。我有点被困在这里。文档没有说明它。
也许有另一种方法可以保持我的应用程序无状态?
非常感谢阅读,如果有人可以提供帮助,我会很高兴。
没有方法可以保存作为资源的特殊类型。
在数据库中,您可以保存重新创建它的方式(重新打开)。
但我认为在您的情况下,更好的解决方案是添加一个额外的层,以提供与描述符和集群的所有元素的通信。在您拥有的选项中:在节点进程或WebSockets之间交换事件。
您可以做的是通过使用Unix域套接字在服务器进程之间传递文件描述符来共享文件描述符。看看实现Node.js传递文件描述符的usocket包。