欢迎来到苏州企桥网络科技有限公司官网!
咨询电话:0512-65982570    服务热线:189-1350-2379
观察行业视觉 用我们专业的角度 讲出你们的心声
NEWS CENTER ·
新闻中心
关注企桥网络 关注前沿
做网站技术之Node.js 究竟是什么?
发表日期: 2018/7/17 15:14:34 新闻类别: 互联网课堂

    如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?” 即便是在参阅 Node 的主页之后,您甚至可能还是 不明白 Node 为何物?Node 肯定不适合每个程序员,但它可能是某些程序员一直苦苦追寻的东西。


    为试图解释什么是 Node.js,本文将简要介绍一些背景信息:它要解决的问题,它如何工作,如何运行一个简单应用程序,最后,Node 在什么情况下是一个好的解决方案。本文不涉及如何编写一个复杂的 Node 应用程序,也不是一份全面的 Node 教程。阅读本文应该有助于您决定是否应该继续学习 Node,以便将其用于您的业务。


    Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。当前的服务器程序有什么问题?我们来做个数学题。在 Java™ 和 PHP 这类语言中,每个连接都会生成一个新线程,每个新线程可能需要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。随着您的客户群的增长,如果希望您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。当然,这会增加服务器成本、流量成本和人工成本等成本。除这些成本上升外,还有一个潜在技术问题,即用户可能针对每个请求使用不同的服务器,因此,任何共享资源都必须在所有服务器之间共享。鉴于上述所有原因,整个 Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器能够处理的并发连接的最大数量。


    Node 解决这个问题的方法是:更改连接到服务器的方式。每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程(并为其分配一些配套内存)。Node 声称它绝不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。Node 还宣称,运行它的服务器能支持数万个并发连接。


    现在您有了一个能处理数万个并发连接的程序,那么您能通过 Node 实际构建什么呢?如果您有一个 Web 应用程序需要处理这么多连接,那将是一件很 “恐怖” 的事!那是一种 “如果您有这个问题,那么它根本不是问题” 的问题。在回答上面的问题之前,我们先看看 Node 的工作原理以及它的设计运行方式。


网站最主要的功能是发布消息,但这个消息不是永久保存了,而且保存的时间不会太长,预计消息的长度也不会太长,因此使用 redis 来存储是比较合适。


由于对后端数据库这一块还不太熟悉,目前也就对 PostgreSQL 用得多点,因此在存储用户的注册信息这一块就选择了 PostgreSQL。


登录这一块打算使用 JWT 来做,因此无需保存用户状态到 PostgreSQL 数据库中,这样可以减少对数据库的操作。


后端选用 Node.js + koa + koa-router,另外由于现在 async/await 已经正式进入 ES2017 了,就打算使用 async/await 优化异步代码的结构。


前端准备做成单页应用,于是选用 preact + redux + redux-thunk。


前端的代码通过 webpack 打包,而后端的代码通过 rollup 打包(选用 rollup 打包是由于 Node.js 6+ 已经基本支持 ES2015 了,这里只需要将各个模块打包在一起,顺便把 async/await 转换成 Node.js 可以运行的代码就可以了,而这个工作非常合适 rollup 来做)。


Copyright Qiqiao technology Co., LTD. All Rights Reserved.

备案号:苏ICP备14003577号 苏公网安备32050802010301号

  • qq客服
  • qq客服
  • 手机版