我一直在搜索是否有一种方法来处理Express.js的大规模HTTP请求。我知道Node.js从版本13开始就有"工作人员"来做多线程,但是在处理多个HTTP请求到单个端点方面,我该如何去做和扩展?
例如,如果同时有10,000个请求,则另一个线程将打开并处理其他请求以加快进程。它是自动完成的还是我需要在它上面配置一些东西?
谢谢!
Express.js采用事件循环理念设计,期望每个请求-响应周期占用可忽略不计的总CPU时间(忽略由于I/O而导致的任何等待时间)。这允许一个Express.js服务器来有效地应对许多请求一个线程。要做到这一点,任何需要超过可忽略不计的CPU时间的请求都需要创建一个Worker线程,或者生成一个进程,以便在事件循环线程之外进行计算。这个责任落在程序员身上。
如果你的Express.js应用程序仍然无法跟上请求的数量,即使遵循这种哲学,解决方案是使用负载平衡器在其水平之上扩展,无论是在web服务器级别(例如Apache httpd的mod_load_balancer),还是在DNS级别。