NodeJS作为Web架构中间层的使用
截至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(服务端)
NodeJS作为Web架构中间层的使用相关推荐
- 多形态MVC式Web架构:完成实时响应
\ 本文要点 \\ 在Web时代的前二十年,在用户视图及其现实或虚拟世界间的MVC可观察的事件驱动同步已经不再发挥什么作用了. \\t 近期的一些新进展使这一基础理念得以在Web开发社区复苏. ...
- 百度架构师高并发web架构分析
本文主题是高性能的Web架构,着重于从如何打造快速响应.应对高并发.高吞吐.让用户感受到非常快的体验的角度来进行阐述的,实际上,对于一个好的 Web 架构来说,除了高性能这个指标外,还必须兼顾高可用. ...
- web架构设计经验分享
本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本文是这次参会与众同撩交流的心得,有兴趣者可以查 ...
- Web架构师必备能力
最近和几个朋友在谈到时下流行的Web 2.0,也提到了其中最重要的角色--架构师.多方各有争执,不外乎是因为背景和视角的缘故,包括架构一词,本身就从建筑学借鉴而来,至于架构师,则可以简单地从建筑学的设 ...
- nginx+keepalived高可用web架构
nginx+keepalived高可用web架构 1.下载所需的软件包 (1).keepalived软件包keepalived-1.1.20.tar.gz (2).nginx软件包nginx-1.1. ...
- Web 架构师的能力(转)
文/刘如鸿 最近和几个朋友在谈到时下流行的Web 2.0,也提到了其中最重要的角色--架构师.多方各有争执,不外乎是因为背景和视角的缘故,包括架构一词,本身就从建筑学借鉴而来,至于架构师,则可以 简单 ...
- web架构设计经验分享 (转)
< DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> ...
- 可扩展Web架构与分布式系统
1.1. web分布式系统的设计原则 搭建和运营一个可伸缩的web站点或者应用程序意味着什么?在原始层面上这仅仅是用户通过互联网连接到远程资源-使系统变得可伸缩的部分是将资源.或者访问的资源,分布于多 ...
- 【CyberSecurityLearning 52】Web架构安全分析(web工作机制、HTTP协议)
目录 Web 工作机制 网页.网站 Web容器 静态页面 中间件服务器 数据库的出现 建立一个网站 HTTP 协议概述 概述 特点 URL HTTP 报文分析 HTTP 工作模式 REQUEST 请求 ...
最新文章
- mysql安装ZIP存档什么意思_关于MySQLzip安装常见报错解决方案!
- EventBus设计与实现分析——特性介绍
- 浅谈飞鸽传书实现原理
- Vue 组件 data为什么是函数
- 《Java遗传算法编程》—— 1.8 参数
- Windows环境上装在VM,VM安装CentOS7
- JDK6中synchronized优化之自旋锁、锁擦除、锁粗化
- 春运前夕探秘动车所里的“动车体检医生”
- wps中设置公式编辑器字体颜色
- 克拉夫斯曼高端定制 刘霞---【YBC中国国际青年创业计划】
- 查询失败,后台服务器运行错误,添加网络打印机错误?怎么处理?Windows 无法连接到打印机。 服务器打印后台处理程序服务没有运行。...
- cad两直线相交画圆弧,CAD 两直线,怎么用圆弧连接?
- 在linux基础上开发内核,科学院在Linux内核基础上,开发出中文操作系统是()。A.中科LinuxB.熊猫LinuxC.红旗Linux...
- 为什么现在一些年轻人放弃缴纳社保?
- 简单的中文姓名生成器
- php获取搜索记录,PHP写的获取各搜索蜘蛛爬行记录代码
- android metal api,Metal 简述 API
- softlayer iso_在SoftLayer上使用Open edX构建在线学习平台
- 【设计模式】为别人做嫁衣 --- 代理模式
- 开店星简直就是国内优秀的开源商城系统天花板
热门文章
- 读取剪贴板英语转换为国际莫斯码
- oracle trace发起用户,Oracle 使用TRACE进行SQL性能分析
- 最大子序列求和_算法——求最大子段和
- 服务器用户配置文件在哪里找,管理远程桌面服务的用户配置文件
- sketchup生成面域插件_独家教程 | 快速抓取“高精准”场地信息,康石石教你生成不同“体量”地形...
- GPU Gems2 - 4 分段缓冲(Segment Buffering)
- Unity中date相关问题
- 批量下载哨兵(Sentinel)数据
- 李宏毅机器学习课程11~~~为何要深?
- 给 Flutter 界面切换来点特效