收藏 分销(赏)

五个最佳案例带你解读Node.js的前后之道.docx

上传人:仙人****88 文档编号:9459828 上传时间:2025-03-27 格式:DOCX 页数:8 大小:522.19KB
下载 相关 举报
五个最佳案例带你解读Node.js的前后之道.docx_第1页
第1页 / 共8页
五个最佳案例带你解读Node.js的前后之道.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述
五个最佳案例带你解读Node.js的前后之道 Node.js 是什么? Node.js采用C++语言编写而成,浏览器内核V8做为执行引擎;Node不是JS应用、而是一个Javascript的运行环境。Node保留了前端浏览器js的接口,没有改写语言本身的任何特性,依旧基于作用域和原型链。 Node.js 是一个为实时Web(Real-time Web)应用开发而诞生的平台,它从诞生之初就充分考虑了在实时响应、超大规模数据要求下架构的可扩展性。这使得它摒弃了传统平台依靠多线程来实现高并发的设计思路,而采用了单线程、异步式I/O、事件驱动式的程序设计模型。这些特性不仅带来了巨大的性能提升,还减少了多线程程序设计的复杂性,进而提高了开发效率。 Node.js的特点 1、 一个Javascript运行环境 2、 依赖于Chrome V8引擎进行代码解释 3、 事件驱动 4、 非阻塞I/O 5、 轻量、可伸缩,适于实时数据交互应用 6、 单进程,单线程 Node.js能做什么? 1、 具有复杂逻辑的网站 2、 基于社交网络的大规模 Web 应用; 3、 Web Socket 服务器(页游,web IM); 4、 TCP/UDP 套接字应用程序; 5、 命令行工具; 6、 交互式终端程序; 7、 带有图形用户界面的本地应用程序; 8、 单元测试工具; 9、 客户端 JavaScript 编译器 Node.js架构 事件循环 NodeJs执行模型: 单线程Event Loop 当应用请求发生时,首先进入V8引擎,然后进入到事件队列,可以理解为他们在不断地在循环,看是否有任务,产生任务就去执行。上图是单线程模型。 NPM 后端在开发其他语言时,都有一些模块的概念或者第三方提供了很实用的小模块。同样,Node.js当时出来的时候也有这样一个仓库。这个仓库就是专门用来管理中国开发者的一个贡献的模块,而且发展非常的快。同样,前端有一些脚手件,在服务器这边运行的有debug,express,express-session,thrift,依托这个插件做thrift相关的事情,images其他的一些你想的到的插件,都是可以从它找到。 架构体系 上图是个推部分WEB平台的架构体系,个推有一套云组进资源,通过Nginx作为一个分发,Node可以有多个节点,通过session进入。每一个Node都有模式,相信大家在部署的时候肯定不可能部署一个节点,部署一个节点,否则这个节点挂了就是挂了。 Thrift使用 1、 定义接口 2、编译,生成对应的包,并上传到相应的库中 3、在Node中使用,如下: 注意:这里有个坑 thrift 中有个基本类型叫做 double (64位浮点数)。当定义成这个类型时,数据从 java 过来到 Node 会变成全是0。 解决方案 定义成 string 类型,之后特事特办,如必要则在 Node处再转成浮点数,或者直接由页面端处理。 IP负载(IP Load Balance) 负载均衡 分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。 原生中其并没有负载均衡的机制,但我们可以采用动态代理的设计模式,基于thrift client,利用JS的原型链来实现。 均衡的方式有很多种,我们使用轮询机制来实现访问多个Java节点。 session管理 Node本身并无session机制,我们可以使用express-session包来实现,同时通过redis来存储session。 连接池 传统读取数据库方式: 连接池需要做什么? 1、 连接预热 (启动时自动打开n个连接以供使用) 2、 使用 例如 轮转法 均匀分发 连接请求 3、 当池中的连接即将耗尽得时候动态产生新的连接 4、 当池中的连接一段时间没有被调用的时候,自动释放连接 5、 自动丢弃 已经坏掉的 连接 6、 系统关闭的时自动释放所有连接 基于此,我们也可以借助几个插件包(如generic-pool(node-pool)、node-thrift-pool,当然,如果你直接Node连接的DB,基本上那个包里面也会支持连接池)在Node使用连接池。 使用示例 利用Node可以做的事情 1、 做一些灰色地带的事情 利用Node可以做一些灰色地带的事情,因为它拥有前端的优点,可以异步,发起异步请求。给开发者带来很大的好处。不过,你需要管理好你的类型。如果说类型自己如果没有管理好就是会出现一些问题。同时它也可以做后端的一些事情。比如说连接池等等。 2、 模块更加分明 3、 可前可后便于分工 从浏览器过来的数据,通过Node把这一层数据转化成java需要的一种数据结构,就可以使得分工更加明晰。 4、 共用表单输入验证 如果你在写系统的时候,出于安全考虑,无论浏览器这边做了多少验证,你都要做输入验证。传统模式下是需要java同学写一份,前端同学写一份。因为Node跟java都是部署在服务器集群或者一个区域,你可以相信这两边之间一个数据。来自浏览器的验证,就可以共用表单输入验证,达到节省成本的目的。 以上内容来自个推web服务首席架构师姜季廷在3月12日SegmentFault D-Day 北京:后端的演讲整理而成。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服