淺談網絡系統設計復雜性

時間:2022-01-02 05:07:14

導語:淺談網絡系統設計復雜性一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

淺談網絡系統設計復雜性

摘要:在網絡系統程序的開發設計過程中,并發性和復雜性所造成的影響十分巨大,它們嚴重降低了網絡程序的開發效率,延長了設計時間。本文通過對網絡程序并發性與復雜性的原因進行分析,提出了事件驅動并發模型、多線程并發模型、混合性并發模型三大解決方法,為相關的互聯網研究提供一定的參考。

關鍵詞:網絡程序;并發性;復雜性

近年來,傳統的程序開發設計方法在高質量網絡程序開發中暴露出了許多的問題,而造成這些問題的關鍵因素就是網絡環境和單機環境之間所存在的巨大差異。在產生的這些問題中有兩個問題最為突出,它們就是并發性問題和復雜性問題,其中并發性問題給網絡程序的設計和發展造成了極大的麻煩。怎樣處理好并發性問題所造成的困難,以及如何選擇合適的并發處理模型,成為了擺在所有程序員面前的最大挑戰。

一、網絡程序并發性與復雜性原因分析

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

二、網絡程序并發性與復雜性解決方法

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

綜上所述,并發性問題在網絡程序的開發設計過程中是無法避免的,情況也極其復雜,以當前的技術條件,還不能將這些問題徹底地解決。因此,相關的技術人員們應以實際情況出發,結合具體的問題采用針對性的并發處理模型,不斷提升自身的并發處理能力,具體事件具體解決,盡量縮小并發處理的規模,做到讓網絡程序的性能變得更為良好和穩定。

參考文獻:

[1]楊文福,王捷.網絡系統設計中的程序設計并發復雜性[J].信息通信,2016,(01):110-111.[2017-08-08].

[2]高偉,張學紅.關于網絡程序設計中的并發復雜性研究[J].網絡安全技術與應用,2014,(12):49+51.[2017-08-08].

作者:劉西 單位:西南交通大學希望學院