刘宏义
(解放军边防学院 战斗实验室,陕西 西安 710108)
基于DDS通信模型的数据管理问题研究
刘宏义
(解放军边防学院 战斗实验室,陕西 西安 710108)
DDS实时发布-订阅模型无中心,多备份特点给通信数据的管理带来了完整性和一致性的问题。不同于P2P分布式存储,DDS应用具有硬实时、数据量较少的特点,其数据处理的核心问题是在不明显影响实时性的情况下,保证分布式系统中数据的完整性和一致性。文中基于DDS使用的通信模型,研究分析了在此种通信模型下引发的持久化数据管理问题,并给出了相应的解决方案。
DDS;发布-订阅;一致性;负载分配
随着Internet技术的广泛应用和计算机技术的发展,各种应用系统的体系结构呈现出以网络为中心的趋势,这对通信的实时性、动态灵活性提出了更高要求,同时要求分布式系统各参与者间采用一种具有松散耦合特性和通信服务质量保障策略QoS(Quality of Service)支持的灵活通信模型和交互机制。OMG(Object Management Group)组织于2004年颁布的基于发布-订阅通信模型的信息交换规范DDS(Data Distribution Service),能够有效地解决上述问题。
实时发布-订阅通信模式具有无中心、数据多备份的特点。如何高效集约地管理和维护数据,使多个通信结点间保持历史数据的一致,成为实时发布-订阅通信系统研发设计中必须面对的挑战。仅从动态数据交换角度来说,发布-订阅模型无疑是最适用于松耦合数据交换的一种通信模式,但从静态数据访问角度来说,这种多数据源的通信方式存在潜在的数据一致性问题和负载分配问题。
如图1所示[1],DDS使用以数据为中心的通信模式,数据的存在与否并不依赖于某一个具体的物理结点。围绕着一个数据对象,数据发送者、接收者被抽象成为这一类数据的发布者、订阅者。应用程序将不用直接关心目的地的具体网络地址和端口,只要将需要共享的数据对象提交给DDS实现系统,由DDS负责基于消息内容进行无中心的传输,送达数据订阅端。
图1 DDS网络通信模型
相反,在以对象为中心的通信中,基本概念是应用程序间的接口,接口由一组已知类型方法组成。以对象为中心的系统由接口服务器和客户端组成,通信则基于客户端在对应服务器所服务的命名接口上调用方法。以数据为中心和以对象为中心的通信方式是分布式系统中互补的两种模式,前者更适合实时通信,后者更适合应用程序。
DDS系统本质上是将传输层协议进行封装,是一个典型的消息中间件。它直接提供给应用层程序标准的通信接口,让应用程序可以灵活地定义通信类型和通信质量需求(QoS),从根本上消除各种通信软件之间数据交换的障碍。DDS采用以数据为中心的发布-订阅模式可以良好地适应松耦合、无中心的分布式消息交换应用,数据发送、接收方可以自由加入和退出通信组。与有中心的SAFMQ(Store and Forward Message Queue)不同,DDS这种无中心的消息交换模型直接造成了对历史数据维护的困难,主要表现为数据一致性问题和负载分配问题两方面。
2.1 数据一致性问题
由于DDS的通信模式是以数据为中心,许多结点都可以向同一个通信组写入消息。在不考虑结点失败的情况下,设在一个通信组内总数据集合S={s1,s2,s3,…,sn},S由n个数据块组成,并且分别由数据写入者W={w1,w2,w3,…,wn}集合进行发布并记录在永久介质中,即每个写入者只维护编号与之相同的数据块,读取者集合R={r1,r2,r3,…,rm},每一个订阅者都拥有完备的数据集S。物理结点集合N={n1,n2,n3,…,nr},所拥有的数据集{s1,s2,s3,…,sn}。设ni={Ri,Wi|Ri⊆R且Wi⊆W,1≤i≤r|}
Ri∪Wi≠∅,ni∩nj=∅(1≤j≤r且i≠j)
当一个新的读取者rm+1加入到读取者集合中,请求历史数据时,数据提供结点应当拥有完整的数据集S(Si=S,1≪i≪r)。这样的结点需要满足条件1
ns={RS,WS|RS≠∅,WS=W,1≪s≪r|}
由于网络环境不稳定,满足条件1的结点会因为某种原因不存在于系统,因此rm+1将不能获得完整的数据集S,分布式结点中的数据视图将发生在同一时间点上不一致的情况。
2.2 负载分配问题
解决数据访问一致性问题的前提是在无中心的数据交换模型中选出一个保证具有完整数据集的结点(Master),所有数据请求全部由该结点负责传输。数据源的唯一性是数据访问一致性的必要保证。一个结点对历史数据的访问本质上是跨结点的内存访问。随着分布式系统的扩展,这种跨结点内存访问将会遇到结点I/O瓶颈,严重时将破坏数据传输的实时性。因此,不仅需要选择高效的存储方案,而且需要给上层应用程序提供负载分配的解决方案。
基于DDS的应用有其自身的特点:结构化的数据、较小却频繁的数据交换、硬实时性都使其区别于P2P的大规模数据传输。依据某种策略在某个通信范围内找到一个统一的历史数据维护结点(Master),负责向各结点提供统一的数据视图,并保证Master结点的可替代性,将是问题的关键。
3.1 数据一致性解决方案
DDS通信模型的基本操作单元是通信组,只有同一个通信组内的数据写入和读取者才能相互交换同种数据模型的数据。因此DDS数据一致性问题的原子问题即某一个通信组下数据的一致性问题。考虑到DDS应用程序需要很高的容错性,需要通过增加不同结点中完整数据的备份个数来增强系统鲁棒性。
3.1.1 完整数据集获取策略
满足条件1的结点才会拥有完备的数据集S,Wi=W条件与DDS松耦合性质冲突,应当通过满足Ri≠∅这个条件来获取完整的数据集合S。Ri需要满足另一个前提条件:Ri必须在S由空集变为非空集之前就存在于结点ni中,并且在nm+1请求历史数据之前没有退出过系统,这样才能保证最终Si=Sb。但这样的条件是苛刻的,不能容忍结点失败。因此需要引入数据校准的方式来将S进行传递,从而打破对于苛刻条件的依赖。数据校准步骤:(1) 通信域第1个结点1启动,将其选择为Master结点,并由系统产生一个R1专门订阅通信组内的数据,以满足条件1,此时数据通信开始,Master结点中的W1开始生产数据;(2) 第2个结点启动后,无论其上层应用是否请求历史数据,此结点都向Master结点请求其产生的所有历史数据,将完整的历史数据集复制于本地,同时由系统新建一个R2。这时结点2的W2向网络写入数据D《》2,由于Master具有R1,所以W2所写的数据也将传给Master一份加入到S中,此时结点1和2的数据集都为S={Di,D2};(3) 第3个结点启动,同样从Master处复制一份完整数据集S={D1,D2}到本地,同理建立W3和R3,写入D3;(4) 通信系统中每一个结点都拥有完整数据集S={D1,D2,D3},当结点1失效后,依然可以保证通信组中完整数据集的存在。校准流程如图2所示。
图2 数据校准实例
数据校准过程是为了避免数据集S的一致性随结点的进入和退出而损坏,与上层应用程序需要与否无关。通信数据是否需要进行持久化存储,是可选的QoS保证之一,若一个数据不需要持久化,那么不会启用校准策略。
3.1.2 数据内容一致性
Paxos算法较好地解决了分布式系统中多备份数据一致性问题[4]。Paxos算法提供了完整的理论证明,操作请求结点接收到超过一半结点的回应后即可开始操作数据,并且不会破坏一致性。为避免Paxos算法的“活锁”问题,将采用其改进算法Fast Paxos[4]。
Paxos算法及其改进算法直接适用于小规模数据(Zookeeper[5]建议<1 MB)一致性的达成。但DDS应用程序所产生的历史数据量较大,不能直接使用Paxos算法去对所有历史数据进行一致性维护,否则将会随着数据量的增大严重影响到系统实时性。因此需要一种方案来对某些系统关键部分进行一致性处理。
除去网络传输差错影响,可以认为从同一个结点获取的完整数据集合是相同的。有了数据维护结点(Master),数据内容一致性问题就转化为了Master选取的一致性问题。使用Paxos分布式一致性服务表现为将Master结点的ID号作为系统内一致性的操作对象,由Fast Paxos中的Leader[4]来提交Master的建议值,并在通信系统各个结点中达成Master的最终一致。
网络传输的差错或者人为的篡改都会造成从同一结点获取的数据内容不正确,将Master处的完整数据集使用MD5摘要算法生成一个唯一值,将这个值也作为一致性服务的操作对象,如果某个结点发现本身具有的数据集的摘要值与Master的摘要值不同,需要重新从Master处得到一份数据。保证自己维护的数据时刻与Master保持内容上的一致。
3.1.3 数据操作一致性
DDS给上层应用不仅要提供获取数据的功能,还应当具备数据操作的接口。完整数据集S在整个分布式系统中将会有很多备份,多个备份之间必须保持一致才能保证历史数据的一致。所有的数据操作请求应首先提交给Master结点,Master结点通知所有的结点按照此操作请求来操作数据。Master会对每一个数据操作进行编号,其他结点若没有收到值较小的操作则不会进行较大编号操作,防止了操作命令乱序。Master会在每个校准流程开始时给请求结点发送一个数据包,包括此数据副本的最近操作编号,结点校准完毕后,不再接受小于此编号的操作命令。每次对数据集的操作都会通过Master进行处理,这样的策略给事务的提交和回滚提供了可能。
图3 数据操作一致性实例
3.2 负载分配策略
随着结点扩展,如果依然按照单个通信组的处理方式选举出一个控制整个通信域的Master结点来保证数据的完整和一致,将会造成通信域中Master结点的过载,造成系统响应缓慢,失去了实时性的保证。因此需要一种合理的方案来降低结点负载量。
3.2.1 两种Master选举方法
(1)全局唯一Master。全局Master为实现功能将会加入通信域中所有的通信组。这种策略在结点数量不多的情况下还能适用,但系统的可扩展性将会很差。随着DDS应用结点的增多,通信域中任何一个结点都无法达到需要的I/O速度,这就导致一个请求有可能很久后才得到回应,破坏了实时性;
(2)每个通信组都包含一个Master。这样的策略可以通过控制Master选举过程来将不同通信组的Master分配到尽量分散的结点,从而降低具体Master结点的负载量。这样的策略理论上较好地增强了系统的可扩展性,但在实际情况中却并非如此。Master的选举牵涉到通信域内的一致性,所以当通信组很多的情况下,选举过程所耗费的时间将严重影响系统的实时性。
图4 不同Master的情况
Master的选举范围是问题的关键,应使用一种折中的策略来划分Master的选举范围,由使用DDS实现系统的系统管理员灵活配置Master选举范围,从而使Master负载问题和Master选举延时问题对系统实时性的影响降到最低。为了解决这个问题,需要引入命名空间的概念。
3.2.2 命名空间
设通信组的集合G={g1,g2,g3,…,gn},命名空间集合P={p1,p2,p3,…,pm},pi={Gi|G,1≤i≤m},Gi∩Gj=∅。一种DDS应用或许会涉及到多个数据类型,每个数据类型都划分出一个通信组,命名空间从数据相关性的角度对多个通信组再做出一个划分,同一个命名空间下的通信组会选择出同一个Master,拥有统一处理的数据集合。给上层应用提供了这种手段后,系统管理员可以根据具体需要来对通信组进行划分,找出实时性最好的划分方案。
该方案应用在了清华大学实时服务总线(RTSB)原型系统上。Master重选延迟和通信域结点个数及命名空间个数的关系如图5所示。结点个数越多或者同一时刻需要重选Master的命名空间越多,Master选举完成的延迟越长。因此命名空间的划分原则应当是,在单一结点服务能力不会出现瓶颈的情况下,尽量少的划分命名空间,才能保证系统的高可伸缩性。
图5 Master重选延迟
在实际应用中,就算引入了命名空间的概念,依然不能真正降低Master选举的时间,这就给系统响应实时性带来了隐患。命名空间中具有完整数据集的结点将会有很多,如果某结点仅为了获取数据而不需要操作数据,那么任何一个具有完整数据集的结点都可以作为数据的提供者,而无需等到选出Master后才响应数据请求。因此在一个命名空间中没有Master时,系统应当选取一个具有命名空间完整数据集的结点来作为数据提供结点,进一步增强系统实时性。
本文从以数据为中心的发布-订阅模型入手,研究分析了在这种通信模型下持久化数据的管理存在的问题,结合DDS通信模式,设计了灵活的数据管理域划分机制,选取了合适的数据管理结点选择策略,在不严重影响系统实时性的情况下,应用Paxos算法较好解决了DDS网络通信中间件在网络通信中历史数据一致性问题。
[1] Angelo Corsaro.Addressing the data-distribution challenges of next-generation business and mission-critical systems[EB/OL].(2008-11-13)[2016-03-12]http://www.dis.uniroma1.it/tucci/corsi/SD08/SD08-dds.pdf.
[2] Gerardo Pardo Castellote.OMG data-distribution service achitectural overview[C].Atlanta:IEEE International Conference on Distributed Computing Systems,2003.
[3] Woochul Kang.RDDS: a real-time data distribution service for cyber-physical systems[J].Industrial Informatics, 2012,8(2):393-405.
[4] Leslie Lamport.Fast paxos[J].Distributed Computing,2006,19(2):79-103.
[5] Flavio P Junqueira,Benjamin C Reed,Marco Serafni.Zab: high-performance broadcast for primary-backup systems[C].Salt Lake:IEEE/IFIP 41st International Conference on Dependable Systems&Networks,2011.
[6] Marco Primi.Paxos made code: implementing a high throughput atomic broadcast [D].Lugano:University of Lugano,2009.
[7] OMG.The real-time publish-subscribe wire protocol DDS interoperability wire protocol specification version2.1.OMG available specification formal[EB/OL] (2009-10-23)[2016-03-10]http://www.omg.org/spec/DDSI/2.1.
[8] 任昊利,李旺龙,张少杨,等.数据分发分发服务—以数据为中心的发布/订阅通信[M].北京:清华大学出版社,2014.
Research on Data Management Problems Based on DDS Communication Model
LIU Hongyi
(Battle Laboratory,College of the PLA Border,Xi’an 710108,China)
Non- center and multi-replica of this DDS real-time pub-sub model brings integrity and consistency challenges for data management. Different from P2P distributed storage problem, DDS applications has hard real-time/less data characteristics. Data management’s core problem is to ensure the integrity and consistency of the data in distributed systems under hard real-time environment. This paper starts from the communication model used by the DDS and then analyzes persistent data management problems caused by such model, given a kind of appropriate solutions.
DDS;pub-sub;consistency;load balancing
2016- 05- 11
刘宏义(1972-),男,副教授。研究方向:作战仿真和虚拟现实技术。
10.16180/j.cnki.issn1007-7820.2016.11.041
TN914
A
1007-7820(2016)11-146-04