我正在构建在Unix机器上运行的Web服务器,方案如下:
用户可以使用他/她的手机拍照并上传到服务器,然后服务器将运行图像处理可执行文件来处理图像(识别图像)并将结果返回给用户的手机。
node.js是否适合这种情况?或者其他技术是否合适?
我主要担心的是并发性。图像处理可执行文件是用C ++编写的应用程序,我只想从node.js调用应用程序并返回结果。但是,node.js不是多线程的,对吧?这意味着必须一个接一个地处理上传的图像。有可能并行吗?
答案 0 :(得分:1)
Node.JS可以使用C扩展在后台工作。 (许多模块如hiredis也编译为C)。
Node.JS是事件驱动的,这也是它为单线程的原因。它非常适合与I / O或网络延迟有关的并发任务,因为它是单线程事件,在执行另一个操作之前不需要等待第一个操作。
什么Node.JS不适合像cpu密集型操作,如图像处理和提供静态文件。您可以通过fork一个新进程来扩展节点(节点有集群库来执行此操作。)但您必须有一个通道来自己在每个进程之间进行通信。我建议redis处理中央数据。