![](/img/trans.png)
[英]nodejs Worker_thread vs Promise.all or allSettled()
[英]nodejs | worker_thread | keep alive tcp connection within workers?
使用节点12中的worker_threads是否适合在worker中建立远程连接并使这些连接保持活动状态?
我并不是要像在节点cluster
和fork
那样在master
和workers
之间sharing
套接字。
想法是要在工作人员中已经建立安全连接池,以在需要时使用。
假设我有10名工人。 创建工作程序后,将创建到服务器X,Y和Z的一些预先建立的“ TLS”连接(流),并将该工作程序标记为“就绪”
每次我使用工作进程来处理“繁重的”任务(mapReduce等)时,如果在此过程中需要向服务器X,Y或Z发布数据或从服务器X,Y或Z获取数据,我都会使用适当的“ TLS”连接已从池中建立。
任务完成后,结果将返回给主服务器,而工作人员只需执行新/下一个任务。
1)您看到这样做的副作用吗?
2)在“主线程”(主线程)上拥有“ TLS”连接池会更好。 如果在任务执行期间在工作人员中需要“远程”数据,请使用“ postMessage”方法与“主”进行通信(反之亦然)。
谢谢
辅助线程不适用于远程连接。 但是,您可以使用TLS套接字构建自己的类似系统。 在这样的系统中,我绝对会建议保持这些类型的连接处于活动状态。 设置这些连接会有很大的延迟,并且使这些连接在内存中处于活动状态将占用最少的资源。
请记住,这样的系统有一些缺点:
因此,请记住这一点。
我是否建议构建这样的系统。 真的很难确定,它取决于您的用例,时间和金钱。 您提到群集节点正在处理“繁重的任务”,并且据此我认为CPU / GPU密集型任务。 因此,像这样的系统可能是一个很好的解决方案,但是,在处理服务器之前使用一个简单的rest API可能就足够了。 甚至是数据库同步服务器,它们只需检查数据库中要执行的任务即可。
对于同一问题有很多解决方案,只需要考虑哪种方法最适合您的项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.