基于Akka的高可靠分布式控制系统设计与实现
2022-02-25吕海东
吕海东
(大连理工大学, 城市学院, 辽宁, 大连 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只有接收到消息后,才可以执行指定的功能。……
