首页 > 关于nodejs作为中间层的疑问

关于nodejs作为中间层的疑问

初学前端没有多久,想要使用nodejs来写一个项目练手,并且想尽可能模拟一下复杂的系统

假设我有三个独立的部分,

  1. 浏览器端开发能力(css,js)

  2. 服务器端开发能力(nodejs)

  3. 数据库端开发能力(mySQL) (假设使用python)

尽量让这三个部分独立开发各自的部分,所以数据库部分从nodejs里分离出来,nodejs只做服务器实现路由和提供静态文件功能。我觉得这大概是这种模式的优点吧。
这个方案是我在网上查资料时看到别人有用到,nodejs作为中间层,python作为后台数据提供源。
之前我写过的练手的项目,都是后台单一种语言,使用框架整合静态文件,连接数据库完成,比如python的flask,nodejs的express框架**


现在有两个疑惑的地方
1.现在服务端这里nodejs和数据库分离,想问下具体如何实现?比如用户点击某按钮,浏览器端ajax请求nodejs某路由/showdata,那么这个路由应该访问数据库取出data并以json格式返回给浏览器,我不太明白python作为后台,如何提供一个接口给nodejs,nodejs直接访问.py脚本?还是说服务器上运行一个python程序?希望得到一个尽可能详细的答案。
2.这种模式相当于多了一层数据通信,速度会更快吗?后台使用java或者其他语言带来的速度优势,可以弥补这多出来的一层通信带来的延迟吗?或者说仅仅是因为分离便于独立开发?


可能你理解错了,nodejs写服务器端一般情况下是自己直接查询数据库并返回结果.没必要再通过python查找.多一次数据通信(python)一般是用来解耦的,所以一定会影响速度的,有得有失,具体要看你的业务类型。

如果你的流量很大需要用消息队列,那么这时候就可以用python做为消费机来处理用户的请求,nodejs只作为生产机相队列里放请求。


python那一层完全可以删去了,因为node只会比python的性能更强;node作数据库处理也很快;你现在又弄flask又弄express也是会有一些消耗,反而在开发上在资源都画蛇添足了。

node可以做专门的model层也是很容易,要处理数据去调这些类就行;

渲染还是交给react/redux这个模式是大家常用的性能效率最高的;


  1. python提供http接口给nodejs用。

  2. 速度会慢一丢丢,但是职责会更清晰。

这样做的好处是

1.一个Server端(Python)可以服务于多个Client端(Node|iOS|Android)。
2.某一端可以随意换实现代码,只要保证http接口一样,比如后端某天想换java,写好接口测试直接换,都不用通知前端童鞋。

可以这样架构

Python负责数据存取。
Node负责页面渲染,用户权限验证。


说下我们这边真实的架构体系吧,每天的PV量在3亿左右。

  1. nginx做静态文件处理,同时做请求转发。

  2. resin部署java做前端层处理

  3. 经常变动的模块和逻层单独抽离,部署nodeJS,采用React or其他模板引擎做逻辑处理和模板渲染

  4. 因为后端很多,所以后端业务语言和技术并不局限,但都是通过内网HTTP请求进行的沟通,在内网HTTP请求互相连接的速度开销非常小,如果这一块要求也很严格的话可以自己再写一套输出TCP或自定义协议传输方案。
    大体如下,具体细节划分起来的话很庞大:

【热门文章】
【热门文章】