淺談網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)復(fù)雜性

時(shí)間:2022-01-02 05:07:14

導(dǎo)語(yǔ):淺談網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)復(fù)雜性一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

淺談網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)復(fù)雜性

摘要:在網(wǎng)絡(luò)系統(tǒng)程序的開(kāi)發(fā)設(shè)計(jì)過(guò)程中,并發(fā)性和復(fù)雜性所造成的影響十分巨大,它們嚴(yán)重降低了網(wǎng)絡(luò)程序的開(kāi)發(fā)效率,延長(zhǎng)了設(shè)計(jì)時(shí)間。本文通過(guò)對(duì)網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性的原因進(jìn)行分析,提出了事件驅(qū)動(dòng)并發(fā)模型、多線程并發(fā)模型、混合性并發(fā)模型三大解決方法,為相關(guān)的互聯(lián)網(wǎng)研究提供一定的參考。

關(guān)鍵詞:網(wǎng)絡(luò)程序;并發(fā)性;復(fù)雜性

近年來(lái),傳統(tǒng)的程序開(kāi)發(fā)設(shè)計(jì)方法在高質(zhì)量網(wǎng)絡(luò)程序開(kāi)發(fā)中暴露出了許多的問(wèn)題,而造成這些問(wèn)題的關(guān)鍵因素就是網(wǎng)絡(luò)環(huán)境和單機(jī)環(huán)境之間所存在的巨大差異。在產(chǎn)生的這些問(wèn)題中有兩個(gè)問(wèn)題最為突出,它們就是并發(fā)性問(wèn)題和復(fù)雜性問(wèn)題,其中并發(fā)性問(wèn)題給網(wǎng)絡(luò)程序的設(shè)計(jì)和發(fā)展造成了極大的麻煩。怎樣處理好并發(fā)性問(wèn)題所造成的困難,以及如何選擇合適的并發(fā)處理模型,成為了擺在所有程序員面前的最大挑戰(zhàn)。

一、網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性原因分析

通常來(lái)說(shuō),造成網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性的原因主要有三個(gè)方面。一是單機(jī)環(huán)境和網(wǎng)絡(luò)環(huán)境之間存在過(guò)于明顯的差距。由于這巨大的差距,混合性并發(fā)模型會(huì)暴露出發(fā)展時(shí)間過(guò)短和應(yīng)用面過(guò)窄的缺陷,為高質(zhì)量網(wǎng)絡(luò)程序的開(kāi)發(fā)增添了很多的麻煩。二是設(shè)計(jì)理念受到了限制。軟件和硬件的功能限制著原先的程序設(shè)計(jì)理念,也是造成網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性存在的重要因素,設(shè)計(jì)理念的限制,也嚴(yán)重降低了整個(gè)網(wǎng)絡(luò)程序設(shè)計(jì)過(guò)程的效率。一般來(lái)說(shuō),網(wǎng)絡(luò)程序的并發(fā)性會(huì)以異構(gòu)性、異步性、訪問(wèn)延誤和分布性體現(xiàn)出來(lái)。三是驅(qū)動(dòng)模式有待優(yōu)化。在實(shí)際的工作中,根據(jù)具體的語(yǔ)義類(lèi)別,網(wǎng)絡(luò)并發(fā)任務(wù)的處理辦法可以分成反應(yīng)式和前攝式。以反應(yīng)式模型為例,相應(yīng)事件發(fā)出通知后,應(yīng)用程序要先對(duì)通知進(jìn)行接收,然后在這一基礎(chǔ)上根據(jù)具體發(fā)生的情況,針對(duì)性的發(fā)出相關(guān)的操作指令,整個(gè)過(guò)程中由操作結(jié)果所引發(fā)的錯(cuò)誤會(huì)以函數(shù)返回值的形式體現(xiàn)出來(lái),通過(guò)觀察函數(shù)返回值,工作人員便可獲知錯(cuò)誤的具體情況。在事件完成的整個(gè)流程中,這些錯(cuò)誤情況會(huì)以參數(shù)的形式參與和傳遞到各個(gè)相關(guān)的內(nèi)部程序中。當(dāng)需要同時(shí)發(fā)出很多個(gè)并發(fā)操作指令的時(shí)候,則應(yīng)先對(duì)整體程序添加一個(gè)標(biāo)識(shí)參數(shù),然后再發(fā)出相應(yīng)操作指令,這樣就能更細(xì)致的區(qū)分不同類(lèi)型的并發(fā)操作。

