《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于AIO模型的高效通信架構在光伏終端數據采集的應用
基于AIO模型的高效通信架構在光伏終端數據采集的應用
2018智能電網增刊
魏曉蔚,繩 潔,岳玉先,汝銳銳
國網山東省電力公司聊城供電公司,山東 聊城 252000
摘要: 在國家節能環保政策扶持下,光伏發電發展迅速,但是其特殊的地理分散式發電主站結構,在發電運行過程中的控制下發、數據采集等方面,與傳統的集中式發電有明顯的差異。因此,需要一種高效、穩定的數據傳輸架構,實現廣域分布式發電終端的高效數據通信。AIO是一種面向網絡通訊的異步非阻塞框架,對比其他傳統的網絡通信模型,在轉發效率、并發能力、資源利用率方面都有比較明顯的優勢,非常適合作為光伏發電領域中高效穩定數據傳輸的解決方案。
中圖分類號: TM615
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2018.S1.073
Abstract:
Key words :

0 引言

    太陽能是目前最為清潔和安全的可再生資源,是傳統化石能源的最佳能源替代品。但是太陽能的地理分布廣泛,需要較大的采集面積,因此太陽能的利用注定是分布式的結構。光伏發電將太陽能直接轉化為電力資源,對太陽能的利用率比較高,但是其發電裝置必然離散地分布在相對廣范的地理范圍內。因此,對于發電裝置的管理、監測、控制,必然需要通過遠程通信來實現,并確保數據傳輸的安全、穩定、高效。

    隨著智能電網技術的發展,目前對于光伏發電終端的數據通信手段,基本上采用基于TCP/IP網絡通信方式。經過多年的技術進步和發展,網路通信組件的模型的發展大體上經歷了BIO(同步阻塞)、NIO(同步非阻塞)、AIO(異步非阻塞)3個階段。

1  BIO—同步阻塞模型

    BIO是基于傳統的基本C/S模型,著重于兩個進程間實現網絡通信。其中,服務端提供基于服務本地的IP和端口號的網絡偵聽服務;客戶端向該偵聽發起通信連接請求,經過3次請求和應答握手,在成功后雙方建立基于同步阻塞式的Socket的通信連接。

    BIO模型在服務端的實現一般需要一個常駐的線程(偵聽線程),用于維持網絡偵聽服務;并維護一系列線程(處理線程),用于每個連接的處理。當客戶端發起一個請求后,服務偵聽線程會檢查當前持有的處理線程中是否有閑置資源:如果有,則將連接請求轉入線程進行處理;如果沒有,則新建線程用于處理,并在無法新增線程時,偵聽線程需要持續等待,直到有處理線程資源釋放。在處理線程中,對連接的后續傳輸處理完成后,通過網絡輸出流發送應答給客戶端。

    BIO可以引入線程池進行優化[1],其網路服務支持能力會得到一定的提升,優化后的BIO的模型結構如圖1所示。

wxw-t1.gif

    在這種模式下,存在兩個問題:(1)在處理線程資源緊張時,偵聽線程處于阻塞狀態,無法響應新的連接請求;(2)每個連接必須用獨立的線程進行處理,在連接請求徒增的高并發場景下,服務端缺乏必要的處理伸縮彈性,在硬件處理上限不變的情況下,無法適應急速增長的連接請求和傳輸處理。因此,在高并發網絡應用環境下,BIO會發生會出現大量的請求連接超時,服務端資源消耗持續在高水位,最終導致整體的服務處于癱瘓狀態。

    BIO模型能夠支持的穩定并發連接一般不超過3 000。在光伏發電領域的背景下,基本上無法滿足對于大量分布式發電設備的通信支撐要求。

