本发明专利技术提供了一种多线程数据同步方法及装置,在上述方法中,多线程池中的线程从同步队列中取出待同步网元对应的同步状态机的状态并执行;在取出的状态需要等待前台网元返回消息时,线程将取出的状态保存在存储模块中,并重新从同步队列中取出可用状态并执行;当取出的状态对应的网元返回消息时,线程从存储模块中提取取出的状态插入同步队列中。根据本发明专利技术提供的技术方案,线程在有可执行状态存在的情况下不会再空转等待前台返回消息,进而大大提高了数据同步的效率。
【技术实现步骤摘要】
本专利技术涉及通信领域,具体而言,涉及一种多线程数据同步方法及装置。技术背景在无线通信中,网管系统(NMS)主要负责对网元设备(NE)进行管理,网管系 统进一步包括配置管理模块、性能管理模块、告警管理模块等。其中,配置管理模块 是网管系统中最重要的模块之一,负责网元的数据设置。在配置管理模块中,配置好的 数据需要从NMS发送到网元设备,这就需要建立网元设备和网管系统的连接并进行数据 同步。利用数据同步技术可以实现不同数据库之间的数据交换,并确保所有数据库中数 据的一致性。目前,数据同步技术主要从降低系统与网络资源消耗、提高同步效率和保证同 步数据正确性等方面考虑,其中,提高同步效率最主要的方法就是使用多线程并发技 术,可以在同一时间内对多个网元进行数据同步。如图1所示,数据同步方法的主要步 骤如下1、将所有要同步的网元信息插入一个同步任务队列,其中,上述网元信息主要 包括网元ID,网元类型等参数;2、同时启动多个线程;3、每个线程不断的从同步任务队列中获取网元信息,获取之后从同步任务队列 中删除该网元;4、线程根据网元信息,开始执行该类型网元对应的同步状态,如果遇到状态机 的某个状态需要等待前台网元返回消息,则线程等待消息返回后继续执行;5、线程执行到状态机的最后一个状态后,则一个同步任务执行完毕,该线程重 新去查询同步任务队列,获取网元信息执行下一个同步任务。此种同步方法是将多线程应用于数据同步的典型方法。通过增加了多个线程, 每个线程执行一个同步状态机,每个状态机对应一个同步任务,这种方法虽然提高了同 步效率,但是经过分析可以发现线程的利用率并不高。一般来说,原数据源与目标数据 源的同步过程并不是简单的数据拷贝,从原数据源得到的数据还要经过一定的处理与再 加工才能配置到目标数据源,因此一般的同步流程要分为多个阶段,每个阶段原数据源 与目标数据源都有不同的交互应答消息以决定下一步应该执行的操作或动作。由于原 数据源与目标数据源一般都处于不同的物理平台,相互之间的应答消息相对来说比较耗 时,经过跟踪状态机的执行过程可以发现线程80%以上的时间都是在等待前台网元返回 消息,此时如果同步任务队列中还有多个基站需要同步,那么线程的等待完全是没有效 率的。
技术实现思路
针对相关技术中线程80%以上的时间都是在等待前台网元返回消息,导致线程不高的问题,本专利技术旨在提供一种多线程数据同步方法及装置,以解决上述问 题至少之一。根据本专利技术的一个方面,提供了一种多线程数据同步方法。根据本专利技术的多线程数据同步方法包括多线程池中的线程从同步队列中取出 待同步网元对应的同步状态机的状态并执行;在取出的状态需要等待前台网元返回消息 时,线程将取出的状态保存在存储模块中,并重新从同步队列中取出可用状态并执行; 当取出的状态对应的网元返回消息时,线程从存储模块中提取取出的状态插入同步队列 中。根据本专利技术的另一方面,提供了一种多线程数据同步装置。根据本专利技术的多线程数据同步装置包括提取执行模块,用于从同步队列中取 出待同步网元对应的同步状态机的状态并执行,并且在存储模块保存取出的状态之后, 重新从同步队列中取出可用状态并执行;存储模块,用于在取出的状态需要等待前台网 元返回消息时,保存取出的状态;第一插入模块,用于在取出的状态对应的网元返回消 息时,从存储模块中提取取出的状态插入同步队列中。通过本专利技术,在从同步队列中取出的状态需要等待前台网元返回消息时,线程 将取出的状态保存在存储模块中,并重新从同步队列中取出可用状态并执行;当取出的 状态对应的网元返回消息时,线程从存储模块中提取取出的状态插入同步队列中,解决 了相关技术中线程80%以上的时间都是在等待前台网元返回消息,导致线程的利用率不 高的问题,线程在有可执行状态存在的情况下不会再空转等待前台返回消息,进而大大 提高了数据同步的效率。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本 专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图 中图1是根据相关技术的多线程同步方法的示意图2是根据本专利技术实施例的多线程同步方法的流程图3是根据本专利技术优选实施例的多线程同步方法的示意图4是根据本专利技术实施例的多线程同步装置的结构框图5是根据本专利技术优选实施例的多线程同步装置的结构框图。具体实施方式下文中将参考附图并结合实施例来详细说明本专利技术。需要说明的是,在不冲突 的情况下,本申请中的实施例及实施例中的特征可以相互组合。图2是根据本专利技术实施例的多线程同步方法的流程图。如图2所示,该多线程 同步方法主要包括以下处理步骤幻02 多线程池中的线程从同步队列中取出待同步网元对应的同步状态机 的状态并执行;步骤幻04:在取出的状态需要等待前台网元返回消息时,线程将取出的状态保存在存储模块中,并重新从同步队列中取出可用状态并执行;步骤幻06:当取出的状态对应的网元返回消息时,线程从存储模块中提取取出 的状态插入同步队列中。采用上述方法后,多线程池中的线程不再与同步任务一一对应,启动N个线程 的情况下可以同时执行N+个同步任务,且线程在有可执行状态存在的情况下不会再空转 等待前台返回消息,大大提高了数据同步的效率。优选地,在执行上述步骤幻02之前,需要执行以下处理将全部待同步网元对 应的同步状态机的初始状态插入同步队列中。在优选实施过程中,可以把所有要同步的网元对应的同步状态机的初始状态 (即Si),结合网元标识(ID)插入同步队列(例如,READY-STATE优先级队列),所有 初始状态的优先级为0。优选地,步骤幻04中,线程将上述取出的状态保存在存储模块中可以进一步包 括以下处理线程将取出的状态对应的网元优先级增加1后,将取出的状态插入存储模 块中保存的网元标识与状态的对应关系中。优选地,步骤幻06中,线程从存储模块中提取取出的状态包括以下处理线程 根据网元返回消息对应的网元标识,从对应关系中提取出取出的状态。优选地,步骤幻06中,线程将取出的状态插入同步队列中可以进一步包括以下 处理(1)线程根据取出的状态获得前台网元返回消息的次数确定取出的状态对应的插 入优先级;例如,网元NEl的S2向S3转换时,只需要接收一条前台网元反馈的信息,而 网元NE2的S2向S3转换时,需要接收到前台网元反馈的10条信息,则网元NE2的S2 状态对应的插入优先级较高。(2)线程根据插入优先级将取出的状态插入同步队列中。其中,上述对应关系可以但不限于是UREADY-STATE哈希表。在优选实施过 程中,当启动多线程池中的线程时,线程不断从READY-STATE队列中移出状态并执行 状态动作,执行完成后状态迁移到状态机的下一个状态,如果该状态不需要等待前台网 元返回消息,则线程接着执行该状态的动作,如果需要等待网元返回消息,则把该状态 插入UREADY-STATE哈希表中,当前线程重新从READY-STATE队列中获取可用状态 (即可以直接执行动作的状态,区别于需要等待前台返回消息的状态)来执行。网元消息监听线程收到前台网元返回的消息后,根据网元ID从 UREADY-STATE哈希表中检索出与网元ID对应的同步状态,插入READY-STATE队列 中。其中,插入优先级本文档来自技高网...
【技术保护点】
一种多线程数据同步方法,其特征在于,包括:多线程池中的线程从同步队列中取出待同步网元对应的同步状态机的状态并执行;在所述取出的状态需要等待前台网元返回消息时,所述线程将所述取出的状态保存在存储模块中,并重新从所述同步队列中取出可用状态并执行;当所述取出的状态对应的网元返回消息时,所述线程从所述存储模块中提取所述取出的状态插入所述同步队列中。
【技术特征摘要】
【专利技术属性】
技术研发人员:张勇,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。