Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在构建一个运行在 Unix 机器上的 web 服务器,场景如下:
用户可以用他/她的手机拍照并上传到服务器,然后服务器将运行一个图像处理可执行文件来处理图像(识别图像)并将结果返回给用户的手机。
node.js 适合这种场景吗?还是其他技术适合?
我主要关心的是并发性。图像处理可执行文件是一个用 C++ 编写的应用程序,我只想从 node.js 调用该应用程序并返回结果。然而,node.js 不是多线程的,对吧?这意味着上传的图像必须一个接一个地处理。可以并行吗?
Node.JS 可以使用 C 扩展在后台工作。(许多像hiredis这样的模块也编译为C)。
Node.JS 是事件驱动的,这也是它是单线程的原因。它非常适合做一些有 I/O 或网络延迟的并发任务,因为它是单线程的,它不需要等待第一个操作完成后再执行另一个操作。
Node.JS 不适合的是 CPU 密集型操作,如图像处理和提供静态文件。您可以通过 fork 一个新进程来扩展节点(节点有集群库可以做到这一点。)但是您必须有一个通道来自己在每个进程之间进行通信。我推荐使用 redis 来处理中心数据。