2  NIO——同步非阻塞模型

    在BIO使用過程中,在高并發和高吞吐的網絡環境下,服務端通常只能保證1 024~2 048個套接字連接,這對于廣域網并發訪問,顯然是不夠的。NIO的出現就是針對BIO在實戰中對于網絡服務支持的不足。

    同步非阻塞模型,采用Reactor基礎設計模式——基于事件驅動的同步式基礎設計模式[2]

    首先,采用channel對連接進行抽象,將連接同具體的線程資源脫離開,解除了BIO中連接和線程之間的1:1對應關系,使得連接空閑時(無數據傳輸時),線程資源得以回收并重用。

    其次,提供同步式的事件分離調度器(實際是多個分離器,以優化連接管理和調度),將每個channel的讀事件和寫事件在分離調度器中進行事件注冊和網絡連接注冊,分離調度器定時掃描網絡連接注冊,當某個網絡連接有事件觸發時,分離調度器器才申請公共資源池中的線程資源進行處理,并加載時間注冊進行回調操作。

    最后,在NIO中特別提供了公共緩沖區——buffer,使得所有的讀寫數據,都存放在公共緩沖區中,讀寫事件被回調激活后,也是將特定緩沖區中的一塊資源調度給事件進行讀寫操作。這打破了BIO中每個連接被隔離開的內存管理,而是使得不同連接共享和復用內存,并在空閑時不再持有內存。

    NIO模型在經過系統架構和算法優化[3]后,其主要結構如圖2所示。

wxw-t2.gif

    NIO在理論上可以支持高達1萬的客戶端并發實時連接(保持連接,并且不停地進行數據傳輸),對于并發非實時連接(保持連接,數據通信的間隔不小于30 s)可以支持超過3萬客戶端[4]。因此,NIO初步滿足光伏發電領域的小范圍數據通信要求,但是對于更加廣域的發電終端連接就力不從心了,需要性能更加強大的長連接并發架構來解決問題。

3  AIO——異步非阻塞模型

    在NIO的結構中,需要向分離調度器注冊連接和讀寫事件,用于在網絡連接后,傳輸通過調度分離之后回調實際處理功能。在這個結構中,調度分離器實際上長時間處于高負載狀態,即使所有連接都沒有發生傳輸,依然需要不停地掃描注冊連接和事件,在客觀上調度分離器消耗了更多的系統資源。

    由于每個調度分離器內是串行循環掃描連接池和事件池,所以在響應速度上不可避免地有一定的延誤,尤其在高負載高并發的應用場景下,掃描周期會更長,或者創建更多的分離調度器,消耗更多的資源以換取掃描周期的縮短。在這種情況下,系統的資源和負載會被大量的額外消耗,用于實際網絡服務和業務處理的資源會被擠占。

    異步非阻塞模型采用Proactor基礎設計模式——基于事件驅動的異步式基礎設計模式[5-6]

    通過API向操作系統的網絡服務注冊異步連接讀寫事件,以及相應的數據緩沖區。

    當操作系統在底層發生網絡數據傳入時,操作系統將數據寫入響應的連接讀取緩沖區,并在寫入完成后通知注冊的AIO讀取事件;在應用中的AIO接收到讀取事件后,通過API將讀取緩沖區的數據取出用于業務處理。

    當業務功能需要發送數據時,調用AIO的發送API,將數據寫入發送緩沖區,操作系統的底層服務會從發送緩沖區獲得發送數據,并通過操作系統底層網絡服務執行發送操作,在完成后通知AIO注冊的寫事件,通知發送任務已經完成。

    本文中AIO網絡服務模型已經實際應用于山東某地的光伏發電項目,模型實現的具體結構如圖3所示。

wxw-t3.gif

    在AIO模型中取消了用于周期性掃描和調度的分離調度器,基本上消除了冗余的資源消耗。操作系統的底層網絡服務通過AIO的異步事件,直接與應用進行異步交互,使得網絡IO與業務處理通過共享數據緩沖區進行交互,同時又在線程任務處理上被分離開,極大地提升了網絡傳輸的長連接、高并發能力和數據高吞吐能力。

    在理論上,AIO的性能取決于業務處理和操作系統的底層網絡服務能力,理論上AIO模型不存在嚴重阻礙網絡傳輸的瓶頸。在現有的實際服務器和網絡環境下,AIO模型可以穩定支持高達10萬的并發長連接。所以,AIO模型對于廣域分布式的光伏發電設備的數據傳輸,可以提供足夠的并發支撐,可以滿足現有光伏發電應用的要求。

4  模型比較

    通過前文對于各種網絡通信模型的介紹,本文對各種模型進行匯總比較,以便于更加直觀地反映各種模型的能力,以及在光伏發電領域的應用前景。各種模型的具體對比數據如表1所示。

