基于Reactor模式的高性能服務(wù)端框架技術(shù)的研究與實(shí)例分析
發(fā)布時(shí)間:2021-07-27 14:03
近年來(lái),隨著移動(dòng)互聯(lián)網(wǎng)的迅速發(fā)展,客戶端數(shù)量呈現(xiàn)出指數(shù)式增長(zhǎng),這就對(duì)服務(wù)端程序的開(kāi)發(fā)帶來(lái)了巨大的挑戰(zhàn),高并發(fā)、低延遲的服務(wù)端框架技術(shù)是一直以來(lái)研究的熱點(diǎn)。服務(wù)端程序要盡可能使數(shù)據(jù)在本端處理時(shí)間短,以便能及時(shí)空出CPU資源去處理后續(xù)請(qǐng)求,以解決因請(qǐng)求在隊(duì)列上堆積造成服務(wù)端程序吞吐量急劇降低,甚至宕機(jī)問(wèn)題。為了提升開(kāi)發(fā)效率,在事件驅(qū)動(dòng)機(jī)制Reactor模式的基礎(chǔ)上,產(chǎn)生了很多高性能的服務(wù)端開(kāi)發(fā)框架如ACE、Boost.Asio、libevent、libev等,但在吞吐量、響應(yīng)時(shí)間上仍然存在一定的提升空間。對(duì)此本文從通信協(xié)議、多路復(fù)用機(jī)制以及Reactor模式等方面展開(kāi)研究,分析了當(dāng)前服務(wù)端框架技術(shù)的性能瓶頸,對(duì)緩沖區(qū)、線程池進(jìn)行了優(yōu)化工作,并根據(jù)實(shí)際應(yīng)用場(chǎng)景優(yōu)化了日志處理邏輯,最終提升了服務(wù)端框架的吞吐量,降低了響應(yīng)時(shí)間。并將該框架應(yīng)用在了智慧校園系統(tǒng)的開(kāi)發(fā)中。本文主要研究工作及創(chuàng)新如下:(1)本文首先介紹了網(wǎng)絡(luò)傳輸技術(shù)和多路復(fù)用技術(shù),包括Reactor模式的優(yōu)勢(shì)、Reactor線程池的設(shè)計(jì)思想。接著介紹了基于Reactor模式設(shè)計(jì)的傳統(tǒng)服務(wù)端框架技術(shù),并對(duì)其迭代的過(guò)程進(jìn)行了詳細(xì)的闡述,然...
【文章來(lái)源】:浙江理工大學(xué)浙江省
【文章頁(yè)數(shù)】:65 頁(yè)
【學(xué)位級(jí)別】:碩士
【部分圖文】:
圖2.1?TCP/IP協(xié)議族的分層結(jié)構(gòu)圖??鏈路層:鏈路層是物理層的傳輸通道,可通過(guò)多種傳輸介質(zhì)進(jìn)行傳輸,主要是由物理??
浙江理工大學(xué)碩士學(xué)位論文?基于Reactor的高性服務(wù)端框架技術(shù)的研究:與實(shí)例分析??協(xié)議是面向無(wú)連接的協(xié)議,相比與TCP協(xié)議不提供可靠傳輸,但其結(jié)構(gòu)簡(jiǎn)單,無(wú)需ACK??確認(rèn)機(jī)制等因素使得傳輸效率較高[31],所以一般在可以容忍部分?jǐn)?shù)據(jù)丟失、追求傳輸效率??的場(chǎng)景中常常采用UDP協(xié)議。??網(wǎng)絡(luò)層:網(wǎng)絡(luò)層主要承擔(dān)相鄰計(jì)算機(jī)之間的通信工作,通過(guò)填充丨P的方式來(lái)決定數(shù)據(jù)??包的發(fā)送路徑,然后將數(shù)據(jù)包發(fā)送至合適的網(wǎng)絡(luò)接口[32—34]。如果數(shù)據(jù)己發(fā)送至對(duì)端,則將??包頭去掉,隨即送至對(duì)端傳輸層做進(jìn)一步處理。同時(shí)網(wǎng)絡(luò)層還參與傳輸過(guò)程中流量控制、??擁塞機(jī)制等流程[35]。??應(yīng)用層:應(yīng)用層主要是面向用戶的,數(shù)據(jù)從網(wǎng)卡處接收,經(jīng)過(guò)鏈路層、網(wǎng)絡(luò)層、傳輸??層,逐層去除各層包頭數(shù)據(jù),最終提供給應(yīng)用層的將只有用戶數(shù)據(jù),比如常見(jiàn)的HTTP協(xié)??議、RTP協(xié)議都是數(shù)據(jù)用戶層協(xié)議[36],都是根據(jù)特定的使用場(chǎng)景,通過(guò)在用戶層數(shù)據(jù)上再??次封裝包頭的方式來(lái)實(shí)現(xiàn)的[37]。??2.1.2?Socket網(wǎng)絡(luò)編程??Socket套接字是處于應(yīng)用層和傳輸層中間的抽象層,通過(guò)Socket可以將TCP/丨P協(xié)議??族中復(fù)雜的操作細(xì)節(jié)抽象成簡(jiǎn)單的系統(tǒng)API,簡(jiǎn)化了網(wǎng)絡(luò)編程。圖2.2為客戶端與服務(wù)器??的Socket通丨目流程。??TCP?Semi??.?SOCkt*。??ITPClient?|??socketO??i??n^〇?:l?卜繼pt〇..??迓基i到客??—■?wio〇??read()??read()?wriie〇??close〇?read()??ck>se〇??圖2.2?Socket通信流程圖??6??
再次通知應(yīng)用層,直到該文??件描述符再次發(fā)可讀或者可寫(xiě)事件發(fā)生時(shí)才會(huì)通知應(yīng)用層。所以EPOLL對(duì)比于SELECT??和POLL不僅在上下文切換時(shí)交換的數(shù)據(jù)較少,而且應(yīng)用層無(wú)需去遍歷所有文件描述符,??同時(shí)EPOLL還可以根據(jù)應(yīng)用場(chǎng)景的不同選取不同的觸發(fā)方式,達(dá)到了較好的并發(fā)性能。??2.2_2?Reactor?模式??Reactor模式是Doug?Schmidt提出一種事件驅(qū)動(dòng)的設(shè)計(jì)模式,其可以同時(shí)處理多個(gè)輸??入,并通過(guò)多路復(fù)用機(jī)制將輸入的請(qǐng)求分發(fā)給相應(yīng)的處理器做進(jìn)一步的處理。如T圖2.3??所示,以對(duì)單線程Reactor模型來(lái)展Reactor模式。??連接粒?‘??事件處理器??????^?客戶蜍1??L__?J??1-??Z?:?:?客戶粕??HI?L^;?(SELECT^L/EPOLL)??處理器?\?反應(yīng)堆????=\?^?*哪??注冊(cè)成下??分犮寫(xiě)亊件I?請(qǐng)求4?I一?::??"^?1?^??處理器????圖2.3?Reactor模式圖??8??
【參考文獻(xiàn)】:
期刊論文
[1]智能家居情境感知服務(wù)的運(yùn)行時(shí)建模與執(zhí)行方法[J]. 陳星,黃志明,葉心舒,馬鄆,陳藝燕,郭文忠. 軟件學(xué)報(bào). 2019(11)
[2]多協(xié)議融合LPWAN能源物聯(lián)網(wǎng)云平臺(tái)的設(shè)計(jì)[J]. 白若琛,龐成鑫,賈佳,邱曙光,邵嘉,盧小姣. 計(jì)算機(jī)科學(xué). 2019(S1)
[3]基于Netty的IoT終端通信服務(wù)系統(tǒng)設(shè)計(jì)[J]. 顧振德,劉子辰,龍隆,牟林宏. 計(jì)算機(jī)應(yīng)用與軟件. 2019(04)
[4]互聯(lián)網(wǎng)端到端多路徑傳輸跨層優(yōu)化研究綜述[J]. 江卓,吳茜,李賀武,吳建平. 軟件學(xué)報(bào). 2019(02)
[5]區(qū)分站點(diǎn)狀態(tài)的兩級(jí)輪詢控制系統(tǒng)[J]. 楊志軍,孫洋洋. 計(jì)算機(jī)應(yīng)用. 2019(05)
[6]基于容器云的微服務(wù)系統(tǒng)[J]. 楊迪. 電信科學(xué). 2018(09)
[7]面向射頻能量捕獲傳感網(wǎng)的高吞吐量負(fù)載均衡的節(jié)點(diǎn)接入方案[J]. 池凱凱,魏欣晨,林一民. 計(jì)算機(jī)科學(xué). 2018(08)
[8]多核處理器發(fā)展趨勢(shì)及關(guān)鍵技術(shù)[J]. 周楠,胡娟,胡海明. 計(jì)算機(jī)工程與設(shè)計(jì). 2018(02)
[9]基于事件驅(qū)動(dòng)的高性能WebSocket服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 曹文彬,譚新明,劉備,劉傳文. 計(jì)算機(jī)應(yīng)用與軟件. 2018(01)
[10]一種高并發(fā)網(wǎng)絡(luò)Web應(yīng)用技術(shù)研究[J]. GUL Khan Safi Qamas,王鵬,羅森林,潘麗敏. 信息網(wǎng)絡(luò)安全. 2017(12)
博士論文
[1]TCP技術(shù)在內(nèi)容分發(fā)網(wǎng)絡(luò)上的應(yīng)用研究[D]. 章俊.清華大學(xué) 2016
碩士論文
[1]基于Netty框架的性能測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 李培殿.北京郵電大學(xué) 2019
[2]基于精確測(cè)量的TCP擁塞控制[D]. 葛文錦.東南大學(xué) 2018
[3]基于Netty的消息中間件的研究與實(shí)現(xiàn)[D]. 夏斐.電子科技大學(xué) 2018
[4]基于Netty框架的智能終端與服務(wù)器通信的研究[D]. 魏瑩.西安電子科技大學(xué) 2017
[5]基于Kafka的大規(guī)模流數(shù)據(jù)分布式緩存與分析平臺(tái)[D]. 牛牧.吉林大學(xué) 2016
[6]基于ACE框架的局域網(wǎng)渲染集群系統(tǒng)的研究與實(shí)現(xiàn)[D]. 萬(wàn)倩倩.東南大學(xué) 2016
[7]自主壓力測(cè)試平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 郄霖.北京郵電大學(xué) 2015
[8]基于Netty的高可服務(wù)消息中間件的研究與實(shí)現(xiàn)[D]. 崔曉旻.電子科技大學(xué) 2014
本文編號(hào):3305924
【文章來(lái)源】:浙江理工大學(xué)浙江省
【文章頁(yè)數(shù)】:65 頁(yè)
【學(xué)位級(jí)別】:碩士
【部分圖文】:
圖2.1?TCP/IP協(xié)議族的分層結(jié)構(gòu)圖??鏈路層:鏈路層是物理層的傳輸通道,可通過(guò)多種傳輸介質(zhì)進(jìn)行傳輸,主要是由物理??
浙江理工大學(xué)碩士學(xué)位論文?基于Reactor的高性服務(wù)端框架技術(shù)的研究:與實(shí)例分析??協(xié)議是面向無(wú)連接的協(xié)議,相比與TCP協(xié)議不提供可靠傳輸,但其結(jié)構(gòu)簡(jiǎn)單,無(wú)需ACK??確認(rèn)機(jī)制等因素使得傳輸效率較高[31],所以一般在可以容忍部分?jǐn)?shù)據(jù)丟失、追求傳輸效率??的場(chǎng)景中常常采用UDP協(xié)議。??網(wǎng)絡(luò)層:網(wǎng)絡(luò)層主要承擔(dān)相鄰計(jì)算機(jī)之間的通信工作,通過(guò)填充丨P的方式來(lái)決定數(shù)據(jù)??包的發(fā)送路徑,然后將數(shù)據(jù)包發(fā)送至合適的網(wǎng)絡(luò)接口[32—34]。如果數(shù)據(jù)己發(fā)送至對(duì)端,則將??包頭去掉,隨即送至對(duì)端傳輸層做進(jìn)一步處理。同時(shí)網(wǎng)絡(luò)層還參與傳輸過(guò)程中流量控制、??擁塞機(jī)制等流程[35]。??應(yīng)用層:應(yīng)用層主要是面向用戶的,數(shù)據(jù)從網(wǎng)卡處接收,經(jīng)過(guò)鏈路層、網(wǎng)絡(luò)層、傳輸??層,逐層去除各層包頭數(shù)據(jù),最終提供給應(yīng)用層的將只有用戶數(shù)據(jù),比如常見(jiàn)的HTTP協(xié)??議、RTP協(xié)議都是數(shù)據(jù)用戶層協(xié)議[36],都是根據(jù)特定的使用場(chǎng)景,通過(guò)在用戶層數(shù)據(jù)上再??次封裝包頭的方式來(lái)實(shí)現(xiàn)的[37]。??2.1.2?Socket網(wǎng)絡(luò)編程??Socket套接字是處于應(yīng)用層和傳輸層中間的抽象層,通過(guò)Socket可以將TCP/丨P協(xié)議??族中復(fù)雜的操作細(xì)節(jié)抽象成簡(jiǎn)單的系統(tǒng)API,簡(jiǎn)化了網(wǎng)絡(luò)編程。圖2.2為客戶端與服務(wù)器??的Socket通丨目流程。??TCP?Semi??.?SOCkt*。??ITPClient?|??socketO??i??n^〇?:l?卜繼pt〇..??迓基i到客??—■?wio〇??read()??read()?wriie〇??close〇?read()??ck>se〇??圖2.2?Socket通信流程圖??6??
再次通知應(yīng)用層,直到該文??件描述符再次發(fā)可讀或者可寫(xiě)事件發(fā)生時(shí)才會(huì)通知應(yīng)用層。所以EPOLL對(duì)比于SELECT??和POLL不僅在上下文切換時(shí)交換的數(shù)據(jù)較少,而且應(yīng)用層無(wú)需去遍歷所有文件描述符,??同時(shí)EPOLL還可以根據(jù)應(yīng)用場(chǎng)景的不同選取不同的觸發(fā)方式,達(dá)到了較好的并發(fā)性能。??2.2_2?Reactor?模式??Reactor模式是Doug?Schmidt提出一種事件驅(qū)動(dòng)的設(shè)計(jì)模式,其可以同時(shí)處理多個(gè)輸??入,并通過(guò)多路復(fù)用機(jī)制將輸入的請(qǐng)求分發(fā)給相應(yīng)的處理器做進(jìn)一步的處理。如T圖2.3??所示,以對(duì)單線程Reactor模型來(lái)展Reactor模式。??連接粒?‘??事件處理器??????^?客戶蜍1??L__?J??1-??Z?:?:?客戶粕??HI?L^;?(SELECT^L/EPOLL)??處理器?\?反應(yīng)堆????=\?^?*哪??注冊(cè)成下??分犮寫(xiě)亊件I?請(qǐng)求4?I一?::??"^?1?^??處理器????圖2.3?Reactor模式圖??8??
【參考文獻(xiàn)】:
期刊論文
[1]智能家居情境感知服務(wù)的運(yùn)行時(shí)建模與執(zhí)行方法[J]. 陳星,黃志明,葉心舒,馬鄆,陳藝燕,郭文忠. 軟件學(xué)報(bào). 2019(11)
[2]多協(xié)議融合LPWAN能源物聯(lián)網(wǎng)云平臺(tái)的設(shè)計(jì)[J]. 白若琛,龐成鑫,賈佳,邱曙光,邵嘉,盧小姣. 計(jì)算機(jī)科學(xué). 2019(S1)
[3]基于Netty的IoT終端通信服務(wù)系統(tǒng)設(shè)計(jì)[J]. 顧振德,劉子辰,龍隆,牟林宏. 計(jì)算機(jī)應(yīng)用與軟件. 2019(04)
[4]互聯(lián)網(wǎng)端到端多路徑傳輸跨層優(yōu)化研究綜述[J]. 江卓,吳茜,李賀武,吳建平. 軟件學(xué)報(bào). 2019(02)
[5]區(qū)分站點(diǎn)狀態(tài)的兩級(jí)輪詢控制系統(tǒng)[J]. 楊志軍,孫洋洋. 計(jì)算機(jī)應(yīng)用. 2019(05)
[6]基于容器云的微服務(wù)系統(tǒng)[J]. 楊迪. 電信科學(xué). 2018(09)
[7]面向射頻能量捕獲傳感網(wǎng)的高吞吐量負(fù)載均衡的節(jié)點(diǎn)接入方案[J]. 池凱凱,魏欣晨,林一民. 計(jì)算機(jī)科學(xué). 2018(08)
[8]多核處理器發(fā)展趨勢(shì)及關(guān)鍵技術(shù)[J]. 周楠,胡娟,胡海明. 計(jì)算機(jī)工程與設(shè)計(jì). 2018(02)
[9]基于事件驅(qū)動(dòng)的高性能WebSocket服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 曹文彬,譚新明,劉備,劉傳文. 計(jì)算機(jī)應(yīng)用與軟件. 2018(01)
[10]一種高并發(fā)網(wǎng)絡(luò)Web應(yīng)用技術(shù)研究[J]. GUL Khan Safi Qamas,王鵬,羅森林,潘麗敏. 信息網(wǎng)絡(luò)安全. 2017(12)
博士論文
[1]TCP技術(shù)在內(nèi)容分發(fā)網(wǎng)絡(luò)上的應(yīng)用研究[D]. 章俊.清華大學(xué) 2016
碩士論文
[1]基于Netty框架的性能測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 李培殿.北京郵電大學(xué) 2019
[2]基于精確測(cè)量的TCP擁塞控制[D]. 葛文錦.東南大學(xué) 2018
[3]基于Netty的消息中間件的研究與實(shí)現(xiàn)[D]. 夏斐.電子科技大學(xué) 2018
[4]基于Netty框架的智能終端與服務(wù)器通信的研究[D]. 魏瑩.西安電子科技大學(xué) 2017
[5]基于Kafka的大規(guī)模流數(shù)據(jù)分布式緩存與分析平臺(tái)[D]. 牛牧.吉林大學(xué) 2016
[6]基于ACE框架的局域網(wǎng)渲染集群系統(tǒng)的研究與實(shí)現(xiàn)[D]. 萬(wàn)倩倩.東南大學(xué) 2016
[7]自主壓力測(cè)試平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 郄霖.北京郵電大學(xué) 2015
[8]基于Netty的高可服務(wù)消息中間件的研究與實(shí)現(xiàn)[D]. 崔曉旻.電子科技大學(xué) 2014
本文編號(hào):3305924
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/3305924.html
最近更新
教材專(zhuān)著