基于Node.js高性能高并發(fā)網(wǎng)絡(luò)應(yīng)用構(gòu)架的研究和實現(xiàn)
發(fā)布時間:2020-11-10 00:56
隨著Internet的普及以及大數(shù)據(jù)時代的到來,主流網(wǎng)絡(luò)應(yīng)用的日常訪問量已經(jīng)達到萬億級別。面臨海量的用戶并發(fā)訪問,如何保證網(wǎng)絡(luò)應(yīng)用用戶優(yōu)質(zhì)流暢的體驗成為網(wǎng)絡(luò)應(yīng)用待解決的難點之一。為了解決高并發(fā)問題,網(wǎng)絡(luò)應(yīng)用的體系構(gòu)架與設(shè)計需要從內(nèi)到外地改進和加強,令并發(fā)處理的能力從各方面得到提升。從內(nèi)部上,網(wǎng)絡(luò)應(yīng)用不僅要改進構(gòu)架設(shè)計而且也要對構(gòu)架內(nèi)應(yīng)用的重要算法進行改進,從外部上也需要運用第三方有利于提高并發(fā)能力的技術(shù)。與多線程編程模型比較,采用事件驅(qū)動異步I/O模型的Node.js技術(shù)更加適合應(yīng)用于高并發(fā)、大數(shù)據(jù)和實時響應(yīng)的場景。本文從解決網(wǎng)絡(luò)應(yīng)用高并發(fā)難點的角度出發(fā),主要研究工作是設(shè)計一種高性能高并發(fā)網(wǎng)絡(luò)構(gòu)架設(shè)計方案和研究改進網(wǎng)絡(luò)應(yīng)用構(gòu)架中負載均衡層應(yīng)用的負載均衡算法。論文完成的主要工作如下:(1)分析現(xiàn)今常用的網(wǎng)絡(luò)應(yīng)用構(gòu)架類型,總結(jié)出構(gòu)架整體方案和內(nèi)部結(jié)構(gòu)的設(shè)計原則。針對高性能高并發(fā)的問題,基于Node.js技術(shù)設(shè)計一種高性能高并發(fā)網(wǎng)絡(luò)應(yīng)用構(gòu)架方案。設(shè)計方案的各個模塊分別為負載均衡層、核心處理層和數(shù)據(jù)存儲層。負載均衡層采用Nginx技術(shù)應(yīng)用負載均衡算法。核心處理層是基于Node.js技術(shù)完成網(wǎng)絡(luò)應(yīng)用業(yè)務(wù)邏輯處理,其中內(nèi)存緩存服務(wù)采用Redis技術(shù)。數(shù)據(jù)存儲層選用非關(guān)系型數(shù)據(jù)庫Mongo DB實現(xiàn)數(shù)據(jù)存儲。(2)研究分析常用的負載均衡算法,對加權(quán)輪詢算法進行深入分析,將CPU、內(nèi)存、磁盤I/O速率、網(wǎng)絡(luò)帶寬和響應(yīng)時間等參數(shù)加入到加權(quán)輪詢算法的權(quán)值計算中進行算法改進,并對改進前后算法進行測試分析,證明改進的算法的有效性。(3)根據(jù)本文研究的高性能高并發(fā)構(gòu)架解決方案以及改進的負載均衡算法,完成一個博客應(yīng)用,并對博客功能進行展示。
【學位單位】:杭州電子科技大學
【學位級別】:碩士
【學位年份】:2018
【中圖分類】:TP393.02
【部分圖文】:
圖 2.1 Node.js 基本架構(gòu)圖Node Standard Library 是我們使用頻率很高的標準庫,如 Http, Buffer 模塊等。Node Bindings 是溝通 Javascript 和 C++的橋梁,封裝 V8 和 Libuv 的細節(jié),向上層提供基礎(chǔ) API 服務(wù)。V8 是 Google 開發(fā)的 JavaScript 引擎,提供 JavaScript 運行環(huán)境,可以說它就是 Node.js 的發(fā)動機。Libuv 是專門為 Node.js 開發(fā)的一個封裝庫,提供跨平臺的異步 I/O 能力。C-ares 提供了異步處理 DNS 相關(guān)的能力http_parser、OpenSSL、zlib 等提供包括 http 解析、SSL、數(shù)據(jù)壓縮等其他能力。最后架構(gòu)的底層是支撐 Node.js 運行的關(guān)鍵,代碼由 C/C++實現(xiàn)。Libuv 不僅提供了跨平臺的異步 I/O 能力,還提出在不同的 I/O 輪詢機制上的復雜抽象,即為套接字和其他實體提供高級抽象的“句柄(handles)”和“流(streams)”。圖 2.2 展示了組成 libuv 的不同部分以及與之相關(guān)的子系統(tǒng)。
圖 2.1 Node.js 基本架構(gòu)圖Node Standard Library 是我們使用頻率很高的標準庫,如 Http, Buffer 模塊等。Node Bindings 是溝通 Javascript 和 C++的橋梁,封裝 V8 和 Libuv 的細節(jié),向上層提供基礎(chǔ) API 服務(wù)。V8 是 Google 開發(fā)的 JavaScript 引擎,提供 JavaScript 運行環(huán)境,可以說它就是 Node.js 的發(fā)動機。Libuv 是專門為 Node.js 開發(fā)的一個封裝庫,提供跨平臺的異步 I/O 能力。C-ares 提供了異步處理 DNS 相關(guān)的能力。http_parser、OpenSSL、zlib 等提供包括 http 解析、SSL、數(shù)據(jù)壓縮等其他能力。最后架構(gòu)的底層是支撐 Node.js 運行的關(guān)鍵,代碼由 C/C++實現(xiàn)。Libuv 不僅提供了跨平臺的異步 I/O 能力,還提出在不同的 I/O 輪詢機制上的復雜抽象,即為套接字和其他實體提供高級抽象的“句柄(handles)”和“流(streams)”。圖 2.2 展示了組成 libuv 的不同部分以及與之相關(guān)的子系統(tǒng)。
杭州電子科技大學碩士學位論文系統(tǒng)調(diào)用return無數(shù)據(jù)數(shù)據(jù)到達數(shù)據(jù)拷貝拷貝完成等待達遞交至aio_read指定的時間處理程序aio_read讀完成事件處理內(nèi)核應(yīng)用進程用程序續(xù)執(zhí)行,其它邏輯圖 2.7 異步 I/O 模型件決定的程序執(zhí)行流被稱為事件驅(qū)動,通常以主循環(huán),事件處理程為特征。如圖 2.8 所示為事件驅(qū)動模型圖。
【參考文獻】
本文編號:2877218
【學位單位】:杭州電子科技大學
【學位級別】:碩士
【學位年份】:2018
【中圖分類】:TP393.02
【部分圖文】:
圖 2.1 Node.js 基本架構(gòu)圖Node Standard Library 是我們使用頻率很高的標準庫,如 Http, Buffer 模塊等。Node Bindings 是溝通 Javascript 和 C++的橋梁,封裝 V8 和 Libuv 的細節(jié),向上層提供基礎(chǔ) API 服務(wù)。V8 是 Google 開發(fā)的 JavaScript 引擎,提供 JavaScript 運行環(huán)境,可以說它就是 Node.js 的發(fā)動機。Libuv 是專門為 Node.js 開發(fā)的一個封裝庫,提供跨平臺的異步 I/O 能力。C-ares 提供了異步處理 DNS 相關(guān)的能力http_parser、OpenSSL、zlib 等提供包括 http 解析、SSL、數(shù)據(jù)壓縮等其他能力。最后架構(gòu)的底層是支撐 Node.js 運行的關(guān)鍵,代碼由 C/C++實現(xiàn)。Libuv 不僅提供了跨平臺的異步 I/O 能力,還提出在不同的 I/O 輪詢機制上的復雜抽象,即為套接字和其他實體提供高級抽象的“句柄(handles)”和“流(streams)”。圖 2.2 展示了組成 libuv 的不同部分以及與之相關(guān)的子系統(tǒng)。
圖 2.1 Node.js 基本架構(gòu)圖Node Standard Library 是我們使用頻率很高的標準庫,如 Http, Buffer 模塊等。Node Bindings 是溝通 Javascript 和 C++的橋梁,封裝 V8 和 Libuv 的細節(jié),向上層提供基礎(chǔ) API 服務(wù)。V8 是 Google 開發(fā)的 JavaScript 引擎,提供 JavaScript 運行環(huán)境,可以說它就是 Node.js 的發(fā)動機。Libuv 是專門為 Node.js 開發(fā)的一個封裝庫,提供跨平臺的異步 I/O 能力。C-ares 提供了異步處理 DNS 相關(guān)的能力。http_parser、OpenSSL、zlib 等提供包括 http 解析、SSL、數(shù)據(jù)壓縮等其他能力。最后架構(gòu)的底層是支撐 Node.js 運行的關(guān)鍵,代碼由 C/C++實現(xiàn)。Libuv 不僅提供了跨平臺的異步 I/O 能力,還提出在不同的 I/O 輪詢機制上的復雜抽象,即為套接字和其他實體提供高級抽象的“句柄(handles)”和“流(streams)”。圖 2.2 展示了組成 libuv 的不同部分以及與之相關(guān)的子系統(tǒng)。
杭州電子科技大學碩士學位論文系統(tǒng)調(diào)用return無數(shù)據(jù)數(shù)據(jù)到達數(shù)據(jù)拷貝拷貝完成等待達遞交至aio_read指定的時間處理程序aio_read讀完成事件處理內(nèi)核應(yīng)用進程用程序續(xù)執(zhí)行,其它邏輯圖 2.7 異步 I/O 模型件決定的程序執(zhí)行流被稱為事件驅(qū)動,通常以主循環(huán),事件處理程為特征。如圖 2.8 所示為事件驅(qū)動模型圖。
【參考文獻】
相關(guān)期刊論文 前8條
1 曾超宇;李金香;;Redis在高速緩存系統(tǒng)中的應(yīng)用[J];微型機與應(yīng)用;2013年12期
2 李永魁;謝文閣;;基于非關(guān)系數(shù)據(jù)庫的分布式負載均衡技術(shù)[J];計算機系統(tǒng)應(yīng)用;2013年05期
3 饒磊;湯小春;侯增江;;服務(wù)器集群負載均衡策略的研究[J];計算機與現(xiàn)代化;2013年01期
4 鄧緒高;;Javascript的詞法作用域分析[J];電腦知識與技術(shù);2012年36期
5 張玉芳;魏欽磊;趙膺;;基于負載權(quán)值的負載均衡算法[J];計算機應(yīng)用研究;2012年12期
6 黃立冬;;一種半靜態(tài)化網(wǎng)站的構(gòu)建方法[J];軟件;2012年03期
7 楊艷;李煒;王純;;內(nèi)存數(shù)據(jù)庫在高速緩存方面的應(yīng)用[J];現(xiàn)代電信科技;2011年12期
8 朱曉輝;王杰華;石振國;陳蘇蓉;;海量圖片的分布式存儲及負載均衡研究[J];計算機工程;2010年23期
相關(guān)碩士學位論文 前2條
1 梁銳;基于Web服務(wù)器集群的負載均衡系統(tǒng)研究與實現(xiàn)[D];大連海事大學;2013年
2 陳亮;集群負載均衡關(guān)鍵技術(shù)研究[D];中南大學;2009年
本文編號:2877218
本文鏈接:http://www.wukwdryxk.cn/guanlilunwen/ydhl/2877218.html
最近更新
教材專著