wxw-b1.gif

    (1)BIO :同步并阻塞,服務器實現模式為一個連接一個線程,即客戶端有連接請求時服務器端就需要啟動一個線程進行處理,如果這個連接不做任何事情,將會造成不必要的線程開銷,實際實現時,可以采用線程池進行優化。

    (2)NIO:同步非阻塞,服務器實現模式為一個請求一個線程,即客戶端發送的連接請求都會注冊到分離調度器上,分離調度器輪詢到連接有I/O請求時才啟動一個線程進行處理。

    (3)AIO:異步非阻塞,服務器實現模式為一個有效請求一個線程,客戶端的網絡I/O請求由OS先完成數據操作,再通知服務器應用去啟動線程進行處理。

    據此,可以分析并得出BIO、NIO、AIO的優缺點,以及它們適用的應用場景。

    (1)BIO方式適用于連接數目比較小且固定的架構,這種方式對服務器資源要求比較高,并發局限于應用中,但系統框架和實現直觀簡單,易理解。

    (2)NIO方式適用于連接數多且連接比較短(輕操作)的架構,并發局限于應用中,結構相對與BIO比較復雜。

    (3)AIO方式使用于連接數目多且連接比較長(重操作)的架構,充分調用操作系統參與并發操作,結構相比于NIO更加復雜。

    基于異步非阻塞通信(AIO)模型構建的數據通信服務,已經被應用于山東某地的光伏發電項目中,從結構上對光伏發電管理的數據拓撲進行了改進和優化,提升了對于發電終端的管理能力,提高了數據傳輸和通信的性能上限。改造前后,該項目的設備和網絡拓撲結構如圖4所示。

wxw-t4.gif

    從改造前后的對比可以看出,借助AIO的高并發高吞吐性能優勢,在通信拓撲中節省了轉發設備,精簡了部署的拓撲結構;在數據通信中由于更加簡化的架構,減小了通信異常發生的幾率;對于項目本身,降低了實施的設備成本,并且提高了系統的可維護性。

5  結論

    本文面向光伏發電領域的發電設備數據通信需要,針對其分布廣、離散度高的特點,分析現有的典型網絡通信結構,確立了異步非阻塞模型在光伏發電數據傳輸中,可以提供更加強大的基礎網絡服務能力,可以很好地支撐相對廣域范圍內的大量光伏發電設備的高并發、高吞吐數據傳輸要求,可以作為光伏發電信息化管理服務的基礎傳輸解決方案,并提供高可靠的數據傳輸保障,可以作為光伏發電的智慧化和智能化建設的網絡框架基礎。

參考文獻

[1] 王偉平,楊思勤. 基于NIO的高并發網絡服務器模型的研究與設計[J]. 硅谷, 2009(17): 18-19, 35.

[2] 葉柏龍,劉蓬.  Proactor模式的NIO框架的設計與實現[J]. 計算機應用與軟件, 2014(9): 110-113.

[3] LIBMAN A, GILBOURD V, 羅小平. 兩種高性能I/O設計模式的比較[J]. 程序員, 2007(4): 108-111.

[4] 喬平安 , 顏景善 ,周敏. 基于Linux系統的構建高性能服務器的研究[J]. 計算機與數字工程, 2016, 44(4): 653-657.

[5] 李璞, 張玲, 胡術, 等. 多線程環境下Reactor模式的研究與實現[J]. 網絡新媒體技術, 2017(2): 52-57.

[6] 劉蓬. NIO高性能框架的研究與應用[D]. 長沙: 湖南大學, 2013. 



作者信息:

魏曉蔚,繩  潔,岳玉先,汝銳銳

(國網山東省電力公司聊城供電公司,山東 聊城 252000)

此內容為AET網站原創,未經授權禁止轉載。
全部双色球号码查询 平特一肖一尾什么意思 江西多乐彩开奖直播 nba上海赛 幸运赛车的网址 今日股市行情分析 和双大数是哪几个号码 黑桃棋牌官网唯一 博乐填大坑下载免费 上海新阳股票 在家用手机做兼职赚钱