数据同步的方法

文档序号:6563477阅读:181来源:国知局
专利名称:数据同步的方法
技术领域
本发明涉及通信领域,特别涉及不中断升级过程中数据同步的方法。
背景技术
目前在通信领域中软件的升级普遍存在,升级过程中容易造成业务中断,在电信业务可靠性要求越来越高的今天,升级不中断业务成为非常迫切的需求。现有的设备升级主要过程如下(11)升级前主备板都正常运行,运行的都是旧版本;(12)主板和备板都加载新的程序和配置数据;(13)复位两块主控板让新的程序生效。
可以看出,在升级过程中两块主控板都经过了复位,业务中断不可避免。
由于现有的技术局限,暂时还做不到主控板不复位而将新的程序软件替换旧的程序软件运行,所以软件升级主控板复位不可避免。现在普遍的做法是利用主备倒换的功能来实现升级业务不中断的功能,步骤如下(21)升级前主备板都正常运行,运行的都是旧版本;(22)备板升级到新的版本;(23)主板将数据同步到备板;(24)数据同步完毕主备倒换,新的主板(原来的备板)开始使用新的版本程序控制业务的运行;(25)新的备板(原来的主板)升级到新的版本。
在上面的操作过程中,第(23)步是关键,因为只有主板的数据完全同步到备板,主备才能进行倒换,才能保证倒换后业务不发生任何的中断。由于此时主备版本不同,主板同步到备板的数据,备板不能保证完全识别和理解。所以不同版本的数据同步是解决升级不中断业务的关键。
主备同步的数据可分为两类,一类是用户的配置数据,另一类是动态运行数据。配置数据可以通过先以文件的形式导出然后使用外部工具升级到新版本再加载到备板的方式进行同步,但是动态数据是和系统的动态运行状态相关,不能采用此种方式,动态数据的同步只能是在主备板运行的过程中通过消息传递的方式同步过来。
升级不中断业务的场景下动态数据的同步面临一个难点数据同步时主备版本不一致,主板同步过去的数据备板按照新版本的数据定义规则来理解会存在差异。如何正确识别旧版本同步过来的数据以及如何将同步过来的数据转换成新版本理解的数据是目前存在的一个问题。
正是由于上述问题的存在,动态运行数据在升级过程中其实是丢失的,无法保证升级不中断业务。要实现升级不中断业务,关键的技术是解决动态数据的同步问题。
现有的主备板动态数据同步方案的应用场景不是升级场景,而是正常的备板起保护作用的场景,此时主板和备板运行的都是完全相同的软件,在该软件中将主备板上的动态数据按照功能划分为一个个的同步数据块,每个同步数据块都包含若干描述某一相同功能的动态数据,各个同步数据块的大小和内容都可能各不相同,每个同步数据块都有两级索引进行标识,一是模块标识,二是模块内的同步块序号,模块标识表明该同步块属于哪个模块,同步块序号标识该同步块在该模块内的编号,模块号+同步块序号唯一标识一个同步数据块。由于主备软件完全一致,所以在主备板上模块号数目和定义以及同步块序号的数目和定义都是绝对一致的,主板将一个同步块发送到备板只要携带模块号+同步块序号即可,备板接收到该同步数据块,根据模块号+同步块序号就能唯一识别该同步块,备板将接收到的同步块数据覆盖自己的相应块即可。如图1所示。
正常运行的过程中,如果主板的动态数据发生变化,主板会将该变化的动态数据所在的同步数据块发送给备板,备板识别该同步数据块后将其内容覆盖自己的相应块,从而达到备板同步主板的动态数据的目的。当主板发生故障时,由于备板的软件、配置数据和动态数据都是和主板完全一致,所以主备倒换不会中断业务。
该同步方案可行的前提要求主板和备板的同步块的标识以及相同标识的同步块的内容完全一致,这只能在同一个软件版本中才能实现。所以该方案只解决了主备软件完全一致的情况下动态数据同步的问题。在升级场景下,由于备板软件已经先行升级到了新的软件,新的软件中动态块数目和内容与旧的软件相比都可能有修改,此时采用该同步方案无法正确的识别该同步块,并且识别后内容也不能采用覆盖的方式,因为新旧版本软件中块的内容可能不一致,所以该方案在升级场景下无法正确的将动态数据同步到备板。

