




摘" 要:在數(shù)字經(jīng)濟發(fā)展的時代背景下,企業(yè)不斷面臨著數(shù)字化轉(zhuǎn)型的壓力與挑戰(zhàn)。許多能源企業(yè)也在積極探索數(shù)字化轉(zhuǎn)型的關(guān)鍵要素,數(shù)據(jù)被大多數(shù)人認(rèn)為是最為關(guān)鍵的要素之一。因此,數(shù)據(jù)傳輸?shù)陌踩煽恳沧兊脴O為重要。為確保海上風(fēng)電場數(shù)據(jù)的安全可靠傳輸,該文提出一種基于Kafka的數(shù)據(jù)傳輸系統(tǒng),可以屏蔽復(fù)雜網(wǎng)絡(luò)環(huán)境下的不穩(wěn)定性,保證數(shù)據(jù)不會丟失。實踐和測試結(jié)果表明,該系統(tǒng)不僅解決現(xiàn)有數(shù)據(jù)傳輸系統(tǒng)在網(wǎng)絡(luò)不穩(wěn)定和高并發(fā)傳輸?shù)确矫娴膯栴},還具有容量大、傳輸效率高及動態(tài)擴容等特點。該系統(tǒng)不僅有效解決海上風(fēng)電場數(shù)據(jù)的安全可靠傳輸,也為能源行業(yè)數(shù)據(jù)處理提供一種新的思路和工具。
關(guān)鍵詞:海上風(fēng)電場;海量數(shù)據(jù);安全可靠;Kafka;高并發(fā)
中圖分類號:TP3" " " " 文獻(xiàn)標(biāo)志碼:A" " " " " 文章編號:2095-2945(2023)31-0026-06
Abstract: In the era of digital economy, enterprises are constantly faced with the pressure and challenges fromdigital transformation. Many energy companies are also actively exploring the key elements of digital transformation, with data being considered one of the most critical elements. Therefore, the security and reliability of data transmission has become extremely important. In order to ensure the safe and reliable transmission of offshore wind farm data, this paper proposes a data transmission system based on Kafka, which can shield the instability in the complex network environment and ensure that the data will not be lost. Practice and test results show that the system not only solves the problems of network instability and high concurrent transmission of the existing data transmission system, but also has the characteristics of large capacity, high transmission efficiency and dynamic expansion. The system not only effectively solves the safe and reliable transmission of offshore wind farm data, but also provides a new idea and tool for data processing in the energy industry.
Keywords: offshore wind farm; massive data; safety and reliability; Kafka; high concurrency
隨著數(shù)字技術(shù)和信息通信技術(shù)的高速發(fā)展和廣泛應(yīng)用,我們迎來了一個全新的數(shù)字化時代。這個時代不僅對生活和生產(chǎn)方式產(chǎn)生了深刻影響,同時也對企業(yè)的經(jīng)營和發(fā)展提出了新的挑戰(zhàn)和要求。為了適應(yīng)這個時代的發(fā)展趨勢,企業(yè)需要進(jìn)行數(shù)字化轉(zhuǎn)型,以提高效率、降低成本并推出創(chuàng)新服務(wù),從而在激烈的市場競爭中獲得優(yōu)勢并取得成功[1]。
在當(dāng)今數(shù)字化時代,數(shù)據(jù)扮演著企業(yè)數(shù)字化轉(zhuǎn)型最為關(guān)鍵的角色之一。企業(yè)需要處理大量的數(shù)據(jù),包括客戶、業(yè)務(wù)、產(chǎn)品和運營等各種類型的數(shù)據(jù)。這些數(shù)據(jù)能夠提供有關(guān)客戶、市場、產(chǎn)品和競爭對手等方面有價值的信息,幫助企業(yè)做出正確的決策以及提高收益[2]。同時,隨著互聯(lián)網(wǎng)和物聯(lián)網(wǎng)技術(shù)的發(fā)展,數(shù)據(jù)產(chǎn)生和收集的速度也日益加快,數(shù)據(jù)量的增加也給數(shù)據(jù)采集和傳輸帶來了新的挑戰(zhàn)。
能源企業(yè)在數(shù)字化轉(zhuǎn)型的同時,也面臨著推動能源結(jié)構(gòu)轉(zhuǎn)型升級的重要任務(wù)。清潔能源的使用和研發(fā)成為能源企業(yè)的一項重要工作,同時需要加強節(jié)能減排和能效提升,推動低碳綠色發(fā)展模式的形成,從而實現(xiàn)碳達(dá)峰、碳中和的目標(biāo)[3]。在此背景下,海上風(fēng)電作為一種重要的清潔能源,成為沿海城市大力興建海上風(fēng)電場的重點方向之一。而對于能源企業(yè)來說,監(jiān)控海上風(fēng)電場的運行狀態(tài),保證其健康運行至關(guān)重要。此外,能源企業(yè)也在建設(shè)自己的數(shù)據(jù)中心,需要將各個海上風(fēng)電場的數(shù)據(jù)都上傳到數(shù)據(jù)中心,以進(jìn)行統(tǒng)一分析挖掘和應(yīng)用。例如,結(jié)構(gòu)檢測、故障預(yù)警、智能運維等應(yīng)用可以幫助保證風(fēng)電場的健康運行,提高整體的發(fā)電效率,降低運營成本,帶來更高的經(jīng)濟效益。
為了確保海上風(fēng)電場的海量數(shù)據(jù)能夠在復(fù)雜的網(wǎng)絡(luò)環(huán)境中穩(wěn)定傳輸并避免丟失,同時保障數(shù)據(jù)的安全可靠,需要構(gòu)建一套可靠的數(shù)據(jù)傳輸系統(tǒng)。本文將介紹以Kafka作為核心中間件的數(shù)據(jù)傳輸系統(tǒng)的設(shè)計和實現(xiàn)方法,旨在為海上風(fēng)電場數(shù)據(jù)傳輸提供可靠解決方案。
1" 數(shù)據(jù)傳輸?shù)男枨?/p>
現(xiàn)代海上風(fēng)電場中的各種設(shè)備,如風(fēng)機、塔筒、升壓站、海纜和主控輔控等,配備了大量傳感器,每秒鐘都會產(chǎn)生大量數(shù)據(jù)。例如,一個300 MW的海上風(fēng)電場每秒鐘最高可產(chǎn)生上百兆字節(jié)的數(shù)據(jù),每天的數(shù)據(jù)量可以達(dá)到近TB級別,這就要求數(shù)據(jù)傳輸系統(tǒng)必須支持?jǐn)?shù)據(jù)壓縮和高并發(fā)處理能力。
海上風(fēng)電場的生產(chǎn)運維數(shù)據(jù)產(chǎn)生的數(shù)據(jù)量龐大,這些數(shù)據(jù)需要從陸上集控中心傳輸?shù)絽^(qū)域集控中心或者其他數(shù)據(jù)中心,傳輸距離一般是幾百公里甚至上千公里,對于數(shù)據(jù)的可靠傳輸要求較高。由于距離遠(yuǎn)且網(wǎng)絡(luò)環(huán)境復(fù)雜,網(wǎng)絡(luò)穩(wěn)定性不夠高,目前有3種網(wǎng)絡(luò)方案可供選擇。電力專線成本較高,只有電網(wǎng)采用;運營商專線成本較低,網(wǎng)絡(luò)效率和穩(wěn)定性較高;普通公網(wǎng)成本最低,但網(wǎng)絡(luò)效率和穩(wěn)定性稍差。無論使用哪種網(wǎng)絡(luò)方案,都可能遇到網(wǎng)絡(luò)問題,因此,需要支持?jǐn)帱c續(xù)傳的功能,以保證數(shù)據(jù)傳輸?shù)目煽啃浴4送猓o(hù)網(wǎng)行動也需要考慮,有時需要斷開對外網(wǎng)絡(luò),因此,數(shù)據(jù)傳輸系統(tǒng)需要支持恢復(fù)中斷傳輸?shù)墓δ堋?/p>
現(xiàn)有數(shù)據(jù)傳統(tǒng)系統(tǒng)更多的是采用直接傳輸方法,該方法傳輸可靠性更多地依賴網(wǎng)絡(luò)的穩(wěn)定性和帶寬。如果遇到網(wǎng)絡(luò)阻塞或護(hù)網(wǎng)行動等情況,傳統(tǒng)的數(shù)據(jù)傳輸系統(tǒng)可能會導(dǎo)致幾天的數(shù)據(jù)丟失,無法回傳至數(shù)據(jù)中心[4-5]。此外,海上風(fēng)電場的數(shù)據(jù)也有瞬時高峰點,例如結(jié)構(gòu)檢測的數(shù)據(jù)可能每隔幾十秒會回傳接近百兆的數(shù)據(jù),但由于網(wǎng)絡(luò)帶寬的限制,可能會導(dǎo)致部分?jǐn)?shù)據(jù)丟失。相比之下,基于Kafka的數(shù)據(jù)傳輸系統(tǒng)將Kafka作為數(shù)據(jù)緩存中間件,不僅能夠屏蔽網(wǎng)絡(luò)的不穩(wěn)定,而且能夠?qū)⑺矔r高峰的數(shù)據(jù)傳輸變?yōu)槠骄弬鬏敚鸬较鞣逄罟鹊淖饔谩H鐖D1所示,坐標(biāo)系里波動較大的線表示風(fēng)電場產(chǎn)生的數(shù)據(jù)量,比較平緩的線是系統(tǒng)能處理的數(shù)據(jù)量,系統(tǒng)能夠?qū)⒉▌虞^大的線的高峰放到低谷的時候處理。
2" 系統(tǒng)架構(gòu)設(shè)計
2.1" 網(wǎng)絡(luò)架構(gòu)設(shè)計
為了實現(xiàn)海上風(fēng)電場的數(shù)據(jù)傳輸,第一步需要的做的是網(wǎng)絡(luò)鏈路的設(shè)計。數(shù)據(jù)需要從集控中心傳輸?shù)骄嚯x幾百公里甚至上千公里外的數(shù)據(jù)中心,通常情況下,可以采用普通公網(wǎng)或者運營商專線等網(wǎng)絡(luò)。還可以在這基礎(chǔ)上,通過VPN隧道技術(shù)將兩地網(wǎng)絡(luò)連接在一起,如圖2所示。為了實現(xiàn)這個過程,需要使用帶有路由功能和重連功能的VPN設(shè)備,該設(shè)備一端連接到防火墻,另一端連接到內(nèi)部交換機,通過交換機將內(nèi)部服務(wù)器連接在一起。
通過這種組網(wǎng)方式,結(jié)合路由規(guī)則設(shè)置,集控中心和數(shù)據(jù)中心之間相當(dāng)于處于同一局域網(wǎng)內(nèi),從而極大地簡化了應(yīng)用層數(shù)據(jù)傳輸系統(tǒng)的設(shè)計。此外,由于VPN隧道技術(shù)已在網(wǎng)絡(luò)層或鏈路層對傳輸通道進(jìn)行了加密,因此在應(yīng)用層就無需再對數(shù)據(jù)進(jìn)行加密,既能確保數(shù)據(jù)傳輸?shù)陌踩蔡岣吡藬?shù)據(jù)處理的吞吐量。
2.2" 應(yīng)用架構(gòu)設(shè)計
與一般的應(yīng)用系統(tǒng)不同,數(shù)據(jù)傳輸系統(tǒng)由2個系統(tǒng)組成:數(shù)據(jù)生產(chǎn)系統(tǒng)和數(shù)據(jù)消費系統(tǒng),如圖3所示。數(shù)據(jù)生產(chǎn)系統(tǒng)部署在集控中心內(nèi),負(fù)責(zé)將整個風(fēng)電場的數(shù)據(jù)收集后寫入Kafka消息隊列;而數(shù)據(jù)消費系統(tǒng)則部署在數(shù)據(jù)中心內(nèi),從Kafka消息隊列獲取數(shù)據(jù)后進(jìn)行存儲、分析或者展示。
其中一個關(guān)鍵點,Kafka消息隊列一定是部署在集控中心側(cè)。由于公網(wǎng)或者專線的穩(wěn)定性可能會有波動,或者需要進(jìn)行護(hù)網(wǎng)行動,只有部署在集控中心側(cè),并與數(shù)據(jù)生產(chǎn)系統(tǒng)處于同一局域網(wǎng)內(nèi),才能最大程度上避免數(shù)據(jù)丟失[6]。
3" 系統(tǒng)架構(gòu)設(shè)計
3.1" 數(shù)據(jù)生產(chǎn)系統(tǒng)
數(shù)據(jù)生產(chǎn)系統(tǒng)的主要功能是從海上風(fēng)電場的各種設(shè)備或SCADA系統(tǒng)中獲取數(shù)據(jù),并將這些數(shù)據(jù)寫入Kafka消息隊列。由于風(fēng)電場的設(shè)備類型繁多,并且采用的數(shù)據(jù)協(xié)議也不統(tǒng)一,包括modbus、104規(guī)約、snmp和ftp文件等[7]。因此,在實現(xiàn)數(shù)據(jù)生產(chǎn)系統(tǒng)時,關(guān)鍵之一是考慮其擴展性,以支持新的數(shù)據(jù)協(xié)議。數(shù)據(jù)生產(chǎn)系統(tǒng)主要由以下模塊組成:用戶權(quán)限模塊、設(shè)備管理模塊、數(shù)據(jù)采集模塊和數(shù)據(jù)存儲模塊,如圖4所示。
用戶權(quán)限模塊是數(shù)據(jù)生產(chǎn)系統(tǒng)的基本功能之一,其主要職責(zé)是管理用戶和管理用戶的權(quán)限。用戶權(quán)限模塊允許管理員創(chuàng)建和管理用戶賬號,并授予不同用戶不同的權(quán)限。通過該模塊,管理員可以管理用戶的登錄和訪問權(quán)限,確保系統(tǒng)的安全性和合規(guī)性。
設(shè)備管理模塊是數(shù)據(jù)生產(chǎn)系統(tǒng)的另一個重要功能模塊,其主要職責(zé)是管理設(shè)備。該模塊允許管理員對設(shè)備進(jìn)行管理和配置。管理員可以設(shè)置每個設(shè)備的數(shù)據(jù)協(xié)議,以確保系統(tǒng)能夠正確解析設(shè)備發(fā)送的數(shù)據(jù)。此外,設(shè)備管理模塊還維護(hù)著設(shè)備傳感器測點的相關(guān)性信息,以便在數(shù)據(jù)采集過程中能夠準(zhǔn)確地識別和處理來自各個傳感器的數(shù)據(jù)。
數(shù)據(jù)采集模塊是數(shù)據(jù)生產(chǎn)系統(tǒng)的核心模塊之一,其主要功能是解析各種數(shù)據(jù)協(xié)議,并采用插件式管理這些解析器,以便擴展支持新的數(shù)據(jù)協(xié)議。數(shù)據(jù)采集模塊負(fù)責(zé)與設(shè)備通信,解析設(shè)備發(fā)送的原始數(shù)據(jù),并將其轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)格式。解析后的數(shù)據(jù)會被發(fā)送到數(shù)據(jù)存儲模塊,以便寫入Kafka消息隊列。
數(shù)據(jù)采集模塊的協(xié)議擴展可以采用靜態(tài)模式和動態(tài)模式。靜態(tài)模式指在編譯前就預(yù)先開發(fā)好新的數(shù)據(jù)協(xié)議解析器,并在編譯時一起打包部署。這種模式的優(yōu)點是代碼相對簡潔,只需面向接口進(jìn)行編程,易于實現(xiàn)。然而,缺點是需要重新編譯整個項目,并進(jìn)行打包部署,相當(dāng)于需要停止原有系統(tǒng)的運行。另一方面,動態(tài)模式允許在系統(tǒng)運行時動態(tài)添加新開發(fā)的數(shù)據(jù)協(xié)議解析器。這種模式的實現(xiàn)相對困難,需要使用自定義類加載器等技術(shù)來實現(xiàn)動態(tài)加載。雖然動態(tài)模式具有靈活性,但其實現(xiàn)較為復(fù)雜。在本系統(tǒng)中,采用了靜態(tài)模式來實現(xiàn)協(xié)議擴展。對于已經(jīng)建設(shè)完成的海上風(fēng)電場而言,其設(shè)備使用的數(shù)據(jù)協(xié)議是確定的。因此,在部署和上線階段,可以預(yù)先開發(fā)并包含所有可能使用的數(shù)據(jù)協(xié)議解析器。
數(shù)據(jù)存儲模塊是數(shù)據(jù)生產(chǎn)系統(tǒng)的另一個核心模塊,其主要功能是將用戶等相關(guān)的配置信息存儲在MySQL數(shù)據(jù)庫中,并將解析后的設(shè)備數(shù)據(jù)寫入Kafka消息隊列。該模塊負(fù)責(zé)將數(shù)據(jù)發(fā)送到適當(dāng)?shù)腒afka主題,以供后續(xù)的數(shù)據(jù)處理和分析使用。
數(shù)據(jù)存儲模塊在數(shù)據(jù)存儲的同時,具有一個重要功能,即判斷從設(shè)備獲取的數(shù)據(jù)是否需要寫入Kafka。為什么不直接將所有設(shè)備的數(shù)據(jù)寫入Kafka并傳送回數(shù)據(jù)中心呢?這是因為許多設(shè)備的數(shù)據(jù)并不一直變化。例如,對于一個開關(guān)量,在較長一段時間內(nèi)可能保持為開或者關(guān),變化并不頻繁。類似地,某些設(shè)備的模擬量(如電壓或電流)在一段時間內(nèi)也可能保持不變。因此,對于這些變化緩慢的數(shù)據(jù),只需在數(shù)據(jù)發(fā)生變化時立即寫入Kafka,而對于數(shù)據(jù)未發(fā)生變化的情況,定期寫入Kafka即可。
數(shù)據(jù)存儲模塊通過緩存來實現(xiàn)這個邏輯。當(dāng)有新的數(shù)據(jù)進(jìn)來時,首先判斷緩存中是否存在該數(shù)據(jù)。如果不存在,則將數(shù)據(jù)以及獲取數(shù)據(jù)的時間戳存儲在緩存中并寫入Kafka。如果存在,則判斷新數(shù)據(jù)與緩存中的值是否相等。如果不相等,則直接更新緩存信息并寫入Kafka。如果相等,則判斷是否達(dá)到指定的時間間隔。如果尚未到達(dá)間隔時間,則不需要進(jìn)行任何處理。如果已經(jīng)到達(dá)間隔時間,則更新緩存信息并將數(shù)據(jù)寫入Kafka。這種方式的好處是可以降低Kafka并發(fā)寫入的壓力,提高Kafka集群的存儲效率。然而,這種方式也存在缺點。在數(shù)據(jù)消費系統(tǒng)將數(shù)據(jù)寫入數(shù)據(jù)庫后,當(dāng)需要從數(shù)據(jù)庫中讀取某個時間范圍內(nèi)的數(shù)據(jù)時,需要進(jìn)行數(shù)據(jù)填充操作。即使數(shù)據(jù)在數(shù)據(jù)庫中不存在,也需要根據(jù)之前的數(shù)據(jù)進(jìn)行填充。
3.2" Kafka集群
Kafka是由Apache Software Foundation開發(fā)的一個分布式流處理平臺,是一種高吞吐量、低延遲、可擴展的消息隊列系統(tǒng),通常用于大規(guī)模數(shù)據(jù)的實時處理和分析。其采用發(fā)布-訂閱模式來處理海量的消息流,可以支持持久化存儲和高效讀寫操作。Kafka主要用于構(gòu)建實時數(shù)據(jù)流管道和流處理應(yīng)用程序,比如數(shù)據(jù)收集、數(shù)據(jù)傳輸、數(shù)據(jù)處理和實時分析等領(lǐng)域,可以作為中間件,承擔(dān)各種數(shù)據(jù)流的傳輸和處理任務(wù),同時也可以與其他開源系統(tǒng)集成,如Hadoop、Storm、Spark等。總體來說,Kafka已經(jīng)成為了數(shù)據(jù)處理和分析領(lǐng)域的重要組成部分,為海量數(shù)據(jù)的處理和分析提供了高效、可靠、彈性的解決方案[8-9]。
在Kafka集群部署中,至少需要部署3個Broker節(jié)點。每個Broker節(jié)點上可以配置多個數(shù)據(jù)目錄,這樣可以提高集群的IO能力和數(shù)據(jù)的可靠性。通常情況下,配置的目錄數(shù)應(yīng)等于數(shù)據(jù)存儲盤的個數(shù)。為每個設(shè)備創(chuàng)建不同的主題(Topic)是一個良好的實踐。每個Topic的分區(qū)數(shù)(Partition)可以設(shè)置為9,這樣可以提高讀寫性能。然而,需要注意分區(qū)數(shù)不能設(shè)置過多,因為過多的分區(qū)會消耗更多的系統(tǒng)資源。同時,將分區(qū)設(shè)置為9有助于后期擴展Broker節(jié)點。將分區(qū)的副本數(shù)設(shè)置為2有助于提高數(shù)據(jù)的存儲可靠性,避免因為一個節(jié)點宕機導(dǎo)致數(shù)據(jù)丟失。副本數(shù)為2意味著每份數(shù)據(jù)在Kafka集群中存在2個副本。然而,需要避免設(shè)置過大的副本數(shù),以免占用過多的硬盤空間,導(dǎo)致Kafka集群的容量變小。
對于存儲容量評估,假設(shè)一個風(fēng)電場每天產(chǎn)生2 TB的數(shù)據(jù),并且最長的斷網(wǎng)時間為7 d。根據(jù)這些假設(shè),總共需要14 TB的存儲容量。然而,為了考慮容錯和Kafka節(jié)點數(shù)據(jù)存儲不平衡性,建議預(yù)留大約總?cè)萘康?0%,以提高可靠性。因此,該風(fēng)電場需要大約20 TB的存儲容量。此外,需要注意Kafka集群的數(shù)據(jù)過期策略設(shè)置。消息按過期時間進(jìn)行保留,建議將保留時間設(shè)置為斷開與公網(wǎng)連接的最長時間加1 d,也就是8 d。
對于Kafka集群的硬件要求,Kafka采用順序讀寫方式處理消息,并主要使用操作系統(tǒng)的Cache而不是大量內(nèi)存。根據(jù)測試和經(jīng)驗,機器的內(nèi)存通常只需32 GB就足夠,CPU只需8個核心。然而,為了確保即使一個節(jié)點宕機也不會影響Kafka集群的吞吐量,建議將內(nèi)存提升至64 GB,CPU提升至16個核心。
3.3" 數(shù)據(jù)消費系統(tǒng)
數(shù)據(jù)消費系統(tǒng)的主要作用是通過VPN連接到集控中心的Kafka集群,從Kafka中讀取數(shù)據(jù),并將讀取的數(shù)據(jù)寫入時序數(shù)據(jù)庫HBase中。同時,數(shù)據(jù)消費系統(tǒng)可以實時推送數(shù)據(jù)給前端大屏顯示或其他系統(tǒng)用于數(shù)據(jù)分析。該系統(tǒng)的主要模塊包括用戶權(quán)限模塊、數(shù)據(jù)解析模塊、數(shù)據(jù)轉(zhuǎn)發(fā)模塊和數(shù)據(jù)存儲模塊,如圖5所示。
用戶權(quán)限模塊的功能與數(shù)據(jù)生產(chǎn)系統(tǒng)類似,其主要職責(zé)是管理用戶和管理用戶的權(quán)限。
數(shù)據(jù)解析模塊的主要功能是對從Kafka獲取的數(shù)據(jù)進(jìn)行解析,并將消費信息回傳給Kafka集群。該模塊負(fù)責(zé)解析數(shù)據(jù)的結(jié)構(gòu)和格式,提取出有用的信息,以便進(jìn)一步進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)和數(shù)據(jù)存儲等操作。
數(shù)據(jù)轉(zhuǎn)發(fā)模塊的主要功能是將解析后的數(shù)據(jù)通過常用的協(xié)議轉(zhuǎn)發(fā)給其他系統(tǒng)。該模塊支持多種協(xié)議,如WebSocket或MQTT,用于實時將最新的數(shù)據(jù)轉(zhuǎn)發(fā)給前端大屏顯示。同時,該模塊也支持通過TCP或UDP等協(xié)議將數(shù)據(jù)轉(zhuǎn)發(fā)給其他系統(tǒng),以供進(jìn)行數(shù)據(jù)分析和處理。
數(shù)據(jù)存儲模塊的主要功能是將用戶相關(guān)的配置信息存儲在MySQL數(shù)據(jù)庫中,并將解析后的數(shù)據(jù)寫入HBase數(shù)據(jù)庫。該模塊負(fù)責(zé)將解析后的數(shù)據(jù)持久化存儲,以便后續(xù)的查詢和分析。同時,用戶的配置信息也可以被存儲和管理,以滿足系統(tǒng)的定制需求。
為了提高數(shù)據(jù)并發(fā)處理速度,數(shù)據(jù)解析模塊需要為每個Topic設(shè)置獨立的消費者組,且每個消費者組的消費者數(shù)量應(yīng)與對應(yīng)Topic的分區(qū)數(shù)量相等,這樣可以提高數(shù)據(jù)的并發(fā)處理能力。消費者組的消費者數(shù)量不應(yīng)該大于Topic的分區(qū)數(shù)量,超過分區(qū)數(shù)量的多余消費者無法被分配到分區(qū),造成系統(tǒng)資源浪費。
另一個關(guān)鍵點是,在將消息消費進(jìn)度回傳給Kafka集群時,應(yīng)該采用手動提交方式,而不是自動提交。這是為了避免數(shù)據(jù)尚未完全落庫就已經(jīng)回傳了消費信息的情況。如果系統(tǒng)此時發(fā)生重啟,會導(dǎo)致部分?jǐn)?shù)據(jù)丟失。手動提交方式可以確保數(shù)據(jù)成功寫入存儲后再進(jìn)行消費信息的回傳。然而,這種提交方式可能導(dǎo)致消息重復(fù)消費的問題。為了解決這個問題,要求數(shù)據(jù)存儲模塊或者HBase能夠?qū)崿F(xiàn)冪等性。HBase作為一種KeyValue數(shù)據(jù)庫,通過邏輯上的覆蓋,相同的Key值可以避免存儲相同的數(shù)據(jù),從而實現(xiàn)冪等性。
數(shù)據(jù)生產(chǎn)系統(tǒng)和數(shù)據(jù)消費系統(tǒng)的后臺服務(wù)均采用當(dāng)前熱門的Springboot框架進(jìn)行開發(fā),并采用shiro實現(xiàn)用戶權(quán)限管理。Springboot框架的優(yōu)勢在于快速搭建Spring框架,自動整合第三方框架,能夠快速啟動web容器,內(nèi)嵌servlet容器,降低了對環(huán)境的要求,能夠使用命令直接執(zhí)行項目[10]。
3.4" 系統(tǒng)測試
該系統(tǒng)已經(jīng)在某個海上風(fēng)電場穩(wěn)定運行了數(shù)月時間,并成功將該風(fēng)電場的部分?jǐn)?shù)據(jù)安全可靠地傳輸至數(shù)據(jù)中心。因為現(xiàn)階段只是作為試點項目,并沒有進(jìn)行全部遷移,傳輸?shù)臄?shù)據(jù)量比較小,并不能驗證系統(tǒng)的數(shù)據(jù)處理能力,所以部署測試環(huán)境進(jìn)行數(shù)據(jù)處理的壓力測試。
測試環(huán)境部署了3個節(jié)點的Kafka集群,每個節(jié)點的機器配置為4核16 G的虛擬機。首先創(chuàng)建一個測試Topic,Partition為9,副本數(shù)為2,并通過Kafka自帶的工具進(jìn)行壓力測試。
模擬生產(chǎn)1 000萬的條數(shù)據(jù),每條數(shù)據(jù)大小為512字節(jié),合計約4.77 GB的數(shù)據(jù)量進(jìn)行測試。測試結(jié)果為平均每秒約365 MB的處理能力,每條消息的平均延遲時間為75.52 ms,最大延遲為862 ms,CPU負(fù)載接近65%,內(nèi)存使用率45%左右。模擬消費1 000萬的條數(shù)據(jù),每條數(shù)據(jù)大小為512字節(jié),合計約4.77 GB的數(shù)據(jù)量進(jìn)行測試。測試結(jié)果:平均每秒約715 MB的處理能力,CPU和內(nèi)存負(fù)載較低。
從測試中可以得出,數(shù)據(jù)生產(chǎn)端和消費端的數(shù)據(jù)處理能力已經(jīng)超過了需求,CPU和內(nèi)存的提升還可以進(jìn)一步提升數(shù)據(jù)能力。而實際項目中該系統(tǒng)的“瓶頸”在于公網(wǎng)的網(wǎng)絡(luò)帶寬,因為我們?nèi)粘J褂们д拙W(wǎng),其數(shù)據(jù)傳輸帶寬理論值是每秒125 MB,實際值每秒也可以在100 MB左右。
測試環(huán)境的模擬測試,是生產(chǎn)數(shù)據(jù)和消費數(shù)據(jù)單獨測試,并且不考慮容錯,與正式環(huán)境還是有差別的。正式環(huán)境不僅僅需要考慮容錯、數(shù)據(jù)過期處理,還需要考慮多客戶端連接等因素,所以建議正式環(huán)境建議把機器配置應(yīng)該不低于16核64 G。
4" 結(jié)論
本文闡述了海上風(fēng)電場數(shù)據(jù)傳輸?shù)谋尘啊⑿枨筇攸c,并提出了一種基于Kafka的數(shù)據(jù)傳輸系統(tǒng)的設(shè)計與實現(xiàn)方法。通過分析Kafka的架構(gòu)和實現(xiàn)原理,設(shè)計了一個高效、可靠的數(shù)據(jù)傳輸系統(tǒng),實現(xiàn)了數(shù)據(jù)的生產(chǎn)、傳輸和消費等功能。在實際應(yīng)用中驗證了該系統(tǒng)的可行性和有效性,并進(jìn)行了測試和優(yōu)化。
值得一提的是,Kafka已經(jīng)在互聯(lián)網(wǎng)企業(yè)中得到廣泛應(yīng)用,如實時數(shù)據(jù)流處理、日志管理和監(jiān)控、數(shù)據(jù)同步和復(fù)制、消息通知和推送等。在電力行業(yè)應(yīng)用還比較少,但是類似于互聯(lián)網(wǎng)企業(yè),電力行業(yè)生產(chǎn)過程中也會產(chǎn)生大量的實時數(shù)據(jù),例如發(fā)電機、變壓器、開關(guān)等設(shè)備的運行狀態(tài)數(shù)據(jù),這些數(shù)據(jù)同樣需要實時采集、傳輸、分析,以支持各種預(yù)測、決策和控制應(yīng)用。因此,Kafka作為一種高吞吐量、低延遲、可擴展的消息隊列系統(tǒng),可以滿足電力行業(yè)對實時數(shù)據(jù)采集和處理的需求。希望本文提出的基于Kafka的海上風(fēng)電場數(shù)據(jù)傳輸系統(tǒng)的設(shè)計與實現(xiàn)方法,能夠為電力行業(yè)數(shù)據(jù)處理提供一種新的思路和工具。
參考文獻(xiàn):
[1] 王琮.電力企業(yè)數(shù)字化轉(zhuǎn)型探索[J].華北電業(yè),2022,337(11):58-59.
[2] 石磊,何天翔,陳端兵.企業(yè)數(shù)據(jù)資產(chǎn)價值評估研究[J].中國資產(chǎn)評估,2023,277(4):20-30.
[3] 張佳鑾,王增栩,田中華.碳達(dá)峰碳中和背景下廣東省電力行業(yè)降碳路徑研究[J].科技和產(chǎn)業(yè),2022,22(8):61-67.
[4] 熊金蓮,劉豐,郭藝峰,等.海洋觀測數(shù)據(jù)傳輸系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2022,39(12):34-38,101.
[5] 陳明,花橋建,顧小紅,等.基于MQTT的水務(wù)數(shù)據(jù)傳輸系統(tǒng)設(shè)計開發(fā)[J].工業(yè)控制計算機,2022,35(5):6-8.
[6] 王飛,孫嬌嬌,丁文文.基于Netty和Kafka的工程機械車聯(lián)網(wǎng)數(shù)據(jù)采集系統(tǒng)設(shè)計方案[J].智能物聯(lián)技術(shù),2022,5(4):30-35.
[7] 李嘉輝.工業(yè)互聯(lián)網(wǎng)協(xié)議識別與解析方法研究及系統(tǒng)實現(xiàn)[D].西安:西安電子科技大學(xué),2022.
[8] 葉惠仙.基于Spark Streaming、Kafka構(gòu)建數(shù)據(jù)中心加工引擎的實踐[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2023,267(3):51-53.
[9] 黃凱方,劉誠,吳文波.Kafka在微眾平臺雙路由應(yīng)急切換中的探索與應(yīng)用[J].廣東通信技術(shù),2022,42(8):67-71.
[10] 王以伍,舒暉.基于SpringBoot+Vue前后端分離的高校實驗室預(yù)約管理系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代計算機,2023,29(1):114-117.