999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Akka的高可靠分布式控制系統設計與實現

2022-02-25 14:45:22呂海東
微型電腦應用 2022年2期
關鍵詞:設備系統

呂海東

(大連理工大學, 城市學院, 遼寧, 大連 116600)

0 引言

當今世界,隨著監測設備和控制設備日益大規模增加,尤其是物聯網(IoT)的迅猛發展[1],工業過程控制系統變得越來越復雜,已經由傳統的集中控制模式,全面轉變為分布式控制模式。

傳統的控制系統通常可以控制幾百或幾千的傳感器和執行設備,再多就感到力不從心,系統性能嚴重下降,實時性難以滿足實際需求。如一個大城市的交通信號控制系統,智慧城市控制系統,需要控制的各種設備可能超過幾十萬,甚至上百萬。

為了克服多線程編程復雜,難以實現真正的高并發性,高可靠性和實時性的問題,Lightbend推出了著名的Akka框架[2]。Akka為構建分布式、異步、高性能的實時系統提供了一種創新的編程模式模型。Akka使開發人員能夠輕松地使用高級抽象來構建異步響應式系統,不必處理諸如線程、互斥和死鎖之類難題。Akka將應用程序的行為和狀態封裝和建模為Actor(角色),如過程控制系統中的每個設備對應一個Actor,這些Actor通過傳遞消息進行相互協作,完成數據的采集、傳輸和處理[3]。

Actor的核心工作模式是,應用程序只通過相互發送消息與之交互,而不像傳統的面向對象編程模式直接調用對象的方法。

Akka的Actor對象占用資源非常少,按照Akka的官方文檔說明,Akka的Actor運行在Java的JVM中,1GB Heap的內存可以運行250萬個Actor對象,即可以模擬250萬個控制設置(如傳感器、執行器、轉換器等),通過增加計算機的內存,Akka可以控制的Actor數量急劇上升。

Akka中Actor的工作在消息驅動模式[4],不像傳統的編程模式通過調用對象的方法,或函數調用Actor功能,而是發送消息給Actor,Actor只有接收到消息后,才可以執行指定的功能。消息驅動完全工作在異步模式[5],與傳統的同步模式相比,沒有線程的阻塞、鎖等問題,極大提高了系統的處理性能。

1 系統總體架構設計

提出的過程控制系統基于Akka設計,當單個計算機無法滿足控制的設備數量需求時,可以通過Akka-Cluster模塊[6],實現多個計算機的集群,將Akka的Actor System向外擴展并跨越許多計算機,從而實現完全分布式處理。

當監控設備增多,單個節點服務器無法創建足夠多的參與者來映射每個設備,可采用Akka集群模塊構建節點群。每個節點上構建參與者系統,在網絡上監聽各個Actor System跨節點的消息傳輸。集群上的參與者可以互相發送消息,處理來自分布式系統中設備的監測數據。

每個節點Akka參與者系統,負責控制和監視該節點的所有參與者。每個參與者映射到物聯網設備,如溫度傳感器、壓力傳感器等設備,負責處理設備數據和執行設備(如流量控制閥等)的狀態。

通過Akka MQTT連接器[7],控制設備通過MQTT協議,通過發送消息將收集到的傳感器數據發送到其對應的Actor參與者。參與者通過定義由郵箱接收消息事件觸發的消息接收方法,并以異步響應式方式接收消息。Actor完全采用異步模型工作,不阻塞線程處理,可以處理大量的設備數據轉換。

Akka中的Actor非常輕量級,每個只消耗幾百個字節。根據Akka文檔,擁有1GB內存的節點可以創建大約250萬個Actor,而傳統的控制系統采用多線程模式只能有1 024個線程,只能支持連接1 020個設備。

在Akka-Cluster集群模塊的支持下,分布式控制系統的每個節點可以隨著需要控制的設備的數量多少進行動態的添加或移除Actor System節點,從而使平臺具有動態集群架構特性。基于Akka的控制系統總體架構如圖1所示。

圖1 基于Akka的控制系統總體架構圖

2 系統核心控制功能的Actor層設計與實現

