更新时间:2021-08-13 10:24:13 来源:极悦 浏览2681次
对于大型应用程序,大多数性能瓶颈的罪魁祸首就 IO操作之一。这包括数据库操作(连接数、机器性能等)、缓存服务、网络 IO、文件读写等。如果IO生产者的性能出现瓶颈,不管你怎么分发,怎么堆机器,不管语言有多好,它都会窒息。
Node.js 是单线程还是多线程有不同的看法。添加 worker_threads 是否意味着 Node.js 已经接受多线程?并且仍然知道单线程会比多线程慢,但是为什么Redis单线程还是那么快,查询性能极高?以下是个人的看法,每个人都有不同理解的权利。请冷静评论……
我们来回答这个问题:“为什么刚诞生的Nodejs在高连接的情况下没有效果”,Nodejs做了哪些改进来解决这个问题?老实说,这篇文章很难让你马上理解,所以首先,如果你不知道以下短语,请你学习一下:
子进程
簇
worker_threads
事件循环
Node.js 通过提供用于创建子进程的集群和 child_process API 来提供“多线程”功能。但是这种创建进程的方式会牺牲共享内存并传递必须通过 JSON 传递的数据。(有一定的限制和性能问题)
基于此,V10.5.0 的 Node.js 提供了额外的 worker_threads,它比 child_process 或 cluster 更轻。与 child_process 或 cluster 不同,worker_threads 可以绕过 ArrayBuffers 或共享 SharedArrayBuffer 共享内存。以上就是让大家知道Nodej其实实现了多线程机制。
但在这种情况下,Node.js 多线程并不意味着与其他多线程编程语言(例如:java)相同。Node.js 的 worker_threads 与 java 的多线程不同。如果添加线程,语言本身的性质将发生变化,因此流不能作为一组新的内置类或函数添加。暂时明白了。
以上就是极悦小编介绍的"Nodejs解决高并发的方法",希望对大家有帮助,想了解更多可查看Java高并发解决方案。极悦在线学习教程,针对没有任何Java基础的读者学习,让你从入门到精通,主要介绍了一些Java基础的核心知识,让同学们更好更方便的学习和了解Java编程,感兴趣的同学可以关注一下。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习