发明内容
本发明的实施例提供了一种数据同步的方法,以解决升级过程中业务中断的问题。
本发明的实施例提供了一种不中断升级过程中数据的同步方法,包括A、在新版本软件中设置与旧版本软件中相同的数据块编号;B、建立新版本软件与旧版本软件数据块内容转换的转换函数,并在数据从未升级设备同步到已升级设备时调用该转换函数。
本发明的实施例通过在新版本软件中设置与旧软件版本中相同的数据块编号,解决了新旧版本软件中数据块标识一致性的问题,并通过在新版本软件中建立数据块内容转换的函数,保证了新版本软件能够识别同步过来的数据块的内容,实现数据在不同的软件版本间的同步问题,从而实现了升级过程不中断业务的功能,满足了运营商的迫切需求。升级不中断业务功能的应用将会极大提高运营商的服务质量和运营可靠性。


图1为现有技术中动态数据同步方法的示意图。
图2为本发明实施例的数据同步方法第一实施例流程示意图。
图3为本发明实施例的第一实施例关于设置新版本软件与旧版本软件数据块标识一致性示意图。
图4为本发明实施例的第一实施例关于数据同步转换函数实现过程示意图。
图5为本发明实施例的数据同步方法第二实施例流程示意图。
图6为本发明实施例的第二实施例关于设置新版本软件与旧版本软件数据块标识一致性示意图。
图7为本发明实施例的第二实施例关于数据同步转换函数实现过程示意图。
图8为本发明实施例的关于转换函数指针链表结构示意图。
具体实施例方式
为了使本发明的目的、技术方案和优点更加清楚明白,以下将举实施例并参照附图,对本发明方案进行进一步详细的说明。
参考图2,该图为本发明实施例的不中断升级过程中数据同步方法的第一实施例流程图,其主要过程如下步骤201在新版本软件中设置与旧版本软件中相同的动态数据块编号;在新版本软件中设置与旧版本软件中相同的动态数据块编号,即保证新版本软件中同一数据块的标识与旧版本软件中的标识相同,在此基础上,如果新增数据块,其标识只能采用新增的编号,以不影响旧版本中数据块的编号。参考图3,软件V1.0中模块M有N个同步数据块,则在新版本软件V2.0中模块M中块1对应V1.0中模块M中的块1,V2.0中块N对应V1.0中的块N,如果在V2.0的模块M中增加一新的同步数据块,则其编号为N+1。如果出现块标识需要减少的情况,只要在块编号上保留这些不再使用的编号,功能上去掉减少的块的功能即可。
步骤202建立新版本软件与旧版本软件动态数据块内容转换的函数,并将动态数据从未升级设备同步到已升级设备时调用该转换函数。
具体实现如下参考图4,该图为本发明实施例一关于数据同步转换函数实现过程示意图,转换函数实现的是从V1.0到V2.0的转换。其中,V1.0中模块M包含N个数据块,V2.0中模块M包含N个数据块,V2.0中块1的内容发生了变化,块1的标识为模块M+块1需要用转换函数对其内容进行转换。该转换函数将块1的内容格式变换到V2.0定义的块1的内容格式,以保证V2.0软件的应用程序能够理解,实现模块M的动态同步块1从V1.0到V2.0的同步。
该转换函数由V2.0的软件开发人员具体编写和挂接,该转换函数只适用于模块M中的块1的转换,且只适用在V1.0到V2.0之间的转换,即任何一个转换函数都是针对一个特定块从特定版本升级到特定版本的。转换函数的入口参数为块1的结构内容,函数内部经过转换出口参数携带V2.0定义的块1的结构内容。函数原型可以定义为int Module-M-Block-1-Convert-From-V1.0-To-V2.0(V1.0块1结构*pBlock1,V2.0块1结构*pBlock2)参数说明pBlock1指针指向转换前的同步数据块,pBlock2指针指向转换后的同步数据块。
新版本新增一个同步块的转换函数,那么新申请一个数据结构挂接到该同步块的指针链表中。参考图8,该图为本发明关于转换函数指针链表结构示意图。同步块的指针链表采用排序的方式,这样便于备板接收到同步数据块后从前到后按顺序执行转换函数。
由于升级前的版本是不确定的,在新的版本上为每个内容有变化的同步块挂接一个从升级前的版本到新版本的转换函数,转换时采用相邻版本逐一转换的方式实现,每个版本只需要考虑和上一个相邻旧版本的数据块转换问题。
版本逐一升级的方法为所有的软件版本按照软件版本发布顺序排序,例如V1.0->V2.0->V3.0->V4.0->V5.0->V6.0,从一个旧版本升级到一个新版本不是一步到位,而是采用按照版本顺序逐级升级上来,转换函数也不是直接调用一个从旧版本到新版本的转换函数,而是按照顺序调用该同步块在这两个升级版本中间的所有转换函数。例如块X从V2.0同步到V6.0后,在V6.0的软件中不是直接调用块X的从V2.0到V6.0的转换函数,而是先调用块X从V2.0到V3.0的转换函数,将转换得到的同步块内容再经过块X从V3.0到V4.0的转换函数转换......直到最后调用块X从V5.0到V6.0的转换函数得到V6.0能够理解的块内容。如果调用过程中某相邻两个版本没有挂接转换函数(如果相邻两个版本间块X内容没有变化,这两个版本就没有挂接转换函数)则直接跳过继续调用下一个转换函数。
动态数据块同步过程中,备板接收到主板同步过来的数据块,根据携带的模块号+同步块号找到备板上对应的唯一的同步块,从而找到该同步块挂接的转换函数链表,根据主板的版本号(旧版本号)确定转换函数链表第一个被转换的函数,然后按照顺序从该函数开始逐一执行链表上的转换函数直至末尾,最后一个转换函数转换完毕就可以得到新软件版本上该同步块内容,新软件能够正确的理解此同步块,将该内容发送给应用模块使用。
如果新版本软件中与旧版本软件对应的数据块的内容没有发生变化,由于新版本软件能够识别该块的内容,所以,对该没变化的数据块内容可以不设置转换函数;也可以针对该数据块设置转换函数,只是该转换函数不进行任何转换,其实现方式如上所述,同样能够实现数据同步的目的。
参考图5,该图为本发明实施例的不中断升级过程中数据同步方法的第二实施例流程图,其主要过程如下步骤501在新版本软件中设置与旧版本软件中相同的动态数据块编号,即保证新版本软件中同一数据块的标识与旧版本软件中的标识相同,在此基础上,如果新增数据块,其标识只能采用新增的编号,以不影响旧版本中数据块的编号。参考图6,软件V1.0中模块M有N个同步数据块,则在新版本软件V2.0中模块M中块1对应V1.0中模块M中的块1,V2.0中块N对应V1.0中的块N,如果在V2.0的模块M中增加一新的同步数据块,其编号为N+1。如果出现块标识需要减少的情况,只要在块编号上保留这些不再使用的编号,功能上去掉减少的块的功能即可。
步骤502建立新版本软件与旧版本软件动态数据块内容转换的函数,并将动态数据从未升级设备同步到已升级设备时调用该转换函数。
具体实现如下参考图7,该图为本发明实施例二关于数据同步转换函数实现过程示意图,转换函数实现的是从V1.0到V4.0的转换。其中,V1.0中模块M包含N个数据块,V4.0中模块M包含N个数据块,V4.0中块1的内容发生了变化,块1的标识为模块M+块1,需要用转换函数对其内容进行转换。
当模块M中的块1从V1.0同步到V4.0后,如果块1的内容发生了变化,则V4.0的软件须有一个转换函数,由该转换函数将块1的内容格式变换到V4.0定义的块1的内容格式,以保证V4.0软件的应用程序能够理解,实现模块M的动态同步块1从V1.0到V4.0的同步。
该转换函数由V4.0的软件开发人员具体编写和挂接,该转换函数只适用于模块M中的块1的转换,且只适用在V1.0到V4.0之间的转换,即任何一个转换函数都是针对一个特定块从特定版本升级到特定版本的。转换函数的入口参数为块1的结构内容,函数内部经过转换出口参数携带V4.0定义的块1的结构内容。函数原型可以定义为int Module-M-Block-1-Convert-From-V1.0-To-V4.0(V1.0块1结构*pBlock1,V4.0块1结构*pBlock4)参数说明pBlock1指针指向转换前的同步数据块,pBlock4指针指向转换后的同步数据块。
新版本新增一个同步块的转换函数,那么新申请一个数据结构挂接到该同步块的指针链表中。参考图8,该图为本发明关于转换函数指针链表结构示意图。同步块的指针链表采用排序的方式,这样便于备板接收到同步数据块后从前到后按顺序执行转换函数。
本实施例是在新的版本上为每个内容有变化的同步块挂接一个从升级前的版本到新版本的转换函数,由于升级前的版本是不确定的,实际转换时不是采用相邻版本逐一转换,而是以以前所有的旧版本为参考,每个同步块对应每个以前的旧版本都挂接一个转换函数,数据同步时备板对接收到的数据不需要相邻版本逐一调用转换函数,而是调用唯一的从旧版本到新版本的转换函数。此方案提高了数据同步的效率,但是新版本开发时需要考虑和所有以前的旧版本相比同步数据块的变化情况。
动态数据块同步过程中,备板接收到主板同步过来的数据块,根据携带的模块号+同步块号找到备板上对应的唯一的同步块,从而找到该同步块挂接的转换函数链表,根据主板的版本号(旧版本号)确定转换函数链表,找到旧版本到新版本直接转换的函数,就可以得到新软件版本上该同步块内容,新软件能够正确的理解此同步块,将该内容发送给应用模块使用。
本发明的实施例通过在新版本软件中设置与旧软件版本中相同的数据块编号,解决了新旧版本软件中数据块标识一致性的问题,并通过在新版本软件中建立数据块内容转换的函数,保证了新版本软件能够识别同步过来的数据块的内容,实现数据在不同的软件版本间的同步问题,从而实现了升级过程不中断业务的功能,满足了运营商的迫切需求。升级不中断业务功能的应用将会极大提高运营商的服务质量和运营可靠性。
如果新版本软件中与旧版本软件对应的数据块的内容没有发生变化,由于新版本软件能够识别该块的内容,所以,对该没变化的数据块内容可以不设置转换函数;也可以针对该数据块设置转换函数,只是该转换函数不进行任何转换,其实现方式如上所述,同样能够实现数据同步的目的。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种数据同步的方法,用于不中断升级过程中数据的同步,其特征在于A、在新版本软件中设置与旧版本软件中相同的数据块编号;B、建立新版本软件与旧版本软件数据块内容转换的转换函数,并在数据从未升级设备同步到已升级设备时调用该转换函数。
2.根据权利要求1所述的方法,其特征在于,所述步骤A进一步包括在新版本软件中增加新的数据块时,保留已有的数据块编号,新增的编号在已有编号的基础之上增设。
3.根据权利要求1所述的方法,其特征在于,所述步骤B进一步包括所述调用的转换函数实现新版本软件与旧版本软件中同一数据块内容的转换。
4.根据权利要求3所述的方法,其特征在于,所述步骤B进一步包括所述调用的转换函数对数据块内容的转换针对的是一个单个数据块。
5.根据权利要求1所述的方法,其特这在于,所述步骤B进一步包括所述调用的转换函数对数据块内容的转换针对的是内容有变化的数据块。
6.根据权利要求1或5所述的方法,其特征在于,所述步骤B进一步包括所述调用的转换函数对数据块内容的转换是根据软件版本顺序逐级转换。
7.根据权利要求1或5所述的方法,其特征在于,所述步骤B进一步包括所述调用的转换函数对数据块内容的转换是从旧版本软件直接转换到新版本软件。
8.根据权利要求1或5所述的方法,其特征在于,所述步骤B进一步包括设置转换函数时,将所述转换函数挂接到该转换函数所转换的数据块的指针链表中。
9.根据权利要求1或5所述的方法,其特征在于,所述步骤B进一步包括所述转换函数进行转换时,该转换函数的入口参数为旧版本软件所转换数据块的结构内容,出口参数中携带有新版本软件定义的所转换数据块的结构内容。
全文摘要
本发明公开了一种数据同步的方法,用于不中断升级过程中动态数据的同步,主要包括如下步骤A.在新版本软件中设置与旧版本软件中相同的动态数据块编号;B.建立新版本软件与旧版本软件同步数据块内容转换的函数,并将动态数据从未升级设备同步到已升级设备时调用该转换函数,完成动态数据的同步。通过本发明所提供的方法,解决了新旧版本软件中数据块标识一致性的问题,并保证了新版本软件能够识别同步过来的数据块的内容,实现动态数据在不同的软件版本间的同步问题,从而实现了升级过程不中断业务的功能,满足了运营商的迫切需求。升级不中断业务功能的应用将会极大提高运营商的服务质量和运营可靠性。
文档编号G06F9/445GK1976301SQ200610157240
公开日2007年6月6日 申请日期2006年12月2日 优先权日2006年12月2日
发明者程林 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1