我正在设计一个Node JS程序来开发一个实时系统,该系统在数据输入端有10,000个套接字,在客户端应用程序侧有10,000个套接字(由于客户端应用程序/ Web应用程序可能未运行,所以是动态的)。
我将输入数据转换为可读的输出形式。例如,将模拟温度传感器的读数转换为摄氏度。
我将在Google Cloud Platform上托管它。
我的问题是Node JS服务器是否能够并行处理以下任务 1)注册网络套接字 2)固定/维修网络插座 2.1)更新内存中的数据 2.2)接受来信 3)转换数据 3.1)发送转换后的数据 4)每5分钟将数据转储到数据库
我的问题是Node JS是合适的技术还是我需要像Java这样的多线程技术
答案 0 :(得分:0)
我的问题是Node JS是否合适?
简而言之,是的,Node将起作用。
Node.js与大多数现代javascript框架一样,都支持asynchronous programming。程序“异步”是什么意思?好了,要了解异步的含义,最好是了解“同步”的含义。摘自Marijn Haverbeke的著作《口才的Javascript》,here:
在同步编程模型中,一次只发生一次。当您调用执行长时间运行的功能的函数时,它仅在该操作完成后才返回,并且可以返回结果。这将在执行操作的时间内停止程序。
换句话说,一次只能进行一次操作。如果我使用同步程序在县集市上运行售票柜台,将首先为客户1服务,然后为客户2服务,然后为客户3服务,依此类推。生产线前的每个人都会给所有其他人增加等待时间。
异步模型允许同时发生多种情况。当您开始操作时,您的程序将继续运行。操作完成后,程序将收到通知并可以访问结果。
回到售票柜台示例,如果异步完成,则所有排队的人都将同时得到服务,如果有其他排队的人,这对任何给定的人都没有多大意义。
希望这是有道理的。有了新的想法,让我们考虑如何实现异步程序。如前所述, Node确实支持异步程序,但是,对框架的支持还不够,您将需要有意地异步构建程序。
我可以提供一些深入的示例,说明如何在Node中完成此操作,但是我不确定您有什么要求/约束。随时在此回复的评论中添加更多详细信息,我们将为您提供更多帮助。如果您需要入门,请花一些时间查看promises和callback函数