【技术实现步骤摘要】
本专利技术属于计算机应用
,涉及分布式实时数据的复制同步方法。
技术介绍
在空中交通管制系统(ATC, Air Traffic Control system)、舰船管理系统(CMS, Combat Management System)等实时、重大使命系统(Real-time,mission-critical system)中,服务进程一般采用冗余配置部署在多台处理机上,多台处理机上的相同进程构成一个集群(Cluster),同时只有一个处理机上的进程为主态,其它为从态。当主态进程所在处理机或主态进程本身出现问题,集群控制进程将自动选择某个从态进程切换到主态继续运行。如何保证多台处理机上的主从进程间数据的一致性和实时更新成为一个技术关键和难点。传统的方法采用数据库作为存储介质,多台处理机同时连接到数据库实现数据共享,但此方法存放两个问题(1)存在单点故障,如数据库宕机,则整个系统将不可用;(2)实时性不高,无法满足ATC等实时、重大使命系统的要求。另外也存在采用基于事务处理的数据同步的方法,但在处理机很多且同步数据量大的情况下,其实时性受到很大影响,基本上不 ...
【技术保护点】
一种分布式实时数据复制同步方法,其特征在于:在需保持数据同步的每台处理机上运行一个实时数据同步进程,简称DDR进程,每个DDR进程中保存和维持与其它处理机上的DDR进程相同的数据拷贝;同时,提供一个函数接口库,简称DDR接口库,用于应用程序与数据同步进程DDR进行数据交互; DDR进程管理的数据以条为单位,每条数据的空间大小固定为N字节,共M条数据记录,存储在一块连续的M×N字节大小、由操作系统提供的共享内存中,每一条数据内容均包括该数据的逻辑时间LTS、更新的应用程序编号UID和用户数据USER DATA三部分,其中应用程序编号UID由处理机编号和应用程序的进程号P ...
【技术特征摘要】
1、一种分布式实时数据复制同步方法,其特征在于在需保持数据同步的每台处理机上运行一个实时数据同步进程,简称DDR进程,每个DDR进程中保存和维持与其它处理机上的DDR进程相同的数据拷贝;同时,提供一个函数接口库,简称DDR接口库,用于应用程序与数据同步进程DDR进行数据交互;DDR进程管理的数据以条为单位,每条数据的空间大小固定为N字节,共M条数据记录,存储在一块连续的M×N字节大小、由操作系统提供的共享内存中,每一条数据内容均包括该数据的逻辑时间LTS、更新的应用程序编号UID和用户数据USER DATA三部分,其中应用程序编号UID由处理机编号和应用程序的进程号PID组成;每个DDR进程定期广播心跳信息给其它DDR进程,以保证在每个DDR进程中维持所有正常运行的DDR进程的IP地址列表和当前的主态DDR进程编号;整个DDR进程组中只能有一个主态DDR进程,如果判断出现2个以上主态或无主态进程时,则启动主态选举算法选举一个IP地址最小的处理机上的DDR进程为主态,其余均为从态;数据复制步骤包括实时数据同步进程DDR初始化;主态选举;数据一致性周期性检查;数据更新;数据更新通知;数据更新冲突解决;数据读取和DDR进程退出几个部分,其中数据读取是应用程序通过DDR接口库直接从本地共享内存中读取某条数据,不产生网络访问。2、 如权利要求1所述的分布式实时数据复制同步方法,其特征在于所述 数据复制步骤(1) 实时数据同步进程DDR初始化a) 程序启动,初始化共享内存数据区,b) 将进程的主从状态置为从态状态,c) DDR进程启动成功后,周期性向其它DDR进程广播心跳信息HBM,d) 接收其它DDR进程心跳信息HBM,并更新本地活动列表,如超过规定时间 未收到某个的心跳消息HBM消息,则在活动列表中删除该进程的相应信息;(2) 主态选举a)主态DDR进程选举算法若从态DDR进程收到主DDR进程将退出消息MDM 消息或超过规定时间未收到数据一致性检査消息MCM消息,则认为主态进程已不能正常工作,根据本地活动DDR进程列表检査本进程所在处理机的IP地址是否最小,判断本进程是否应切换到主态,如需切换到主态,则广播发送主DDR进程存活消息MEM消息,同时将本机DDR进程切换为主态,b)多主态DDR进程冲突解决算法若主态DDR进程收到数据一致性检查消息MCM消息或主态DDR进程存活消息MEM,则认为存在多个主态,因此用本机IP地址和收到的MCM消息的IP地址比较若本机IP较大,则认为有其它DDR进程更适合主态,将本机DDR进程切换为从态,若本机IP较小,则发送MEM消息给相应DDR进程,其它主态DDR进程作同样判断;(3) 数据一致性周期性检查主态DDR进程定期广播发送数据一致性检査消息MCM,MCM消息中包含主态DDR进程的每条数据的LTS和UID字段,DDR进程收到MCM消息后将作以下处理-a) 主态DDR进程收到MCM消息,则知道出现多个主态,启动第(2)步中的多主态DDR进程冲突解决,从而保证只有一个主态进程,b) 每个从态DDR进程收到MCM消息,则根据MCM消息中内容逐条与本地数据的LTS和UID比较如果MCM消息中的该条记录的LTS值较大,说明主态DDR进程的数据为较新版本,向主态DDR进程发送数据重传消息RDM,请求主态重传该条数据,主态DDR进程收到RDM消息后,用数据重传应答消息RRM,广播该条数据的最新版本数据,如果MCM消息中的该条记录的LTS值较小,则主态DDR进程的数据为旧版本,从态DDR进程发送RRM消息给主态DDR进程,以更新该条数据,如果MCM消息中的该条记录与本地记录的LTS值相等,但是两者UID值不相等,说明存在数据冲突且还未被应用程序解决,向主态DDR进程发送RDM消息,请求主态重传该条数据,主态DDR进程收到RDM消息后,用RRM消息广播该条数据的最新版本数据,如果MCM消息中的该条记录与本地记录的LTS值和UID值均相等,说明两者数据版本一致,不作任何处理;(4) 数据更新a)当应用程序需更新某条数据时,调用DDR接口库的提供的更新函数将更新数据发送给本地DDR进程,本地DDR进程采用以下算法更新数据i )将该条数据的LTS加1, UID更新为调用进程的UID,更新本地的数据,ii)向其它DDR进程广播发送数据更新UDM消息,以更新该条数据;b) DDR进程接收到数据更新消息UDM按以下算法处理i) 如UDM消息中该条数据的LTS值小于本地该条数据的LTS值,说明本地...
【专利技术属性】
技术研发人员:杨波,刘健波,杨军,
申请(专利权)人:四川川大智胜软件股份有限公司,
类型:发明
国别省市:90[中国|成都]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。