基于分布式内存数据的数据同步设计与实现

时间:2022-09-15 09:14:20

基于分布式内存数据的数据同步设计与实现

摘 要: 在变电站综合自动化系统中,需要对遥测、脉冲、遥信等实时数据进行处理,由于电力系统对这些数据的存取具有较高的实时性,因此监控系统通常会采用实时数据库进行数据的存储管理。随着监控系统需要处理数据单元的增加和机器节点数的增长,监控系统普遍采用分布式内存数据库进行实时数据的存储。分布式内存数据库的一个重要问题就是如何实现多个机器节点之间的数据更新同步,提出了利用多播和TCP实现快速有效的数据同步方式,支持灵活的组网方式,并设计了一套稳定可靠的数据传输机制,使得分布式内存数据库的各个节点的数据保持良好的一致性。

关键字: 分布式内存数据库; 数据同步; 变电站自动化系统; 监控系统

中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2014)02?0077?03

0 引 言

传统数据库的存储管理主要是利用磁盘进行数据存储,在存取数据过程中需要频繁对磁盘进行读写操作,而且磁盘读写的操作时间开销比较大。在变电站综合自动化系统中,需要对遥信、遥测等大量实时变化数据进行处理,而且系统对数据存取的实时性要求比较高,所以传统的数据库系统无法满足监控系统对实时数据的处理需要。目前大部分变电站综合自动化系统都会采用内存数据库对这些数据进行存储管理[1]。

为了保证数据处理的实时性和可靠性,监控系统中会同时使用内存和外部存储设备(如硬盘)作为数据的存储介质。监控系统将实时或关键性数据的操作在内存中进行处理,由于内存的数据存取速度比硬盘快,因此内存数据库对数据的处理比传统数据库更高效、更迅捷。硬盘等外部存储介质一般用于保存系统中的操作日志、历史信息和数据配置等信息。一般内存数据库在初始化的时候会从磁盘加载构建内存数据库所需要的一切信息,并为每条记录创建索引,进一步加快数据的存取操作[2]。由于电力系统信息化程度的提高,变电站综合自动化系统需要处理的数据越来越多,单一的计算机节点已经无法满足应用的需求,因此分布式多机系统成为监控系统的首选方案,并且每台机器都拥有自己的内存数据库[3]。当某一节点对内存数据库中的数据修改后,它需要将变化数据同步至其他机器节点,保证各个节点上数据的一致性。

本文提出了一种用于分布式内存数据库的可靠有效的数据同步方式,能够快速有效保持各个机器节点上对应数据的一致性。

1 分布式内存数据库介绍

分布式系统(Distributed Systems)是通过网络互联的多处理机体系结构上执行任务的系统,由多台计算机协同进行对数据的处理。分布式内存数据库系统由分布于多个计算机节点上的一个或多个内存数据库系统组成,它提供必要的存取手段来操作各个节点上的子数据库中的数据。分布式内存数据库在使用上可以看成一个完整的内存数据库,而数据则是分布在系统中各个节点上,节点与节点之间的数据可能存在耦合,因此这些耦合的数据就需要进行同步,保证节点数据的一致性[4]。

分布式内存数据库系统中各个机器节点上的数据通过某种数据分配策略被分发,存储在各个节点的内存中。数据的分发是非常灵活的,可以只分发某个节点所关心的部分数据,也可以是整个数据库中的数据。由于数据分布在不同的机器节点上,因此需要在某个机器节点上数据发生变化后将变化后的数据传送到其他关心这些数据的机器节点上,所以分布式内存数据库系统中机器节点之间的数据同步也是构成分布式内存数据库的一个重要组成部分[5]。在分布式内存数据库中,每个节点都有自己的实体管理单元,具有高度的自治性,数据是通过相应的数据分片策略被分发得到,存储在内存中。和集中式数据库对比,具有更高的可靠性和灵活性。

分布式内存数据库和传统内存数据库相比,具有以下几个优点:

(1) 分布式内存数据库降低了数据传送的开销,因为大多数数据库访问操作都是针对局部数据库的,而不是对其他节点数据库的访问;

(2) 分布式内存数据库系统的可靠性得到了很大的提高了,当网络发生故障时,依然允许对局部数据库进行操作,而且一个机器节点的故障不会影响其他机器节点的数据处理;

(3) 分布式内存数据库系统便于系统的扩充,增加一个新的局部数据库,或扩充网络中的机器节点,都很容易实现。

分布式内存数据库的主要节点之间的同步方式一般多采用多播(Multicast)的形式,如图1所示。多播可以把数据同时传递给同属某一多播组的其他节点,多播消息在每条网络链路上只需要被传递一次,只有在网络链路分叉时消息才会被进行复制,因此它的使用策略相对来说是比较高效的[6]。当某个机器节点上的数据发生变化时,它会将变化的数据以多播的方式传送出去,其他节点在收到该数据时首先判断该数据是否属于本节点,如果属于本节点则将数据更新到内存数据库中,否则丢弃该变化数据[7]。如果机器节点少的话也可以采用TCP服务器/客户机的方式,通过TCP的方式进行数据同步[8]。为了监控系统更容易部署和应用,内存数据库同步模块在设计时同时支持多播和TCP的混合组网方式。

2 批量确认滑窗算法设计

