分布式RPC框架的設(shè)計(jì)與實(shí)現(xiàn)
【學(xué)位授予單位】:華中科技大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2018
【分類(lèi)號(hào)】:TP311.52
【圖文】:
BIO 編程是同步阻塞開(kāi)發(fā)模型,其模型結(jié)構(gòu)圖2-1 所示:圖 2-1 同步阻塞 IO 模型Java BIO 通信模型是最為經(jīng)典的客戶(hù)端/服務(wù)器通信模型,其中服務(wù)端的運(yùn)行依賴(lài)于主機(jī)的 IP 地址和端口號(hào),服務(wù)端通過(guò)對(duì)它們進(jìn)行綁定,提供唯一的地址信息,開(kāi)放訪(fǎng)問(wèn)。客戶(hù)端則通過(guò)向與服務(wù)器所對(duì)應(yīng)的地址信息發(fā)起連接請(qǐng)求,連接建立完畢后,雙方便可通過(guò)套接字(Socket)進(jìn)行網(wǎng)絡(luò)通信。Java BIO 通信過(guò)程如下:首先服務(wù)端開(kāi)啟一個(gè)單獨(dú)的線(xiàn)程 Acceptor,用于監(jiān)聽(tīng)與服務(wù)器綁定的端口是否有來(lái)自客戶(hù)端的連接建立的請(qǐng)求,若有請(qǐng)求,則直接對(duì)該請(qǐng)求進(jìn)行接收。Acceptor 每次接收到來(lái)自客戶(hù)端的請(qǐng)求后,都會(huì)為此次連接開(kāi)啟一個(gè)新的線(xiàn)程,用于處理客戶(hù)端的請(qǐng)求[25]。隨著請(qǐng)求的處理完成,伴隨此次連接建立的線(xiàn)程也隨之被銷(xiāo)毀。Java BIO 的服務(wù)端通信模型為一客戶(hù)端一線(xiàn)程,模型如圖 2-2 所示:
圖 2-2 Java BIO 服務(wù)端通信模型該模型缺乏彈性伸縮能力,服務(wù)端線(xiàn)程個(gè)數(shù)與客戶(hù)端并發(fā)訪(fǎng)問(wèn)數(shù)呈 1:1 的正比關(guān)系,隨著用戶(hù)訪(fǎng)問(wèn)不斷增加,線(xiàn)程數(shù)會(huì)不斷膨脹,線(xiàn)程會(huì)因此而被不斷的創(chuàng)建,服務(wù)器會(huì)對(duì)運(yùn)行中的線(xiàn)程上下文進(jìn)行頻繁的切換,消耗大量資源的同時(shí)使得系統(tǒng)性能急劇下降,最終會(huì)出現(xiàn)線(xiàn)程堆棧溢出、創(chuàng)建新線(xiàn)程失敗等異常,從而導(dǎo)致服務(wù)端宕機(jī)。上述模型面對(duì)大量用戶(hù)并發(fā)訪(fǎng)問(wèn)時(shí),會(huì)產(chǎn)生大量線(xiàn)程,嚴(yán)重影響系統(tǒng)的性能。針對(duì)這種不足可以采用線(xiàn)程池對(duì)上述模型加以改善。線(xiàn)程池的引入可以避免線(xiàn)程無(wú)休止的創(chuàng)建,用戶(hù)可以根據(jù)主機(jī)性能對(duì)線(xiàn)程池中的線(xiàn)程數(shù)進(jìn)行配置。當(dāng)用戶(hù)并發(fā)量過(guò)大,系統(tǒng)無(wú)法正常處理時(shí),也可以通過(guò)配置線(xiàn)程池的拒絕策略[26],對(duì)不能處理的請(qǐng)求進(jìn)行相應(yīng)處理。帶線(xiàn)程池的 Java BIO 服務(wù)端通信模型如圖 2-3 所示:
圖 2-2 Java BIO 服務(wù)端通信模型該模型缺乏彈性伸縮能力,服務(wù)端線(xiàn)程個(gè)數(shù)與客戶(hù)端并發(fā)訪(fǎng)問(wèn)數(shù)呈 1:1 的正比關(guān)系,隨著用戶(hù)訪(fǎng)問(wèn)不斷增加,線(xiàn)程數(shù)會(huì)不斷膨脹,線(xiàn)程會(huì)因此而被不斷的創(chuàng)建,服務(wù)器會(huì)對(duì)運(yùn)行中的線(xiàn)程上下文進(jìn)行頻繁的切換,消耗大量資源的同時(shí)使得系統(tǒng)性能急劇下降,最終會(huì)出現(xiàn)線(xiàn)程堆棧溢出、創(chuàng)建新線(xiàn)程失敗等異常,從而導(dǎo)致服務(wù)端宕機(jī)。上述模型面對(duì)大量用戶(hù)并發(fā)訪(fǎng)問(wèn)時(shí),會(huì)產(chǎn)生大量線(xiàn)程,嚴(yán)重影響系統(tǒng)的性能。針對(duì)這種不足可以采用線(xiàn)程池對(duì)上述模型加以改善。線(xiàn)程池的引入可以避免線(xiàn)程無(wú)休止的創(chuàng)建,用戶(hù)可以根據(jù)主機(jī)性能對(duì)線(xiàn)程池中的線(xiàn)程數(shù)進(jìn)行配置。當(dāng)用戶(hù)并發(fā)量過(guò)大,系統(tǒng)無(wú)法正常處理時(shí),也可以通過(guò)配置線(xiàn)程池的拒絕策略[26],對(duì)不能處理的請(qǐng)求進(jìn)行相應(yīng)處理。帶線(xiàn)程池的 Java BIO 服務(wù)端通信模型如圖 2-3 所示:
【參考文獻(xiàn)】
相關(guān)期刊論文 前9條
1 秦方鈺;劉冬梅;徐棟;;一種面向SOA架構(gòu)的數(shù)據(jù)業(yè)務(wù)總線(xiàn)應(yīng)用研究[J];電子技術(shù)與軟件工程;2015年09期
2 周康;李覬;董科軍;南凱;;一種基于Thrift的日志收集分析系統(tǒng)[J];科研信息化技術(shù)與應(yīng)用;2015年02期
3 劉芬;王芳;田昊;;基于Zookeeper的分布式鎖服務(wù)及性能優(yōu)化[J];計(jì)算機(jī)研究與發(fā)展;2014年S1期
4 解志君;;代理模式在Java中的應(yīng)用[J];軟件;2014年05期
5 程龍;李冶;;應(yīng)用ASM修改JAVA字節(jié)碼[J];信息與電腦(理論版);2011年05期
6 周嵐;;基于Spring框架的IOC模式的設(shè)計(jì)和實(shí)現(xiàn)[J];合肥學(xué)院學(xué)報(bào)(自然科學(xué)版);2011年01期
7 馮新?lián)P;沈建京;;REST和RPC:兩種Web服務(wù)架構(gòu)風(fēng)格比較分析[J];小型微型計(jì)算機(jī)系統(tǒng);2010年07期
8 李昊,劉志鏡;線(xiàn)程池技術(shù)的研究[J];現(xiàn)代電子技術(shù);2004年03期
9 李儉兵;何登平;;SOAP技術(shù)及其應(yīng)用[J];計(jì)算機(jī)科學(xué);2003年04期
本文編號(hào):2800974
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/2800974.html