iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >node.js不适合大型项目的原因是什么
  • 319
分享到

node.js不适合大型项目的原因是什么

2023-06-14 22:06:29 319人浏览 泡泡鱼
摘要

这期内容当中小编将会给大家带来有关node.js不适合大型项目的原因是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 应用的组成一个完备的 WEB 应用可能只由一门语言或者一种技术构成吗?不可能。

这期内容当中小编将会给大家带来有关node.js不适合大型项目的原因是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1. 应用的组成

一个完备的 WEB 应用可能只由一门语言或者一种技术构成吗?不可能。因为一个完备的 Web 应用其实是多门技术的综合体,解决某个问题有非常多的解决方案,比如后端的逻辑解决方案就非常多,Java、PHPpython、Ruby 等都可以。

简单地概述,应用的组成内容可能包括:

Web 界面显示逻辑;后端业务逻辑;缓存数据库消息队列

其实还可以加入日志分析、数据分析等,只是上面几个最广为人知而已。

2. 应用的种类

I/O 密集型;CPU 密集型。

就常见的互联网产品而言,它的瓶颈并非在后端业务的逻辑上,而是在 I/O 上,即返回给用户看的数据的读入与输出。相对于应用程序而言,读入指的是从数据库里获取数据,而输出指的是将这些数据经过一定的处理输出到用户的浏览器,那么这就是 I/O 密集型。

而CPU密集型是指做频繁计算任务的应用,node.js在这方面确实是短板。

3. 应用服务的过程

如图所示,用户通过浏览器发送请求,由网卡接收tcp 连接,通知内核,内核再去调用相对应的服务端程序。

Request 请求过程

node.js不适合大型项目的原因是什么

Response 返回过程

如下图,Web 应用要返回数据,首先要获取数据,通过内核调用磁盘的驱动程序,把数据读入缓存,这样就可以在 Web 应用程序中获取数据并进行数据处理,最终调用内核,将数据通过网卡发送给客户端。

node.js不适合大型项目的原因是什么

4. 应用的瓶颈

通常 I/O 密集型的瓶颈会在磁盘的读写上,所以在购买云服务器的时候可以购买 SSD 的磁盘来提升性能,一般数据库软件的数据都是存储在文件上面的。首先考虑添加内存型缓存来解决这个瓶颈,缓存经常访问的数据,看能否解决当前场景的问题,比如使用 Redis。其次才考虑搭建或扩充数据库集群来提高并发

而 CPU 密集型的应用瓶颈则在 CPU 上,只能增加 CPU 处理核心来解决瓶颈。

5. 分布式应用

大型的普通应用与分布式应用其实是不同的概念。读者可以把分布式应用简单地理解为一个团队,每一个成员都是一个节点,一个大的项目要让成员合作完成,那么成员与成员之间就存在一些沟通成本,甚至有的成员与成员之间勾心斗角,说话阳奉阴违、推脱责任,也有可能成员生病在家休养,无法工作,等等。在面对这些问题的时候,Node.js的优势并不能很好地显现出来(并非不可以做,只是没有完善的基础设施)。

分布式的真正定义是,在多台不同的服务器中部署不同的服务模块,以进程为基本单位,派发到服务器上,通过远程调用(rpc)通信并协同工作,最终对外提供服务。

相比较Node.js目前的分布式基础设施,Go 语言的基础设施则完善多了,特别是在 Docker 这个项目上,充分证明了 Go 语言的优势,这也是为什么 Node.js 社区“大牛”TJ Holowaychuk 转向 Go 语言,因为他要开发分布式应用。

其实没必要过分地关心分布式的问题,毕竟javascript最初只是一个运行在浏览器端的脚本语言而已,JavaScript不是万能的,为什么一定要把它用在操作系统级别的开发上呢?寻找一个更合适的语言不是更好吗?就像此刻我们选择 JavaScript 构建 Web 应用一样。

6. 多进程的 Node.js

了解了以上的一些知识点,现在读者应该知道,Node.js 跟大型应用关系不大。大多数学习 Node.js 的开发者是前端开发者,所以对后端的基础知识并不了解,在网络上搜寻一些资料的时候发现 Node.js 只能利用单核,而又听说 TJ Holowaychuk 转向 Go 的阵营,所以有的开发者就产生了Node.js不适合开发大型应用的疑问。

Node.js 只能利用单核的问题已经被解决了,后面使用的 Egg.js框架中的 Egg-Cluster 模块就利用多进程非常好地解决了这个问题。