Actor模型使用發送和接收消息來實現設備間的通信和相互協作,有利于并發性和并行性,Actor是非常簡單的抽象,有利于簡化控制系統的編程。

Actor工作在異步、非阻塞和高性能的事件驅動編程模型中,所有Actor的工作必須通過給Actor發送消息實現。

為了在平臺中呈現實際的設備,使用Scala開發了用于定義設備和設備類型的Actor類,下面的代碼片段中展示了Actor對象的定義。

class DeviceType(name:String,mesureUnit:String){}

class Device(id:String,location:String,type:DeviceType){}

采集數據消息的設備是用Scala語言的case類實現的,當傳感器設備通過MQTT協議向Actor系統發送數據時,內置的Akka MQTT連接器將流轉換為Actor系統消息,該消息定義為以下代碼片段。

case class SensorData(device:DeviceModel,data:Double);

傳感器數據模型中包括采集數據的裝置device及其測量數據值data,最后用device屬性定義傳感器Actor,并重寫用接收到的消息觸發的超類Actor方法receive。

在創建Actor類之后,在Actor系統中創建它的對象,Actor系統運行并監視所有Actor。下面的代碼片段展示了如何使用Scala語言在Akka Actor系統中創建Actor對象,代碼中201為設備的編號。

implicit val system = ActorSystem();

val sensor201=system.actorOf(Props[SensorActor],"NO201");

在Actor對象創建之后,它可以監視自己的郵箱,當郵箱中接收到消息時,事件觸發器receive方法以響應式模式工作,不再阻塞線程。

在集群分布式系統中,參與者可以創建在遠程節點的Actor系統中,Akka Remote模塊實現參與者透明地向遠程參與者發送消息。

3 分布式集群設計與實現

為了滿足超大規模控制系統中設備和數據采集處理的需要,必須建立服務器集群。雖然Akka Actor非常輕量級,1GB HEAP的單臺服務器可以容納250萬個Actor,可以支持相同數量的控制設備,但單個節點不支持容錯,還需要集群架構。

Akka集群提供了一種基于點對點的容錯分布式集群成員服務,沒有單點故障或單點瓶頸。Akka集群允許構建分布式應用程序,其中一個應用程序或服務跨越多個節點(實際上是多個Actor系統)。

控制系統應用程序駐留在一個主節點中,主節點管理其他3個成員節點,這些節點可以動態加入集群。在每個節點上,應用程序類路徑群集配置文件應用程序.conf創建為以下代碼段。

akka {

cluster {

seed-nodes = [

"akka.tcp://IoTPlatform@210.30.108.224:2551",

"akka.tcp://IoTPlatform@210.30.108.225:2551",

"akka.tcp://IoTPlatform@210.30.108.226:2551"

]

}

}

akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"]

akka.cluster.metrics.native-library-extract-folder=${user.dir}/target/native

在Akka的集群系統中,先創建種子節點,再創建普通節點。當新普通節點啟動時,它向所有種子節點發送一條消息,實現與種子節點交互。

4 控制系統采集和控制信息的發送

在控制系統設備采集層,采用JavaScript框架Johnny Five框架連接傳感器等設備[8],傳感器數據通過Johnny Five獲取后,發送到Kafka服務器[9],并轉換到Actor郵箱。

關鍵是以Apache-Kafka[10]為中心來接收傳感器的監測數據,并向執行器發送動作指令。Apache-Kafka是一個發布/訂閱消息傳遞系統,設計用于分布式集群環境中,Kafka中的數據被持久地、有序地存儲,并且可以被確定地讀取。Kafka常用于實時流數據體系結構,實現數據的實時處理。

對于設備層,當數據被獲取時,發送到Kafka消息主題,Kafka節點是一個節點.js客戶端,與Apache Kafka 集成。

采集的數據發送到Kafka后,本控制系統使用Alpakka-Kafka連接器連接Apache-Kafka,并將Kafka隊列中的數據轉換為Akka-Stream。Alpakka是一個開源項目,用于實現流數據的自動感知和響應式集成數據流管道,它建立在Akka Streams之上,為反應式和面向流的編程提供DSL,同時內置了對背壓的支持,實現高可靠性的數據傳輸。