对于大批量的数据传输,如果采用传统的发送一帧数据确认一帧的话,数据处理的效率会大大降低同时也增加了网络流量[9]。本系统采用了批量确认的滑窗算法,提高了数据传输的吞吐量,也降低了网络负荷。当一个机器节点上的数据发生变化时,机器上的应用程序会通过多播将这些变化信息按照一定格式发送至网络上的其他机器节点。在数据变化很快的情况下,数据同步模块会在某一个时刻通过多播方式发送多帧变化数据,每一帧数据都会有一个编号,其他机器节点在接收到这些数据时,先将这些数据帧按照顺序缓存在数据队列中,并根据数据帧的序号进行确认,如果接收到的数据帧序号不连续,接收方会把未收到的数据帧的序号报告给发送方,发送方通过单播(Unicast)的方式将接收方未接收到的数据帧发给对应的接收方,接收方将这些缺失的数据帧按照顺序插入到自己的数据缓存队列中并且定时地将连续的那些数据帧交给数据存储模块写入实时库,从而保证变化数据的写入顺序和完整性。通过多播批量向多个节点传输变化数据,在数据发生丢失的情况下通过单播向接收方发送缺失的数据,大大提高了系统的可靠性,同时也极大减轻了网络的负荷[10]。如图2所示,当发送方连续发送7帧变化数据后,接收方A接收到的数据完整,它会对发送方发送的数据进行确认并告知数据接收完整,接收方B接收数据不完整,它会对接收到的数据进行确认同时通知发送方缺失第5帧,发送方在收到接收方B的确认时通过单播将第5帧数据补发给接收方B。

自适应滑窗大小调整算法如式(1)所示:

[W=W+k*14C] (1)

式中:W为滑窗的大小;k为滑窗大小变化系数;C为常数。如果在某一个滑窗大小的时候,发送方检测到大部分接收方普遍存在丢包现象,那么发送方按公式(1)减小滑窗的大小。如果在某一个滑窗大小的时候,发送方检测到所有接收方数据接收完整,那么发送方会按照公式(1)适当地增加滑窗的大小,从而保证发送方与多个接收方之间的数据传输效率达到最优。

3 数据同步模块的设计与实现

在变电站监控系统中,需要对测控装置和保护装置的信息加以采集和处理,因此系统设计了一个基于共享内存的数据变化队列[11]。规约模块负责实现与变电站内的装置通讯并采集相应的信息,并将这些数据写入内存数据库,内存数据库系统在将这些数据写入对应的内存的同时也会将这些数据变化信息写入数据变化队列中。数据同步模块通过不断扫描数据变化队列得知数据变化信息,通过网络将这些变化信息发送至网络上的其他机器节点,其他机器节点将同步来的变化数据库写入本机内存中,实现了分布式内存数据库的数据同步问题。如图3所示。

数据同步服务的系统架构如图4所示,由发送队列、接收多列、网络传输模块、节点状态管理模块、文件传输模块以及数据追赶模块组成。

发送队列中存放的是本机的变化数据,通过扫描数据变化队列得到。接收队列负责存放其他节点发送的变化数据,并在接收连续完整的变化数据后通过接口写入本机的内存数据库。网络传输模块用于发送/接收变化数据。节点状态管理模块用于管理网络中其他机器节点的活动状态。文件传输模块用于在机器节点之间同步文件,在本系统中,文件也被看成是一种特殊格式的数据。数据追赶模块用于补发由于各种原因丢失的变化数据,确保各个机器节点之间内存数据库的一致性。

4 结 语

利用多播和TCP方式相结合,设计合理的数据同步机制,实现了分布式内存数据库系统中的各个机器节点之间的高效率的数据同步。通过多播的批量发送和批量确认提供了数据同步的效率,基于单播的数据补发模式保证了变化数据的顺序性和完整性[12]。基于多播和TCP实现快速有效的数据同步方式,支持灵活的组网方式,并设计了一套稳定可靠的数据传输机制,使得分布式内存数据库的各个节点的数据保持良好的一致性。

参考文献

[1] 汪秀丽.数字化变电站综述[J].水利电力科技,2007,33(2):7?15.

[2] 王珊,肖艳芹,刘大为,等.内存数据库关键技术研究[J].计算机应用,2007,27(10):2353?2357.

[3] 钟昀,詹成国.分布式内存数据库在变电站自动化系统中应用[J].电力自动化设备,2007,27(3):116?119.

[4] 傅蕾,胡敏强.变电站监控软件系统中内存数据库的研究[J].电力自动化设备,2002,22(10):21?23.

[5] 丁鲲,严浩,刁兴春.分布式数据库同步技术研究[J].海军工程大学学报,2004,16(5):100?104.

[6] MOHAN C, HADERLE D. ARIES: a transaction recovery method supporting fine?granularity locking and partial roll?back using write?ahead logging [J]. ACM Transactions on Database System, 1992, 17(1): 94?162.

[7] PACITTI E, SIMON E. Update propagation strategies to improve freshness of data in lazy master schemas [C]// Proc of the 18th International Conference on Distributed Computation System. Amsterdam, Netherlands: ICDCS, 1998: 2032?2040.

[8] 张瑛,夏克俭,张法明,等.分布式异构数据库数据同步系统的研究与实现[J].小型微型计算机系统,2007,28(10):1803?1806.

[9] MODI Tarak. Practical Java message service [M]. [S.l.]: Manning, 2002.

[10] 袁震.基于消息中间件的数据同步更新方法[J].兵工自动化,2013,32(7):93?96.

[11] 林源,陈志泊.分布式异构数据库同步系统的研究与应用[J].计算机工程与设计,2010,31(24):5278?5281.

[12] 孙世明,任远,徐春雷,等.地县一体化调度自动化系统中的数据缓存和同步方法[J].电力系统自动化,2011,35(16):76?78.

[13] GARCIA?MOLINA H, ULLMAN J D, WIDOM J. Database system implementation [M]. Beijing: China Machine Press, 2002.

上一篇:基于HLA的装备保障全要素集成模拟训练系统设计 下一篇:一种基于自组织竞争网络的车辆识别方法