"Node.js仅限于一个线程“。当我们在多核心系统中部署时,nodeJS将如何反应?它能提高表演效果吗?
发布于 2014-02-28 18:34:04
在JavaScript引擎中运行的Node.js V8引擎是单线程的,但是底层的libuv多平台支持库是多线程的,这些线程将根据操作系统的调度算法通过操作系统在CPU核心上分布,所以当您的JavaScript应用程序在顶层异步运行(和单线程)时,您仍然可以在幕后受益于多核。
正如其他人所提到的,Node.js集群模块是一种在应用程序(JavaScript V8)级别利用多核并发性的极好方法,而且由于“JavaScript”是集群感知的,所以您可以让多个工作进程执行并发服务器逻辑,而无需为每个进程设置唯一的侦听端口。令人印象深刻。
正如其他人所提到的,您将需要Redis或等效的方法在集群工作进程之间共享数据。您还需要一个集群感知的日志记录工具,这样集群主进程和所有工作进程都可以登录到一个共享日志文件中。Node log4node模块是这里的一个很好的选择,它适用于日志旋转。
典型的web示例显示,使用运行时检测到的核心数作为要分叉的集群辅助进程的数量,但我更喜欢在config.yaml文件中设置配置选项,以便我可以根据需要调整运行主JavaScript应用程序的辅助进程的数量。
发布于 2014-02-28 13:20:32
Nodejs在一个线程中运行,但您可以启动多个nodejs进程。
例如,如果正在构建web服务器,则可以将每个请求路由到nodejs进程之一。
编辑:正如hereandnow78和vkurchatkin所建议的,使用多核系统电源的最好方法是使用nodejs集群模块。
发布于 2014-02-28 14:36:19
集群模块是解决方案。但是您需要知道,node.js集群是,它调用子进程。这意味着每个进程都不能共享数据。要共享数据,您需要使用Redis或其他IMDG跨集群节点共享数据。
https://stackoverflow.com/questions/22096067
复制相似问题