截至2016年12月,中国网民规模已达7.31亿。传统的网站系统是否能够支撑得起如此庞大的且不断增长的用户访问并且为用户提供体验友好的页面?
一、传统的前后端:
二、传统的前后端分离问题:
性能问题:
1、渲染、数据都在客户端做,影响性能;
2、需要等待资源到齐才能进行,会有短暂白屏与闪动,尤其是网页由js生成的体验更差;
3、在低速网络情况下体验更差;
重用问题:
1、模版无法重用,造成维护上的麻烦与不一致;
2、逻辑无法重用,前端的校验后端仍须在做一次;
跨终端问题:
1、业务太靠前,导致不同端重复实现;
2、逻辑太靠前,造成维护上的不易;
即使使用CDN可以提高网站的响应速度,但是面对以上问题,尤其是用户关心的页面体验问题,传统的网站架构应对起来依然是捉襟见肘。这里提供一种使用NodeJS作为中间件的解决方案。
三、重新定义的前后端:
在服务器和浏览器之间增加了一个中间层
1、Node.js
Node.js是一个Javascript运行环境。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。Node.js是单进程、单线程运行机制,通过事件轮询(event loop)来实现并发操作,而且性能很好。
使用NodeJS作为Web中间层的优势:
a、跨系统、跨终端均可重用页面数据校验、逻辑代码,无需因为新系统、终端的接入而重写校验;
b、只在中间件中做一次数据校验,避免了前端做数据校验的同时后端也要做校验的重复,在有效保证数据的有效性的同时降低了团队整体的工作量;
c、处理数据逻辑,解放了前端既要做页面渲染又要写复杂的逻辑,使得页面开发人员专注于页面渲染,不仅使得分工更为明确,项目协作效率更高,更重要的是快速响应页面使得页面加载更快,用户体验更好,避免了浏览器长时间显示空白页面的不友好体验;
更多可能:
1)适用于高并发、短事务性数据请求处理的应用场景;
以下是nodejs处理请求提供web service服务与java对比:
Nodejs的高性能以及显著的io优势为架构提供了高可伸缩性。
2)技术框架:Sails 提供了建立任何规模的 web 应用所需要的所有功能,特别适合对数据实时更新有较高要求的应用场景;Meteor框架是 Node.js 上非常出色的全栈框架,可以用它构建纯Javascript 的实时 Web 和 手机应用;Mean 作为一款全栈的开发框架,几乎代表了 Mongo DB,Express,Angular和
Node.js 的组合,几乎涵盖了应用开发的所有方面,其开箱即用的工具极大简化并加快了应用的开发,同时可用于任意大小和复杂度的应用开发。
案例见:天猫、淘宝等(中间层);网易pomelo(服务端)