最后Alpakka消費者訂閱Kafka主題并將消息傳遞到Akka流中。為了連接Kafka,ActorSystem內的ConsumerSettings配置為Akka-Kafka,同時消息的消費者在應用程序.conf文件配置。將Actor被編程為Kafka client,在接收事件時對消息做出反應,然后將Akka消息發送給Webs Socket Actor,將數據發送給Web客戶端顯示。

5 總結

本文設計并實現了一個基于Akka框架的全新的高可靠分布式和基于響應式編程模型的的過程控制系統。與傳統的基于多線程的控制系統相比,該系統具有消息驅動、彈性、彈性、響應性強等優點,編程模型簡單,編程效率高,開發時間短等優點。

充分利用Akka的Actor模型,每個Actor只使用非常少的內存資源,可以使用實現一個普通PC控制上百萬設備的能力,這是傳統的基于線程的C語言編程模式難以企及的。

在Akka集群和遠程模塊的支持下,系統可以擴展和伸縮,可以支持多個核心CPU和多個服務器。使用Akka Actor模型,開發人員不必使用諸如線程和鎖之類的低級結構,這也是使用傳統編程模式難以實現超大規模的控制系統的原因所在。

在未來的控制系統的開發與應用中,基于角色模型為基礎的Akka技術,必將成為主流的技術和平臺。

猜你喜歡
設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
主站蜘蛛池模板: 国产久操视频| 五月综合色婷婷| 亚洲欧美不卡视频| 成人福利在线观看| 成人无码一区二区三区视频在线观看| 国产综合网站| 亚洲高清在线播放| 亚洲精品自拍区在线观看| 91青青草视频在线观看的| 免费99精品国产自在现线| 久久精品免费看一| 中国美女**毛片录像在线| 亚洲精品免费网站| 欧美福利在线播放| 欧美第一页在线| 国产成人免费高清AⅤ| 成人免费午夜视频| 91精品啪在线观看国产60岁| 亚洲码一区二区三区| 亚洲精品老司机| 久久特级毛片| 日韩毛片免费视频| 呦系列视频一区二区三区| 色亚洲成人| 国产精品专区第1页| 国产69精品久久久久妇女| 亚洲综合亚洲国产尤物| 2021天堂在线亚洲精品专区| 精品午夜国产福利观看| 无码人妻热线精品视频| 亚洲色无码专线精品观看| a级免费视频| 国产AV无码专区亚洲A∨毛片| 欧美va亚洲va香蕉在线| 手机在线国产精品| 久久精品国产999大香线焦| 毛片网站在线播放| 欧美伦理一区| 婷婷六月天激情| 亚洲国产日韩在线成人蜜芽| 午夜性爽视频男人的天堂| 日本亚洲欧美在线| 日韩无码黄色| 91po国产在线精品免费观看| 欧美日韩成人| 亚洲男人天堂网址| 亚洲日韩精品伊甸| 一边摸一边做爽的视频17国产| 国产无人区一区二区三区| 日韩亚洲综合在线| 日本国产在线| 免费一级毛片在线观看| 色偷偷男人的天堂亚洲av| 国产精品视频猛进猛出| 永久免费精品视频| 亚洲色婷婷一区二区| 狠狠亚洲五月天| 97在线观看视频免费| 亚洲婷婷六月| 婷婷综合缴情亚洲五月伊| 国产精品成人观看视频国产| 国产综合欧美| 亚洲第一黄色网址| 99久久精品美女高潮喷水| 暴力调教一区二区三区| 中文毛片无遮挡播放免费| 亚洲va精品中文字幕| 天堂成人在线| 日韩在线中文| 女人毛片a级大学毛片免费| 免费人成在线观看成人片| 国产中文一区二区苍井空| 国产一区二区三区精品久久呦| 欧美成人一级| 伊人网址在线| 91精品人妻互换| 国产欧美日韩在线在线不卡视频| 久久99蜜桃精品久久久久小说| 最新亚洲人成网站在线观看| 中文无码毛片又爽又刺激| 2024av在线无码中文最新| 91亚洲影院|