node作为中间层,是怎么提高并发处理能力的?
请教下各位大佬,node作为中间层,去请求后端接口处理后返给前端,既然它还是要去请求后端接口,那它的处理能力不是还是要取决于后端吗,它是怎么提高的并发性能呢?
4 回复
并未提高并发性能,而是提高对于并发请求连接的管理能力。
@waitingsong 您好,可以稍微具体描述下吗
异步非阻塞模式并非能提高处理性能,而是因为能接收并保持更多的请求连接,减小在网络磁盘IO等待上的消耗从而提高系统整体的响应能力。
nodejs 在中间层主要是做了两件事 1.转发 转发的话性能和nginx比还是有差距的,当初我们测试代理一个静态文件,并发数和nginx是有差距的,所以这一点不是核心竞争力 2.业务logic处理 现在在创业公司野蛮生长阶段都是nodejs直接做后端,在公司扩张稳定之后便会引用go或则java做基础服务,nodejs做业务层处理,这样做主要是解决以下几个痛点
- 很多基础服务,比如用户模块,组织模块的一些基础方法在多个项目中用到,并且变动小,所以需要沉淀出基础层,提高复用性
- 尽量避免很多node服务和数据库直连,保证数据库的安全性,安全性包括数据安全和性能安全。
- 部分公司用node做数据渲染,缓存,这样可以很大程度的前端体验 3.1. 比如后端返回的是json, 然后node把渲染好的页面直接返回给前端,这样能很大程度提高前端的体验 3.2. node 结合redis可以进行某些api数据的缓存,这样提高了api响应速度
- 在复杂的单页面运用中实现路由模块管理 4.1 比如我一个项目有订单模块和产品模块,其实是两个单页,通过访问不同的nodejs路由得到,这样不用一次性全部加载到前端,提高了用户体验