上述就是小编为大家分享的node.js不适合大型项目的原因是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: node.js不适合大型项目的原因是什么

本文链接: https://www.lsjlt.com/news/275372.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • node.js不适合大型项目的原因是什么
    这期内容当中小编将会给大家带来有关node.js不适合大型项目的原因是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 应用的组成一个完备的 Web 应用可能只由一门语言或者一种技术构成吗?不可能。...
    99+
    2023-06-14
  • 为什么node.js不适合大型项目
    目录前言1. 应用的组成2. 应用的种类3. 应用服务的过程4. 应用的瓶颈5. 分布式应用6. 多进程的 Node.js前言 首先要明确什么是大型应用,其实这是仁者见仁、智者见智的...
    99+
    2022-11-12
  • jOOQ项目存在的原因是什么
    本篇文章给大家分享的是有关jOOQ项目存在的原因是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。值得思考的是,为什么你应该(或者不应该)在某特定项目中使用JOOQ。具体讲,...
    99+
    2023-06-17
  • linux适合做服务器的原因是什么
    今天小编给大家分享一下linux适合做服务器的原因是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。适合原因:1、稳定性高...
    99+
    2023-06-30
  • github上项目下载不来是什么原因?怎么解决?
    作为程序员使用 github 是非常常见的,项目的开源与共享不仅方便了我们的学习和工作,同时也提高了代码的质量和安全性。然而在使用 github 时有时会遇到一些问题,比如在下载项目时,可能会遇到项目下载不下来的情况,本文将为你介绍 git...
    99+
    2023-10-22
  • Java不能真正泛型的原因是什么?
    目录简单来回顾一下类型擦除,看下面这段代码。为什么 Java 不能实现真正意义上的泛型呢?背后的原因是什么?第一,兼容性第二,不是“实现不了”总结简单来回顾一下类型擦除,看下面这段代...
    99+
    2022-11-12
  • Java项目中适配器模式的原理是什么
    Java项目中适配器模式的原理是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。适配器模式是把一个类的接口适配成用户所期待的,使得原本由于接口不兼容而不能一起工作的一些类可以...
    99+
    2023-05-31
    java ava 适配器模式
  • MySQL中不使用Text类型的原因是什么
    MySQL中不使用Text类型的原因是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。众所周知,MySQL广泛应用于互联网的OLTP(联机事...
    99+
    2022-10-18
  • 不能在PHP中使用泛型的原因是什么
    小编给大家分享一下不能在PHP中使用泛型的原因是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么我们不能在 PHP 中使用泛型我们将深入探讨泛型和 PHP...
    99+
    2023-06-29
  • 项目启动tomcat失败的原因是什么和怎么解决
    这篇“项目启动tomcat失败的原因是什么和怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“项目启动tomcat失败的...
    99+
    2023-06-30
  • linux硬链接不能链接目录的原因是什么
    今天小编给大家分享一下linux硬链接不能链接目录的原因是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。原因:引入了对目...
    99+
    2023-07-04
  • IDEA导入Spring-kafka项目Gradle编译失败的原因是什么
    小编给大家分享一下IDEA导入Spring-kafka项目Gradle编译失败的原因是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!异常信息java.lang.AbstractMethodErrorat or...
    99+
    2023-06-29
  • 在JAVA项目中组合模式的实现原理是什么
    今天就跟大家聊聊有关在JAVA项目中组合模式的实现原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。组合模式:将不同但是相关的对象组合成树形结构以实现“部分-整体”的层次结构,...
    99+
    2023-05-31
    java ava 组合模式
  • gitlab迁移数据后此项目仓库不存在原因和解决方法是什么
    这篇文章主要介绍“gitlab迁移数据后此项目仓库不存在原因和解决方法是什么”,在日常操作中,相信很多人在gitlab迁移数据后此项目仓库不存在原因和解决方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-05
  • 将项目语言从Python转向Go的5个原因分别是什么
    这篇文章给大家介绍将项目语言从Python转向Go的5个原因分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言Python是一个非常受欢迎的语言。但在企业世界中,能打的go并...
    99+
    2022-10-19
  • Javascript开发人员偏爱Deno而不是Node的5大原因是什么
    本篇文章给大家分享的是有关Javascript开发人员偏爱Deno而不是Node的5大原因是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。...
    99+
    2022-10-19
  • @PostConstruct在项目启动时被执行两次或多次的原因是什么
    本篇内容介绍了“@PostConstruct在项目启动时被执行两次或多次的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!@Post...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作