我开始学习nodejs一段时间了,关于它的很酷的事情是,无论开发人员写什么,都在一个线程上运行。
但是当我执行非阻塞文件I / O或网络I / O时,某些线程必须等待响应,而这是由底层V8架构完成的。
我们说nodejs进程在一个核心上运行,因为只允许一个线程,我们只需要多个线程,然后CPU可以将它们安排到不同的核心。
但是,当我们说nodejs进程在单个核心上运行时,是否意味着底层V8 javascript引擎也在单核上运行?所有节点进程都使用相同的V8 js引擎实例,还是像每个进程的单独支持一样?
这些问题都浮现在脑海中,因为我想为nodejs进程创建集群,我想知道我是否可以在n
核心机器上创建n
集群,还是应该留下重要的V8引擎的核心数量?
修改:找到一个回复http://blog.carbonfive.com/2014/02/28/taking-advantage-of-multi-processor-environments-in-node-js/的链接 "这些子节点仍然是 V8的全新实例。假设每个新节点至少启动30ms,内存为10mb。也就是说,你不能创造成千上万的。"
答案 0 :(得分:0)
将您的问题移至讨论论坛,因为这不适合讨论/分享'想法。
我找不到答案 - 如果使用了V8的单个实例。 [你的好问题]
以下评论是根据我的理解:
Thumb规则是,如果你有多个核心,那么使用cluster和allow node产生多个进程[每个核心一个]。事件机器本身将处理进程间通信。所以我认为V8实例将被共享。
继续使用node-redis-cluster,它将帮助您通过节点进程之间的redis共享数据。
集群是节点的战马。欢呼声。
答案 1 :(得分:0)
但是当我们说nodejs进程在一个核心上运行时,它就是这样 意味着底层的V8 javascript引擎也在运行 单核?所有节点进程都使用相同的V8 js引擎实例 或者它是否像每个过程的单独支持一样?
Nodejs使用V8引擎进行处理。而V8引擎则采用单线程设计。
如果我可以在n核心机器上创建n个集群,或者我应该留下一个 V8引擎的核心数量是多少?
我认为你应该使用整个可用的机器核心。但是,这都是你的选择。如果您不希望节点使用整个计算机核心,则设置将要使用的核心数。