更新時間:2021-08-13 10:24:13 來源:動力節點 瀏覽2872次
對于大型應用程序,大多數性能瓶頸的罪魁禍首就 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天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習