二、網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性解決方法

(一)事件驅(qū)動(dòng)并發(fā)模型。事件驅(qū)動(dòng)并發(fā)模型已經(jīng)廣泛應(yīng)用在開(kāi)發(fā)和設(shè)計(jì)網(wǎng)絡(luò)程序的工作當(dāng)中。通常按照實(shí)際工作情況和具體的語(yǔ)義類(lèi)別將事件驅(qū)動(dòng)并發(fā)模型分成兩種,第一種是反應(yīng)式,第二種是前攝式。在第一種模型中,計(jì)算機(jī)的應(yīng)用程序要先對(duì)事件發(fā)出的通知進(jìn)行接收,然后根據(jù)具體事件發(fā)出有針對(duì)性的操作指令,在過(guò)程中若是出現(xiàn)操作結(jié)果的錯(cuò)誤,函數(shù)的返回值會(huì)將錯(cuò)誤反應(yīng)出來(lái)。在第二種模型中,計(jì)算機(jī)的應(yīng)用程序會(huì)先發(fā)送出具體的操作指令,等相應(yīng)事件結(jié)束之后,操作過(guò)程中出現(xiàn)的錯(cuò)誤會(huì)被當(dāng)作完成整個(gè)事件的參數(shù),并傳送到對(duì)應(yīng)的應(yīng)用程序之中[1]。如果任務(wù)要求同時(shí)發(fā)送大量并發(fā)性操作,則需要先對(duì)整體程序添加一個(gè)標(biāo)識(shí)參數(shù),然后再發(fā)出相應(yīng)操作指令,這樣就能輕松對(duì)不同種類(lèi)的并發(fā)操作加以區(qū)分。對(duì)于事件驅(qū)動(dòng)任務(wù)關(guān)系的處理問(wèn)題,程序員們可以使用位于最底層的事件分配器,這時(shí)工作人員必須先拆分相關(guān)函數(shù),如果拆分的過(guò)程中出現(xiàn)失誤或錯(cuò)誤,則會(huì)使函數(shù)大量分裂,這會(huì)加大網(wǎng)絡(luò)程序的調(diào)整難度,從而造成計(jì)算機(jī)大量泄漏出內(nèi)部所存儲(chǔ)的信息,如圖1所示。為了避免函數(shù)大量分裂這一狀況的出現(xiàn),程序員們可以使用profile開(kāi)發(fā)信息的方式來(lái)優(yōu)化調(diào)試過(guò)程,從而使程序的整體性能得到大幅的提升。(二)多線程并發(fā)模型。多線程并發(fā)模型可分為搶占式與協(xié)作式兩種,下文對(duì)這兩種調(diào)度方式分別展開(kāi)詳細(xì)的研究和分析。搶占式線程調(diào)度,指的是計(jì)算機(jī)的內(nèi)核控制和管理線程的方式,線程的工作狀況同應(yīng)用層對(duì)其的控制狀況沒(méi)有任何關(guān)聯(lián)。搶占式線程調(diào)度中的調(diào)度器嚴(yán)格把控CPU的控制權(quán),會(huì)根據(jù)前一線程運(yùn)行的具體情況加強(qiáng)調(diào)度,也就是說(shuō),可能在某個(gè)不應(yīng)該暫停線程工作的時(shí)刻,調(diào)度器會(huì)強(qiáng)制將CPU控制權(quán)轉(zhuǎn)交給另一個(gè)線程,這樣會(huì)讓前一個(gè)線程在運(yùn)行過(guò)程中無(wú)法滿足當(dāng)前線程的個(gè)性化需求,最終發(fā)生計(jì)算機(jī)的網(wǎng)絡(luò)系統(tǒng)徹底崩潰的問(wèn)題。協(xié)作式線程調(diào)度,指的是所有應(yīng)用層共同合作來(lái)讓線程處于工作狀態(tài)的方式。這種類(lèi)型的調(diào)度方式對(duì)于CPU的掌控程度要高于搶占式調(diào)度,只有在線程停止數(shù)據(jù)處理的時(shí)候,其他線程才能得到CPU的使用掌控權(quán)。但是在進(jìn)行高實(shí)時(shí)性的任務(wù)處理時(shí),選擇搶占式線程調(diào)度要好于協(xié)作式,因?yàn)閰f(xié)作式線程調(diào)度的實(shí)用性相對(duì)較低。通常情況下,線程調(diào)度器都位于計(jì)算機(jī)的內(nèi)核里面,所以必須經(jīng)過(guò)系統(tǒng)內(nèi)核的調(diào)用才能對(duì)線程進(jìn)行有效操作,這樣在處理復(fù)雜性和并發(fā)性較高的任務(wù)時(shí),會(huì)花費(fèi)更多時(shí)間,其性能的發(fā)揮還會(huì)被復(fù)雜的調(diào)度算法所影響,而且移植線程代碼是個(gè)極其困難的過(guò)程[2]。例如,Windows系統(tǒng)可以同時(shí)運(yùn)行搶占式線程和協(xié)作式線程,可是Linux系統(tǒng)卻只能運(yùn)行搶占式線程,而在一些資源非常稀少的系統(tǒng)內(nèi),根本就不能進(jìn)行線程的運(yùn)行。(三)混合性并發(fā)模型。從以上的分析可知,在工作中上述兩種模型均存在較大的局限性。因此,一些網(wǎng)絡(luò)程序員們?yōu)榱私鉀Q這個(gè)尷尬的局面,把這兩個(gè)模型進(jìn)行取長(zhǎng)補(bǔ)短的大膽融合,開(kāi)發(fā)出了新型的并發(fā)模型,即混合性并發(fā)模型,它的適用性更強(qiáng),適用范圍更加的廣泛。在實(shí)際的工作中,混合性并發(fā)模型可以轉(zhuǎn)換驅(qū)動(dòng)的方式。驅(qū)動(dòng)轉(zhuǎn)換的方式可分成翻譯時(shí)轉(zhuǎn)換、運(yùn)行時(shí)轉(zhuǎn)換兩種。翻譯時(shí)轉(zhuǎn)換目前有著一些尚未得到解決的問(wèn)題,所以其通用性非常低,也不能和其他體系的應(yīng)用程序展開(kāi)合作,運(yùn)行時(shí)轉(zhuǎn)換的實(shí)用性則相對(duì)較強(qiáng)。在當(dāng)前的技術(shù)條件下,能一并支持事件驅(qū)動(dòng)模型和多線程模型,可是其處理問(wèn)題所用的方式過(guò)于復(fù)雜?;旌闲圆l(fā)模型還處于剛剛興起的階段,其發(fā)展時(shí)間并不長(zhǎng),實(shí)際應(yīng)用也較少,相關(guān)性能仍需進(jìn)一步研究和改進(jìn)。

綜上所述,并發(fā)性問(wèn)題在網(wǎng)絡(luò)程序的開(kāi)發(fā)設(shè)計(jì)過(guò)程中是無(wú)法避免的,情況也極其復(fù)雜,以當(dāng)前的技術(shù)條件,還不能將這些問(wèn)題徹底地解決。因此,相關(guān)的技術(shù)人員們應(yīng)以實(shí)際情況出發(fā),結(jié)合具體的問(wèn)題采用針對(duì)性的并發(fā)處理模型,不斷提升自身的并發(fā)處理能力,具體事件具體解決,盡量縮小并發(fā)處理的規(guī)模,做到讓網(wǎng)絡(luò)程序的性能變得更為良好和穩(wěn)定。

參考文獻(xiàn):

[1]楊文福,王捷.網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)中的程序設(shè)計(jì)并發(fā)復(fù)雜性[J].信息通信,2016,(01):110-111.[2017-08-08].

[2]高偉,張學(xué)紅.關(guān)于網(wǎng)絡(luò)程序設(shè)計(jì)中的并發(fā)復(fù)雜性研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014,(12):49+51.[2017-08-08].

作者:劉西 單位:西南交通大學(xué)希望學(xué)院