淺談網(wǎng)絡(luò)系統(tǒng)設(shè)計復(fù)雜性
時間:2022-01-02 05:07:14
導(dǎo)語:淺談網(wǎng)絡(luò)系統(tǒng)設(shè)計復(fù)雜性一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要:在網(wǎng)絡(luò)系統(tǒng)程序的開發(fā)設(shè)計過程中,并發(fā)性和復(fù)雜性所造成的影響十分巨大,它們嚴重降低了網(wǎng)絡(luò)程序的開發(fā)效率,延長了設(shè)計時間。本文通過對網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性的原因進行分析,提出了事件驅(qū)動并發(fā)模型、多線程并發(fā)模型、混合性并發(fā)模型三大解決方法,為相關(guān)的互聯(lián)網(wǎng)研究提供一定的參考。
關(guān)鍵詞:網(wǎng)絡(luò)程序;并發(fā)性;復(fù)雜性
近年來,傳統(tǒng)的程序開發(fā)設(shè)計方法在高質(zhì)量網(wǎng)絡(luò)程序開發(fā)中暴露出了許多的問題,而造成這些問題的關(guān)鍵因素就是網(wǎng)絡(luò)環(huán)境和單機環(huán)境之間所存在的巨大差異。在產(chǎn)生的這些問題中有兩個問題最為突出,它們就是并發(fā)性問題和復(fù)雜性問題,其中并發(fā)性問題給網(wǎng)絡(luò)程序的設(shè)計和發(fā)展造成了極大的麻煩。怎樣處理好并發(fā)性問題所造成的困難,以及如何選擇合適的并發(fā)處理模型,成為了擺在所有程序員面前的最大挑戰(zhàn)。
一、網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性原因分析
通常來說,造成網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性的原因主要有三個方面。一是單機環(huán)境和網(wǎng)絡(luò)環(huán)境之間存在過于明顯的差距。由于這巨大的差距,混合性并發(fā)模型會暴露出發(fā)展時間過短和應(yīng)用面過窄的缺陷,為高質(zhì)量網(wǎng)絡(luò)程序的開發(fā)增添了很多的麻煩。二是設(shè)計理念受到了限制。軟件和硬件的功能限制著原先的程序設(shè)計理念,也是造成網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性存在的重要因素,設(shè)計理念的限制,也嚴重降低了整個網(wǎng)絡(luò)程序設(shè)計過程的效率。一般來說,網(wǎng)絡(luò)程序的并發(fā)性會以異構(gòu)性、異步性、訪問延誤和分布性體現(xiàn)出來。三是驅(qū)動模式有待優(yōu)化。在實際的工作中,根據(jù)具體的語義類別,網(wǎng)絡(luò)并發(fā)任務(wù)的處理辦法可以分成反應(yīng)式和前攝式。以反應(yīng)式模型為例,相應(yīng)事件發(fā)出通知后,應(yīng)用程序要先對通知進行接收,然后在這一基礎(chǔ)上根據(jù)具體發(fā)生的情況,針對性的發(fā)出相關(guān)的操作指令,整個過程中由操作結(jié)果所引發(fā)的錯誤會以函數(shù)返回值的形式體現(xiàn)出來,通過觀察函數(shù)返回值,工作人員便可獲知錯誤的具體情況。在事件完成的整個流程中,這些錯誤情況會以參數(shù)的形式參與和傳遞到各個相關(guān)的內(nèi)部程序中。當(dāng)需要同時發(fā)出很多個并發(fā)操作指令的時候,則應(yīng)先對整體程序添加一個標(biāo)識參數(shù),然后再發(fā)出相應(yīng)操作指令,這樣就能更細致的區(qū)分不同類型的并發(fā)操作。
二、網(wǎng)絡(luò)程序并發(fā)性與復(fù)雜性解決方法
(一)事件驅(qū)動并發(fā)模型。事件驅(qū)動并發(fā)模型已經(jīng)廣泛應(yīng)用在開發(fā)和設(shè)計網(wǎng)絡(luò)程序的工作當(dāng)中。通常按照實際工作情況和具體的語義類別將事件驅(qū)動并發(fā)模型分成兩種,第一種是反應(yīng)式,第二種是前攝式。在第一種模型中,計算機的應(yīng)用程序要先對事件發(fā)出的通知進行接收,然后根據(jù)具體事件發(fā)出有針對性的操作指令,在過程中若是出現(xiàn)操作結(jié)果的錯誤,函數(shù)的返回值會將錯誤反應(yīng)出來。在第二種模型中,計算機的應(yīng)用程序會先發(fā)送出具體的操作指令,等相應(yīng)事件結(jié)束之后,操作過程中出現(xiàn)的錯誤會被當(dāng)作完成整個事件的參數(shù),并傳送到對應(yīng)的應(yīng)用程序之中[1]。如果任務(wù)要求同時發(fā)送大量并發(fā)性操作,則需要先對整體程序添加一個標(biāo)識參數(shù),然后再發(fā)出相應(yīng)操作指令,這樣就能輕松對不同種類的并發(fā)操作加以區(qū)分。對于事件驅(qū)動任務(wù)關(guān)系的處理問題,程序員們可以使用位于最底層的事件分配器,這時工作人員必須先拆分相關(guān)函數(shù),如果拆分的過程中出現(xiàn)失誤或錯誤,則會使函數(shù)大量分裂,這會加大網(wǎng)絡(luò)程序的調(diào)整難度,從而造成計算機大量泄漏出內(nèi)部所存儲的信息,如圖1所示。為了避免函數(shù)大量分裂這一狀況的出現(xiàn),程序員們可以使用profile開發(fā)信息的方式來優(yōu)化調(diào)試過程,從而使程序的整體性能得到大幅的提升。(二)多線程并發(fā)模型。多線程并發(fā)模型可分為搶占式與協(xié)作式兩種,下文對這兩種調(diào)度方式分別展開詳細的研究和分析。搶占式線程調(diào)度,指的是計算機的內(nèi)核控制和管理線程的方式,線程的工作狀況同應(yīng)用層對其的控制狀況沒有任何關(guān)聯(lián)。搶占式線程調(diào)度中的調(diào)度器嚴格把控CPU的控制權(quán),會根據(jù)前一線程運行的具體情況加強調(diào)度,也就是說,可能在某個不應(yīng)該暫停線程工作的時刻,調(diào)度器會強制將CPU控制權(quán)轉(zhuǎn)交給另一個線程,這樣會讓前一個線程在運行過程中無法滿足當(dāng)前線程的個性化需求,最終發(fā)生計算機的網(wǎng)絡(luò)系統(tǒng)徹底崩潰的問題。協(xié)作式線程調(diào)度,指的是所有應(yīng)用層共同合作來讓線程處于工作狀態(tài)的方式。這種類型的調(diào)度方式對于CPU的掌控程度要高于搶占式調(diào)度,只有在線程停止數(shù)據(jù)處理的時候,其他線程才能得到CPU的使用掌控權(quán)。但是在進行高實時性的任務(wù)處理時,選擇搶占式線程調(diào)度要好于協(xié)作式,因為協(xié)作式線程調(diào)度的實用性相對較低。通常情況下,線程調(diào)度器都位于計算機的內(nèi)核里面,所以必須經(jīng)過系統(tǒng)內(nèi)核的調(diào)用才能對線程進行有效操作,這樣在處理復(fù)雜性和并發(fā)性較高的任務(wù)時,會花費更多時間,其性能的發(fā)揮還會被復(fù)雜的調(diào)度算法所影響,而且移植線程代碼是個極其困難的過程[2]。例如,Windows系統(tǒng)可以同時運行搶占式線程和協(xié)作式線程,可是Linux系統(tǒng)卻只能運行搶占式線程,而在一些資源非常稀少的系統(tǒng)內(nèi),根本就不能進行線程的運行。(三)混合性并發(fā)模型。從以上的分析可知,在工作中上述兩種模型均存在較大的局限性。因此,一些網(wǎng)絡(luò)程序員們?yōu)榱私鉀Q這個尷尬的局面,把這兩個模型進行取長補短的大膽融合,開發(fā)出了新型的并發(fā)模型,即混合性并發(fā)模型,它的適用性更強,適用范圍更加的廣泛。在實際的工作中,混合性并發(fā)模型可以轉(zhuǎn)換驅(qū)動的方式。驅(qū)動轉(zhuǎn)換的方式可分成翻譯時轉(zhuǎn)換、運行時轉(zhuǎn)換兩種。翻譯時轉(zhuǎn)換目前有著一些尚未得到解決的問題,所以其通用性非常低,也不能和其他體系的應(yīng)用程序展開合作,運行時轉(zhuǎn)換的實用性則相對較強。在當(dāng)前的技術(shù)條件下,能一并支持事件驅(qū)動模型和多線程模型,可是其處理問題所用的方式過于復(fù)雜。混合性并發(fā)模型還處于剛剛興起的階段,其發(fā)展時間并不長,實際應(yīng)用也較少,相關(guān)性能仍需進一步研究和改進。
綜上所述,并發(fā)性問題在網(wǎng)絡(luò)程序的開發(fā)設(shè)計過程中是無法避免的,情況也極其復(fù)雜,以當(dāng)前的技術(shù)條件,還不能將這些問題徹底地解決。因此,相關(guān)的技術(shù)人員們應(yīng)以實際情況出發(fā),結(jié)合具體的問題采用針對性的并發(fā)處理模型,不斷提升自身的并發(fā)處理能力,具體事件具體解決,盡量縮小并發(fā)處理的規(guī)模,做到讓網(wǎng)絡(luò)程序的性能變得更為良好和穩(wěn)定。
參考文獻:
[1]楊文福,王捷.網(wǎng)絡(luò)系統(tǒng)設(shè)計中的程序設(shè)計并發(fā)復(fù)雜性[J].信息通信,2016,(01):110-111.[2017-08-08].
[2]高偉,張學(xué)紅.關(guān)于網(wǎng)絡(luò)程序設(shè)計中的并發(fā)復(fù)雜性研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014,(12):49+51.[2017-08-08].
作者:劉西 單位:西南交通大學(xué)希望學(xué)院