CN104301990A - 一种数据同步的方法及装置 - Google Patents
一种数据同步的方法及装置 Download PDFInfo
- Publication number
- CN104301990A CN104301990A CN201410533035.1A CN201410533035A CN104301990A CN 104301990 A CN104301990 A CN 104301990A CN 201410533035 A CN201410533035 A CN 201410533035A CN 104301990 A CN104301990 A CN 104301990A
- Authority
- CN
- China
- Prior art keywords
- request message
- synchronization request
- node
- sync numbers
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W56/00—Synchronisation arrangements
- H04W56/001—Synchronization between nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及移动通信领域,尤其涉及一种数据同步的方法及装置,用以提高节点之间数据同步的效率。本发明实施例中,同步号用于唯一标识一条数据记录中的一个或多个字段,因此全局节点将发生变化的字段的同步号发送给第一外围节点,第一外围节点可依据该同步号查询到需要更新的字段的位置,从而更新该字段。如此,当一条数据记录中的某个字段发生变化时,仅依据同步号更新该字段即可,而不必更新整条数据记录,从而实现字段级别的数据同步,提高了数据同步效率。
Description
技术领域
本发明涉及移动通信领域,尤其涉及一种数据同步的方法及装置。
背景技术
大型电信级装置通常为分布式网络结构,网络结构中分布的各个节点上储存有资源运行字段,当系统运行状况改变时,资源运行字段也随之更新。网络结构中全局节点与外围节点之间、各个外围节点之间相互关联,当某个节点的资源运行字段发生改变时,与该节点相关联的节点内储存的该资源运行字段也需随之同步更新。
现有技术中全局节点将各外围节点所需的每个关系记录成一个表,之后将包含更新数据的整个表发送给各外围节点,从而完成节点之间数据的同步。该方法基于整个关系表进行数据同步,而有时发生变化的数据可能仅是整个关系表中的某一个字段,此时同步整个关系表则会同步大量未变化的数据,从而影响数据同步的效率。
综上所述,亟需一种数据同步方法,用以提高节点之间数据同步的效率。
发明内容
本发明实施例提供一种数据同步的方法和装置,用以提高节点之间数据同步的效率。
本发明实施例提供一种数据同步的方法,包括以下步骤:
全局节点检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号,同步号用于唯一标识一条数据记录中的一个或多个字段;
全局节点根据第一同步号生成第一同步请求消息,第一同步请求消息中至少包括第一同步号和第一同步号所标识的字段的内容;
全局节点将第一同步请求消息发送给第一外围节点,第一同步请求消息用于指示第一外围节点依据第一同步号和第一同步号所标识的字段的内容更新外围节点的数据库,第一外围节点为一个或多个。
较佳的,全局节点检测到全局节点的数据库中的数据发生变化之前,还包括:
全局节点接收第二外围节点发送的第二同步请求消息;其中,第二同步请求消息为第二外围节点在检测到第二外围节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第二同步号后发送的,第二同步请求消息中至少包括第二同步号和第二同步号所标识的字段的内容;
全局节点依据第二同步号和第二同步号所标识的字段的内容,更新全局节点的数据库。
较佳的,全局节点检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号之后,还包括:
全局节点检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到第一外围节点的地址。
较佳的,全局节点根据第一同步号生成第一同步请求消息之后、全局节点将第一同步请求消息发送给第一外围节点之前,还包括:
全局节点将第一同步请求消息缓存至与第一同步号对应的缓存区中;
全局节点将第一同步请求消息发送给第一外围节点之后,还包括:
若全局节点接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第一同步号对应的缓存区中释放第一同步请求消息;
若全局节点接收到第一外围节点发送的与第一同步请求消息对应的同步失败响应消息,则结束与第一外围节点的数据同步过程,并从第一同步号对应的缓存区中释放第一同步请求消息;
若全局节点在设定时长内未接收到与第一同步请求消息对应的同步响应消息,则从第一同步号对应的缓存区中获取第一同步请求消息并重新发送。
较佳的,全局节点将第一同步请求消息缓存至与第一同步号对应的缓存区中,具体包括:
全局节点根据第一列表确定出第一同步号对应的空闲的第一存储单元标识;其中,第一列表中用于存储同步号和缓存区内的空闲的存储单元标识的对应关系;
全局节点将第一同步请求消息缓存至第一存储单元标识对应的缓存区中;根据第一存储单元标识,更新第一列表和第二列表;其中,第二列表用于存储同步号和缓存区内已占用的存储单元标识的对应关系;
从第一同步号对应的缓存区中释放第一同步请求消息,具体包括:
全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表;
从第一同步号对应的缓存区中获取第一同步请求消息并重新发送,具体包括:
全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取第一同步请求消息,并重新发送。
本发明实施例提供一种数据同步的装置,包括:
处理单元,用于检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号,同步号用于唯一标识一条数据记录中的一个或多个字段;
消息生成单元,用于根据第一同步号生成第一同步请求消息,第一同步请求消息中至少包括第一同步号和第一同步号所标识的字段的内容;
发送单元,用于将第一同步请求消息发送给第一外围节点,第一同步请求消息用于指示第一外围节点依据第一同步号和第一同步号所标识的字段的内容更新外围节点的数据库,第一外围节点为一个或多个。
较佳的,处理单元,还用于:
在检测到全局节点的数据库中的数据发生变化之前,接收第二外围节点发送的第二同步请求消息;其中,第二同步请求消息为第二外围节点在检测到第二外围节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第二同步号后发送的,第二同步请求消息中至少包括第二同步号和第二同步号所标识的字段的内容;
依据第二同步号和第二同步号所标识的字段的内容,更新全局节点的数据库。
较佳的,处理单元,还用于:
检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到第一外围节点的地址。
较佳的,处理单元,还用于:
在根据第一同步号生成第一同步请求消息之后、将第一同步请求消息发送给第一外围节点之前,将第一同步请求消息缓存至与第一同步号对应的缓存区中;
在将第一同步请求消息发送给第一外围节点之后,若接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第一同步号对应的缓存区中释放第一同步请求消息;
若接收到第一外围节点发送的与第一同步请求消息对应的同步失败响应消息,则结束与第一外围节点的同步过程,并从第一同步号对应的缓存区中释放第一同步请求消息;
若全局节点在设定时长内未接收到与第一同步请求消息对应的同步失败响应消息,则从第一同步号对应的缓存区中获取第一同步请求消息并通过发送单元重新发送。
较佳的,处理单元,具体用于:
根据第一列表确定出第一同步号对应的空闲的第一存储单元标识;其中,第一列表中用于存储同步号和缓存区内的空闲的存储单元标识的对应关系;
将第一同步请求消息缓存至第一存储单元标识对应的缓存区中;根据第一存储单元标识,更新第一列表和第二列表;其中,第二列表用于存储同步号和缓存区内已占用的存储单元标识的对应关系;
在将第一同步请求消息发送给第一外围节点之后,若接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表;
若接收到第一外围节点发送的与第一同步请求消息对应的同步失败响应消息,则结束与第一外围节点的数据同步过程,并从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表;
若在设定时长内未接收到与第一同步请求消息对应的同步响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取第一同步请求消息,并通过发送单元重新发送。
本发明实施例提供一种数据同步的装置,包括:
处理器,用于检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号,同步号用于唯一标识一条数据记录中的一个或多个字段;根据第一同步号生成第一同步请求消息,第一同步请求消息中至少包括第一同步号和第一同步号所标识的字段的内容;
发射器,用于将第一同步请求消息发送给第一外围节点,第一同步请求消息用于指示第一外围节点依据第一同步号和第一同步号所标识的字段的内容更新外围节点的数据库,第一外围节点为一个或多个;
存储器,用于存储同步号与字段位置的对应关系,以及生成的第一同步请求消息,还可存储用于执行上述流程的代码,并可配置处理器401执行上述流程。
较佳的,处理器,还用于:
在检测到全局节点的数据库中的数据发生变化之前,接收第二外围节点发送的第二同步请求消息;其中,第二同步请求消息为第二外围节点在检测到第二外围节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第二同步号后发送的,第二同步请求消息中至少包括第二同步号和第二同步号所标识的字段的内容;
依据第二同步号和第二同步号所标识的字段的内容,更新全局节点的数据库。
较佳的,处理器,还用于:
检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到第一外围节点的地址。
较佳的,处理器,还用于:
在根据第一同步号生成第一同步请求消息之后、将第一同步请求消息发送给第一外围节点之前,将第一同步请求消息缓存至与第一同步号对应的缓存区中;
在将第一同步请求消息发送给第一外围节点之后,若接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第一同步号对应的缓存区中释放第一同步请求消息;
若接收到第一外围节点发送的与第一同步请求消息对应的同步失败响应消息,则结束与第一外围节点的同步过程,并从第一同步号对应的缓存区中释放第一同步请求消息;
若全局节点在设定时长内未接收到与第一同步请求消息对应的同步失败响应消息,则从第一同步号对应的缓存区中获取第一同步请求消息并通过发射器重新发送。
较佳的,处理器,具体用于:
根据第一列表确定出第一同步号对应的空闲的第一存储单元标识;其中,第一列表中用于存储同步号和缓存区内的空闲的存储单元标识的对应关系;
将第一同步请求消息缓存至第一存储单元标识对应的缓存区中;根据第一存储单元标识,更新第一列表和第二列表;其中,第二列表用于存储同步号和缓存区内已占用的存储单元标识的对应关系;
在将第一同步请求消息发送给第一外围节点之后,若接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表;
若接收到第一外围节点发送的与第一同步请求消息对应的同步失败响应消息,则结束与第一外围节点的数据同步过程,并从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表;
若在设定时长内未接收到与第一同步请求消息对应的同步响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取第一同步请求消息,并通过发射器重新发送。
本发明实施例中,同步号用于唯一标识一条数据记录中的一个或多个字段,因此全局节点将发生变化的字段的同步号发送给第一外围节点,第一外围节点可依据该同步号查询到需要更新的字段的位置,从而更新该字段。如此,当一条数据记录中的某个字段发生变化时,仅依据同步号更新该字段即可,而不必更新整条数据记录,从而实现字段级别的数据同步,提高了数据同步效率。
附图说明
图1为本发明实施例适用的一种系统架构示意图;
图2为本发明实施例提供的一种数据同步的方法流程示意图;
图3为本发明实施例提供的一种数据同步的装置的结构示意图;
图4为本发明实施例提供的另一种数据同步的装置的结构示意图。
具体实施方式
本发明实施例中,同步号用于唯一标识一条数据记录中的一个或多个字段,因此全局节点将发生变化的字段的同步号发送给第一外围节点,第一外围节点可依据该同步号查询到需要更新的字段的位置,从而更新该字段。如此,当一条数据记录中的某个字段发生变化时,仅依据同步号更新该字段即可,而不必更新整条数据记录,从而实现字段级别的数据同步,提高了数据同步效率。
图1示例性示出了本发明实施例适用的一种系统架构示意图。
如图1所示,本发明实施例适用的系统架构示意图。本发明实施例适用于分布式网络系统,该系统架构中包括一个全局节点101和至少一个外围节点102。全局节点101的数据库中保存有所有外围节点数据库中的数据,因此,当外围节点上的数据库中的数据发生变动时,需要同步更新全局节点数据库中的该数据。多个外围节点之间会共享部分数据库中的数据,因此当某个外围节点的数据库中的数据发生改变时,需要同步更新全局节点数据库中的该数据,以及关联该数据的某些外围节点的数据库中的该数据,全局节点中存储有该数据所关联的所有外围节点的地址。
本发明实施例中所提到的全局节点以及外围节点的数据库中发生变化的数据可以为资源运行状态的数据,例如某个节点的运行状态、节点物理端口状态、传输链路的状态、小区状态等。这些数据可随着系统运行状况的改变而改变,因此当全局节点或外围节点检测到该数据发生改变时,需要同步更新全局节点,以及关联该数据的外围节点的数据库。本领域技术人员可知,本发明实施例所提供的方法也适用于其它数据库中需要进行同步的数据,本发明实施例不做限制。
本发明实施例中,针对全局节点和外围节点数据库中的数据,数据存储单位为表,该表中有多条记录,每个记录中有多个字段。其中,存储单位表具有表的标识号(Identity,简称:ID),该表中的每条记录都有记录ID,本发明实施例中依据每条记录中的字段的字段位置配置同步号,同步号用于唯一标识一条数据记录中的一个或多个字段,字段的位置用字段位置的标识号表示。本发明实施例所提供的方法的核心即为根据发生变化的数据在所在数据记录中的字段位置查询得到对应的同步号。依据该核心下面对本发明实施例进行介绍。
为了使本发明的目的、技术方案及有益效果更佳清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图2示例性示出了本发明实施例提供的一种数据同步的方法流程示意图。
基于图1所示的系统架构,本发明实施例提供了一种数据同步的方法,如图2所示,包括以下步骤:
步骤201,全局节点检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号,同步号用于唯一标识一条数据记录中的一个或多个字段;
步骤202,全局节点根据第一同步号生成第一同步请求消息,第一同步请求消息中至少包括第一同步号和第一同步号所标识的字段的内容;
步骤203,全局节点将第一同步请求消息发送给第一外围节点,第一同步请求消息用于指示第一外围节点依据第一同步号和第一同步号所标识的字段的内容更新外围节点的数据库,第一外围节点为一个或多个。
本发明实施例中,由于同步号用于唯一标识一条数据记录中的一个或多个字段,因此全局节点将发生变化的字段的同步号发送给第一外围节点,第一外围节点可依据该同步号查询到需要更新的字段的位置,从而更新该字段。如此,当一条数据记录中的某个字段发生变化时,仅依据同步号更新该字段即可,而不必更新整条数据记录,从而实现字段级别的数据同步,提高了数据同步效率。
一种较佳的实现方式中,针对全局节点和外围节点中的所有节点,为每个节点配备至少一个的备用节点。当某节点数据库中的数据发生变化时,也同时同步该节点的备用节点的数据库中该数据,备用节点数据库中的数据同步方法与其它节点数据库中的数据同步方法类似。全局节点和外围节点实时将数据库中的数据同步到备用节点上,当全局节点或外围节点故障或收到网管的强制倒换备用节点命令时,全局节点的备用节点能实时与全局节点进行倒换使用,外围节点的备用节点能实时与外围节点进行倒换使用,且保证业务不中断。基于该较佳的实现方式对本发明实施例进行介绍,本领域技术人员可知,本发明实施例所提供的方法不限于此。
在上述步骤201中,全局节点检测到全局节点的数据库中的数据发生变化有两种方式:
方式一:全局节点检测到自身的数据库中的数据发生了变化。之后,较佳的实现方式中,全局节点依据该发生变化的数据更新全局节点的备用节点数据库中的该数据。
方式二:第二外围节点检测到第二外围节点的数据库中发生了变化,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第二同步号,并依据第二同步号生成第二同步请求消息,第二外围节点发送第二同步请求消息给全局节点,全局节点接收到该第二同步请求消息之后,更新全局节点的数据库中该数据,此时全局节点检测到全局节点的数据库中的数据发生了变化。
具体来说,在上述方式二中,第二同步请求消息中至少包括第二同步号和第二同步号所标识的字段的内容;全局节点依据第二同步号和第二同步号所标识的字段的内容,更新全局节点的数据库。
较佳的,当第二外围节点检测到第二外围节点的数据库中发生了变化时,先将第二同步请求消息发送至第二外围节点的备用节点上,第二外围节点的备用节点依据第二同步请求消息更新自身数据库中的数据。当全局节点接收到该第二同步请求消息之后,更新全局节点的数据库中该数据,此时全局节点检测到全局节点的数据库中的数据发生了变化,之后第二外围节点依据该发生变化的数据更新全局节点的备用节点数据库中的该数据。
可见,本发明实施例所提供的方法不仅能检测到全局节点上的数据是否发生变化,也能检测外围节点上的数据是否发生了变化,并依据该变化的数据更新全局节点以及与该变化数据关联的外围节点的数据库。该方法可有效的监控到数据库中的数据状态,以便准确的进行同步,提高了数据同步的可靠性。
具体实施中,全局节点的数据库中存储有每个数据所关联的外围节点,因此,在步骤201中,全局节点检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号之后,还可根据发生变化的数据在所在数据记录中的字段位置查询得到第一外围节点的地址,其中,第一外围节点可为一个或多个,为关联该发生变化的数据的外围节点。
较佳的,全局节点中存储有每个数据的同步号与其相关联的外围节点的位置的对应关系。从前述可知,数据的同步号与该数据所在的表的ID、所在表ID中的一条记录的记录ID、记录ID中的字段位置对应,字段的位置用字段位置ID表示。如表1所示。
表1示例性的示出了全局节点中数据的同步号与外围节点地址的对应关系,本领域技术人员可知每个表ID中均有具有多个记录,即多个记录ID,每个记录中包含多个字段位置的标识号。一个字段可能关联一个或多个外围地址,因此一个同步号也可能对应一个或多个外围节点地址。
表1全局节点中数据的同步号与外围节点地址的对应关系表
同步号 | 表ID | 记录ID | 字段位置ID | 外围节点地址ID |
001 | 1 | 100 | 1 | 1、2、3 |
002 | 1 | 100 | 2 | 2、3 |
003 | 1 | 101 | 1 | 1、5 |
004 | 1 | 101 | 2 | 6、8 |
005 | 1 | 101 | 3 | 2、4 |
以表1中的第一行举例,全局节点依据发生变化的字段位置的表ID1、记录ID100、字段位置ID1唯一确定出该字段的同步号为001,同时查询到001对应的外围节点地址ID有三个,分别为1、2、3。表1中的其余四行的意思与第一行意思类似,在此不再赘述。
进一步,依据查询出的该发生变化的数据的同步号以及第一外围节点的地址,生成第一同步请求消息。
在一种实现方式中,全局节点根据第一同步号生成第一同步请求消息之后、全局节点将第一同步请求消息发送给第一外围节点之前,全局节点将第一同步请求消息缓存至与第一同步号对应的缓存区中。
针对全局节点和外围节点中的每个节点,本发明实施例从每个节点的内存区中分出一个缓存区用于缓存同步请求消息。
表2示例出本发明实施例提供了一种较佳模式的缓存区,用以管理同步请求消息队列。
表2存储同步请求消息的缓存区
表2中存储区每行的存储单元可为多个,数量自定,每行的存储单元相同。表2示例性的将每行的存储单元标识号定义为8个。
如表2所示,每个同步号对应缓存区的一行,即缓存区的行号与同步号一一对应。缓存区中的每一行仅存储该行号所对应的同步号的同步请求消息。每一行中包含多个存储单元,每个存储单元均有对应的位置标识号。依据同步号和存储单元的标识号即可唯一确定一个缓存区中存储单元的位置。
每个存储单元仅可放置一条同步请求消息。每个同步请求消息中包含一个外围节点的地址。举个例子,当某个发生变化的数据关联N个外围节点,则全局节点需要生成N条同步请求消息,并将该N条同步请求消息放置于该发生变化的数据的同步号所对应行中的N个存储单元中。
存储单元中放置有同步请求消息时,即为占用的存储单元,当存储单元中未放置同步请求消息时,即为空闲的存储单元。
基于表2中所示的例子,现以表3进行示例,表2中的所有存储单元为初始化时,各个存储单元均为空闲,表3中的部分存储单元为占用,如下表所示,存储单元中的“占用”表示该存储单元被占用,表中未标识“占用”的即表示该存储单元未被占用。
表3使用状态的存储同步请求消息的缓存区
较佳的,为上述缓存区设置管理列表,分别设置第一列表和第二列表,第一列表中用于存储同步号和缓存区内的空闲的存储单元标识的对应关系,第二列表用于存储同步号和缓存区内已占用的存储单元标识的对应关系。
基于表3所示的存储区占用情况,表4示例性示出第一列表,如表所示,第一列表中包括同步号、行号、起始的存储单元标识号、尾端的存储单元标识号,以及标志位。其中,同步号与行号一一对应,起始的存储单元标识号至尾端的存储单元标识号所确定出的一段连续的存储单元空间中的所有存储单元均为占用状态,标志位用以表示该存储单元的状态,较佳的,0表示占用,1表示空闲。
表4第一列表
如表4所示,以第一行为例进行解释,第一行表示同步号为001所对应的缓存区内的行号为1,该行上的存储单元1至存储单元8处于空闲状态。其它行的意义与第一行类似,在此不再赘述。
表5示例性示出第二列表,如表所示,第二列表中包括同步号、行号、起始的存储单元标识号、尾端的存储单元标识号,以及标志位。其中,同步号与行号一一对应,起始的存储单元标识号至尾端的存储单元标识号所确定出的一段连续的存储单元空间中的所有存储单元均为空闲状态,标志位用以表示该存储单元的状态,较佳的,0表示占用,1表示空闲。
表5第二列表
如表5所示,以第一行为例进行解释,第一行表示同步号为002所对应的缓存区内的行号为1,该行上的存储单元1至存储单元3处于占用状态。其它行的意义与第一行类似,在此不再赘述。
较佳的,可将第二列表附接至第一列表的尾端,将其合为一个列表。具体实施中,列表中的数据的数量是非常多的,因此,为了能够快速找到第一列表或第二列表中所示出的存储单元的位置,因此可为第一列表和第二列表中的每一行数据对应设置哑元,哑元中包含所需确定的存储空间的起始存储单元标识和尾端存储单元标识,以及所确定的存储空间中存储单元的数量。
以表4中第一行数据为例,哑元示意表格如表6所示。通过表6中的起始存储单元标识号、尾端存储单元标识号以及节点数可以快速确定出一存储单元连续空间。
表6基于表4第一队列中的第一行的哑元
起始存储单元标识号 | 1 |
尾端存储单元标识号 | 8 |
节点数 | 8 |
以表5中第一行数据为例,哑元示意表格如表7所示。通过表7中的起始存储单元标识号、尾端存储单元标识号以及节点数可以快速确定出一存储单元连续空间。
表7基于表5第二队列中的第一行的哑元
起始存储单元标识号 | 1 |
尾端存储单元标识号 | 3 |
节点数 | 3 |
上述表6、表7仅为一种较佳的实现方式,通过表6、表7的哑元的方式快速找到存储单元。
以上内容介绍了缓存区存储同步信息的一种较佳的实现方式,具体使用过程中,由于该缓存区在数据同步成功时会将所存储的同步请求消息删除,且由于会有新的同步请求消息加入进来,因此上述缓存区内的存储单元的使用状态会一直处于变化之中。当存储单元的使用状态发生变化时,需要同时更新第一列表和第二列表。
应用场景分为以下两种:
应用场景一:当某个同步号产生了X个同步请求消息时,需要为该同步号分配X个存储单元用以存储该X个同步请求消息。此时从第一列表中该同步号所对应的存储单元标识中选取X个存储单元,并将X个同步请求消息放置进去。较佳的,从第二列表的队列开头开始搜索。
之后,更新第一列表和第二列表。将从第一列表中确定的该X个存储单元的标识号从第一列表中移出,并放置在第二列表的队列结尾,同时将该X个存储单元的状态标识号更改为0,表示占用。
举一个列子,结合表3、表4、表5,假设同步号为001的字段产生了3个同步请求消息。则从表4所示的第一列表的队列开头开始搜索同步号为001的空闲存储单元的标识号为1至8,此时需要3个存储单元,则按顺序确定出所需使用的存储单元标识号为1至3,之后将该3个同步请求消息储存至同步号001对应的行号为1,且存储单元标识号为1至3的存储单元内。
更新后的表4如下表8所示,更新后的表5如下表9所示,如表所示,将第一列表中同步号001对应的存储单元1至3从第一列表中移出,放置于第二列表中的队列结尾,并更改其标志位为0。
表8应用场景一基于表4进行更新后的第一列表
表9应用场景一基于表5进行更新后的第二列表
应用场景二:当需要将某个同步号的Y个同步请求消息从Y个存储单元上删除时,从第二列表中查找该同步号所对应存储了该Y个同步请求消息的Y个存储单元标识号,将该Y个同步请求消息从该Y个存储单元标识号所对应的Y个存储单元中删除。
之后,更新第一列表和第二列表。将该Y个存储单元标识号从第二列表中移出,并放置在第一列表的队列结尾,同时将该Y个存储单元的状态标识号更改为1,表示空闲。
具体实施中,缓存区仅存储该同步号对应的数据的当前的同步请求消息。举一个例子,假设同步号为001的对应的数据在缓存区中存储有同步请求消息,则当该同步请求消息同步成功时,则从缓存区中删除该同步请求消息,若同步失败,则重新发送该同步请求消息,当成功时则删除该同步请求消息,若仍旧失败,则再次发送同步请求消息,若当重复发送同步请求消息的次数大于阈值时,则不再同步该请求消息,并将该同步请求消息从缓存区删除。因此,缓存区仅存储该同步号对应的数据的当前的同步请求消息,进而可知,上述应用场景二中的依据同步号的Y个同步请求消息从第二列表中查找该同步号所对应存储了该Y个同步请求消息的Y个存储单元标识号,是可以实现的。
对上述应用场景二中更新第一列表和第二列表举一个列子,结合表3、表8、表9,假设先需要将上述同步号为001的字段产生的3个同步请求消息删除。则从表8所示的第一列表中从队列开头开始搜索同步号为001的占用存储单元的标识号为1至3,则将同步号001对应的行号为1,且存储单元标识号为1至3的存储单元内的同步请求消息删除。
更新后的表8如下表10所示,更新后的表9如下表11所示,如表所示,将第一列表中同步号001对应的存储单元1至3从第一列表中移出,放置于第二列表中的队列结尾,并更改其标志位为1。
表10应用场景二基于表8进行更新后的第一列表
表11应用场景二基于表9进行更新后的第二列表
通过上述内容,本发明实施例提供了一种较佳的缓存区存储、管理方式,以及对缓存区的更新方式。本发明实施例基于上述缓存区模式进行介绍,本领域技术人员可知,本发明实施例所提供的方法也可用其它缓存区模式。
在步骤202中,一种较佳的实现方式为,全局节点根据第一同步号生成第一同步请求消息之后,在将同步请求消息发出去之前,可以将第一同步请求消息缓存至与第一同步号对应的缓存区中。
具体来说,全局节点根据第一列表确定出第一同步号对应的空闲的第一存储单元标识,全局节点将第一同步请求消息缓存至第一存储单元标识对应的缓存区中;根据第一存储单元标识,更新第一列表和第二列表。
之后执行步骤203,全局节点将第一同步请求消息发送给第一外围节点,较佳的,全局节点将第一同步请求消息发送给全局节点的备用节点,第一外围节点和备用全局节点依据收到的第一同步请求消息更新自身数据库中的该数据。
下面以第一外围节点依据收到的第一同步请求消息更新自身数据库中的该数据为例进行介绍。
具体实施中,第一外围节点接收到第一同步请求消息之后,依据第一同步号和第一同步号所标识的字段的内容更新外围节点的数据库。更新过程如下:第一外围节点依据第一同步号从自身数据库中确定出发生变化的数据在所在数据记录中的字段位置,使用接收到的该发生变化的字段的内容同步该字段。若同步成功,则第一外围节点发送同步成功响应消息,若同步失败,则第一外围节点发送同步失败响应消息,或者在某些特殊情况下,如系统出错等,不发送任何响应消息。
相应的,若全局节点接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
另一种情况下,相应的,若全局节点接收到第一外围节点发送的与第一同步请求消息对应的同步失败响应消息,不再继续同步该数据,而是结束与所述第一外围节点的同步过程,并从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
第三种情况,相应的,若全局节点在设定时长内未接收到与第一同步请求消息对应的同步响应消息,即未收到同步成功响应消息和同步失败响应消息,则从第一同步号对应的缓存区中获取第一同步请求消息并重新发送。依据同步号确定同步请求消息在缓存区中的位置的方法如上所述,在此不再赘述。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取第一同步请求消息,并重新发送。
若在此种情况下,若再次收到未收到任何同步响应消息,则再次重复发送同步请求消息,若同步请求消息发送次数大于阈值,则不再同步该发生变化的数据,同时从该数据所存放的缓存区的位置上释放该数据。
第一外围节点同步之后,介绍备用全局节点依据收到的第一同步请求消息更新自身数据库中的该数据的过程,具体如下:
具体实施中,备用全局节点接收到第一同步请求消息之后,依据第一同步号和第一同步号所标识的字段的内容更新备用全局节点的数据库。更新过程如下:备用全局节点依据第一同步号从自身数据库中确定出发生变化的数据在所在数据记录中的字段位置,使用接收到的该发生变化的字段的内容同步该字段。若同步成功,则备用全局节点发送同步成功响应消息,若同步失败,则备用全局节点发送同步失败响应消息,或者在某些特殊情况下,如系统出错等,不发送任何响应消息。
相应的,若全局节点接收到备用全局节点发送的与第一同步请求消息对应的同步成功响应消息,则从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
另一种情况下,相应的,若全局节点接收到备用全局节点发送的与第一同步请求消息对应的同步失败响应消息,不再继续同步该数据,而是结束与备用全局节点的同步过程,并从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
第三种情况,相应的,若全局节点在设定时长内未接收到与第一同步请求消息对应的同步响应消息,即未收到同步成功响应消息和同步失败响应消息,则从第一同步号对应的缓存区中获取第一同步请求消息并发送。依据同步号确定同步请求消息在缓存区中的位置的方法如上所述,在此不再赘述。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取第一同步请求消息,并发送。
若在此种情况下,若再次未收到任何同步响应消息,则再次重复发送同步请求消息,若同步请求消息发送次数大于阈值,则不再同步该发生变化的数据,同时从该数据所存放的缓存区的位置上释放该数据。
本发明实施例中,同步号用于唯一标识一条数据记录中的一个或多个字段,因此全局节点将发生变化的字段的同步号发送给第一外围节点,第一外围节点可依据该同步号查询到需要更新的字段的位置,从而更新该字段。如此,当一条数据记录中的某个字段发生变化时,仅依据同步号更新该字段即可,而不必更新整条数据记录,从而实现字段级别的数据同步,提高了数据同步效率。
图3示例性示出了一种数据同步的装置的结构示意图。
基于相同的构思,本发明实施例提供一种数据同步的装置,如图3所示,包括处理单元301、消息生成单元302、发送单元303:
处理单元301,用于检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号,同步号用于唯一标识一条数据记录中的一个或多个字段;
消息生成单元302,用于根据第一同步号生成第一同步请求消息,第一同步请求消息中至少包括第一同步号和第一同步号所标识的字段的内容;
发送单元303,用于将第一同步请求消息发送给第一外围节点,第一同步请求消息用于指示第一外围节点依据第一同步号和第一同步号所标识的字段的内容更新外围节点的数据库,第一外围节点为一个或多个。
本发明实施例中,由于同步号用于唯一标识一条数据记录中的一个或多个字段,因此全局节点将发生变化的字段的同步号发送给第一外围节点,第一外围节点可依据该同步号查询到需要更新的字段的位置,从而更新该字段。如此,当一条数据记录中的某个字段发生变化时,仅依据同步号更新该字段即可,而不必更新整条数据记录,从而实现字段级别的数据同步,提高了数据同步效率。
一种较佳的实现方式中,针对全局节点和外围节点中的所有节点,为每个节点配备至少一个的备用节点。当某节点数据库中的数据发生变化时,也同时同步该节点的备用节点的数据库中该数据,备用节点数据库中的数据同步方法与其它节点数据库中的数据同步方法类似。全局节点和外围节点实时将数据库中的数据同步到备用节点上,当全局节点或外围节点故障或收到网管的强制倒换备用节点命令时,全局节点的备用节点能实时与全局节点进行倒换使用,外围节点的备用节点能实时与外围节点进行倒换使用,且保证业务不中断。基于该较佳的实现方式对本发明实施例进行介绍,本领域技术人员可知,本发明实施例所提供的方法不限于此。
具体来说,全局节点处理单元301检测到全局节点的数据库中的数据发生变化有两种方式:
方式一:全局节点检测到自身的数据库中的数据发生了变化。之后,较佳的实现方式中,全局节点依据该发生变化的数据更新全局节点的备用节点数据库中的该数据。
方式二:第二外围节点检测到第二外围节点的数据库中发生了变化,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第二同步号,并依据第二同步号生成第二同步请求消息,第二外围节点发送第二同步请求消息给全局节点,全局节点接收到该第二同步请求消息之后,更新全局节点的数据库中该数据,此时全局节点检测到全局节点的数据库中的数据发生了变化。
具体来说,在上述方式二中,第二同步请求消息中至少包括第二同步号和第二同步号所标识的字段的内容;全局节点依据第二同步号和第二同步号所标识的字段的内容,更新全局节点的数据库。
较佳的,当第二外围节点检测到第二外围节点的数据库中发生了变化时,先将第二同步请求消息发送至第二外围节点的备用节点上,第二外围节点的备用节点依据第二同步请求消息更新自身数据库中的数据。当全局节点接收到该第二同步请求消息之后,更新全局节点的数据库中该数据,此时全局节点检测到全局节点的数据库中的数据发生了变化,之后第二外围节点依据该发生变化的数据更新全局节点的备用节点数据库中的该数据。
可见,本发明实施例所提供的装置不仅能检测到全局节点上的数据是否发生变化,也能检测外围节点上的数据是否发生了变化,并依据该变化的数据更新全局节点以及与该变化数据关联的外围节点的数据库。该方法可有效的监控到数据库中的数据状态,以便准确的进行同步,提高了数据同步的可靠性。
具体实施中,全局节点的数据库中存储有每个数据所关联的外围节点,因此,处理单元301检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到第一外围节点的地址,其中,第一外围节点可为一个或多个,为关联该发生变化的数据的外围节点。较佳的,全局节点中存储有每个数据的同步号与其相关联的外围节点的位置的对应关系如前所述,示例可参见表1的相关论述,在此不再赘述。
进一步,处理单元301,在根据第一同步号生成第一同步请求消息之后、将第一同步请求消息发送给第一外围节点之前,将第一同步请求消息缓存至与第一同步号对应的缓存区中。
具体来说,处理单元301,根据第一列表确定出第一同步号对应的空闲的第一存储单元标识,将第一同步请求消息缓存至第一存储单元标识对应的缓存区中。其中,第一列表中用于存储同步号和缓存区内的空闲的存储单元标识的对应关系,第二列表用于存储同步号和缓存区内已占用的存储单元标识的对应关系,根据第一存储单元标识,更新第一列表和第二列表。
缓存区的具体示例参见前述内容,在此不再赘述。
进一步的,全局节点将第一同步请求消息发送给第一外围节点,较佳的,全局节点将第一同步请求消息发送给全局节点的备用节点,第一外围节点和备用全局节点依据收到的第一同步请求消息更新自身数据库中的该数据。
举个例子,以第一外围节点依据收到的第一同步请求消息更新自身数据库中的该数据为例,详述如下。
第一外围节点接收到第一同步请求消息之后,依据第一同步号和第一同步号所标识的字段的内容更新外围节点的数据库。更新过程如下:第一外围节点依据第一同步号从自身数据库中确定出发生变化的数据在所在数据记录中的字段位置,使用接收到的该发生变化的字段的内容同步该字段。若同步成功,则第一外围节点发送同步成功响应消息,若同步失败,则第一外围节点发送同步失败响应消息,或者在某些特殊情况下,如系统出错等,不发送任何响应消息。
相应的,在将第一同步请求消息发送给第一外围节点之后,若接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,在将第一同步请求消息发送给第一外围节点之后,若接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表。
另一种情况下,相应的,若接收到第一外围节点发送的与第一同步请求消息对应的同步失败响应消息,不再继续同步该数据,而是结束与所述第一外围节点的同步过程,并从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
第三种情况,相应的,若全局节点在设定时长内未接收到与第一同步请求消息对应的同步响应消息,即未收到同步成功响应消息和同步失败响应消息,则从第一同步号对应的缓存区中获取第一同步请求消息并通过发送单元重新发送。
具体来说,若在设定时长内未接收到与第一同步请求消息对应的同步响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取第一同步请求消息,并通过发送单元重新发送。
第一外围节点同步之后,介绍备用全局节点依据收到的第一同步请求消息更新自身数据库中的该数据的过程,具体如下。
具体实施中,备用全局节点接收到第一同步请求消息之后,依据第一同步号和第一同步号所标识的字段的内容更新备用全局节点的数据库。更新过程如下:备用全局节点依据第一同步号从自身数据库中确定出发生变化的数据在所在数据记录中的字段位置,使用接收到的该发生变化的字段的内容同步该字段。若同步成功,则备用全局节点发送同步成功响应消息,若同步失败,则备用全局节点发送同步失败响应消息,或者在某些特殊情况下,如系统出错等,不发送任何响应消息。
相应的,若全局节点接收到备用全局节点发送的与第一同步请求消息对应的同步成功响应消息,则从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
另一种情况下,相应的,若全局节点接收到备用全局节点发送的与第一同步请求消息对应的同步失败响应消息,不再继续同步该数据,而是结束与备用全局节点的同步过程,并从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
第三种情况,相应的,若全局节点在设定时长内未接收到与第一同步请求消息对应的同步失败响应消息,则从第一同步号对应的缓存区中获取第一同步请求消息并重新发送。依据同步号确定同步请求消息在缓存区中的位置的方法如上所述,在此不再赘述。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取第一同步请求消息,并重新发送。
若在此种情况下,若再次未收到同步响应消息,则再次重复发送同步请求消息,若同步请求消息发送次数大于阈值,则不再同步该发生变化的数据,同时从该数据所存放的缓存区的位置上释放该数据。
本发明实施例中,同步号用于唯一标识一条数据记录中的一个或多个字段,因此全局节点将发生变化的字段的同步号发送给第一外围节点,第一外围节点可依据该同步号查询到需要更新的字段的位置,从而更新该字段。如此,当一条数据记录中的某个字段发生变化时,仅依据同步号更新该字段即可,而不必更新整条数据记录,从而实现字段级别的数据同步,提高了数据同步效率。
图4示例性示出了一种数据同步的装置的结构示意图。
基于相同的构思,本发明实施例提供一种数据同步的装置,如图3所示,包括处理器401、发射器402、存储器403:
处理器401,用于检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号,同步号用于唯一标识一条数据记录中的一个或多个字段;根据第一同步号生成第一同步请求消息,第一同步请求消息中至少包括第一同步号和第一同步号所标识的字段的内容;
发射器402,用于将第一同步请求消息发送给第一外围节点,第一同步请求消息用于指示第一外围节点依据第一同步号和第一同步号所标识的字段的内容更新外围节点的数据库,第一外围节点为一个或多个;
存储器403,用于存储同步号与字段位置的对应关系,以及生成的第一同步请求消息,还可存储用于执行上述流程的代码,并可配置处理器401执行上述流程。
本发明实施例中,由于同步号用于唯一标识一条数据记录中的一个或多个字段,因此全局节点将发生变化的字段的同步号发送给第一外围节点,第一外围节点可依据该同步号查询到需要更新的字段的位置,从而更新该字段。如此,当一条数据记录中的某个字段发生变化时,仅依据同步号更新该字段即可,而不必更新整条数据记录,从而实现字段级别的数据同步,提高了数据同步效率。
一种较佳的实现方式中,针对全局节点和外围节点中的所有节点,为每个节点配备至少一个的备用节点。当某节点数据库中的数据发生变化时,也同时同步该节点的备用节点的数据库中该数据,备用节点数据库中的数据同步方法与其它节点数据库中的数据同步方法类似。全局节点和外围节点实时将数据库中的数据同步到备用节点上,当全局节点或外围节点故障或收到网管的强制倒换备用节点命令时,全局节点的备用节点能实时与全局节点进行倒换使用,外围节点的备用节点能实时与外围节点进行倒换使用,且保证业务不中断。基于该较佳的实现方式对本发明实施例进行介绍,本领域技术人员可知,本发明实施例所提供的方法不限于此。
具体来说,全局节点处理器401检测到全局节点的数据库中的数据发生变化有两种方式:
方式一:全局节点检测到自身的数据库中的数据发生了变化。之后,较佳的实现方式中,全局节点依据该发生变化的数据更新全局节点的备用节点数据库中的该数据。
方式二:第二外围节点检测到第二外围节点的数据库中发生了变化,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第二同步号,并依据第二同步号生成第二同步请求消息,第二外围节点发送第二同步请求消息给全局节点,全局节点接收到该第二同步请求消息之后,更新全局节点的数据库中该数据,此时全局节点检测到全局节点的数据库中的数据发生了变化。
具体来说,在上述方式二中,第二同步请求消息中至少包括第二同步号和第二同步号所标识的字段的内容;全局节点依据第二同步号和第二同步号所标识的字段的内容,更新全局节点的数据库。
较佳的,当第二外围节点检测到第二外围节点的数据库中发生了变化时,先将第二同步请求消息发送至第二外围节点的备用节点上,第二外围节点的备用节点依据第二同步请求消息更新自身数据库中的数据。当全局节点接收到该第二同步请求消息之后,更新全局节点的数据库中该数据,此时全局节点检测到全局节点的数据库中的数据发生了变化,之后第二外围节点依据该发生变化的数据更新全局节点的备用节点数据库中的该数据。
可见,本发明实施例所提供的装置不仅能检测到全局节点上的数据是否发生变化,也能检测外围节点上的数据是否发生了变化,并依据该变化的数据更新全局节点以及与该变化数据关联的外围节点的数据库。该方法可有效的监控到数据库中的数据状态,以便准确的进行同步,提高了数据同步的可靠性。
具体实施中,全局节点的数据库中存储有每个数据所关联的外围节点,因此,处理器401检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到第一外围节点的地址,其中,第一外围节点可为一个或多个,为关联该发生变化的数据的外围节点。较佳的,全局节点中存储有每个数据的同步号与其相关联的外围节点的位置的对应关系如前所述,示例可参见表1的相关论述,在此不再赘述。
进一步,处理器401,在根据第一同步号生成第一同步请求消息之后、将第一同步请求消息发送给第一外围节点之前,将第一同步请求消息缓存至与第一同步号对应的缓存区中。
具体来说,处理器401,根据第一列表确定出第一同步号对应的空闲的第一存储单元标识,将第一同步请求消息缓存至第一存储单元标识对应的缓存区中。其中,第一列表中用于存储同步号和缓存区内的空闲的存储单元标识的对应关系,第二列表用于存储同步号和缓存区内已占用的存储单元标识的对应关系,根据第一存储单元标识,更新第一列表和第二列表。
缓存区的具体示例参见前述内容,在此不再赘述。
进一步的,全局节点将第一同步请求消息发送给第一外围节点,较佳的,全局节点将第一同步请求消息发送给全局节点的备用节点,第一外围节点和备用全局节点依据收到的第一同步请求消息更新自身数据库中的该数据。
举个例子,以第一外围节点依据收到的第一同步请求消息更新自身数据库中的该数据为例,详述如下。
第一外围节点接收到第一同步请求消息之后,依据第一同步号和第一同步号所标识的字段的内容更新外围节点的数据库。更新过程如下:第一外围节点依据第一同步号从自身数据库中确定出发生变化的数据在所在数据记录中的字段位置,使用接收到的该发生变化的字段的内容同步该字段。若同步成功,则第一外围节点发送同步成功响应消息,若同步失败,则第一外围节点发送同步失败响应消息,或者在某些特殊情况下,如系统出错等,不发送任何响应消息。
相应的,在将第一同步请求消息发送给第一外围节点之后,若接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,在将第一同步请求消息发送给第一外围节点之后,若接收到第一外围节点发送的与第一同步请求消息对应的同步成功响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表。
另一种情况下,相应的,若接收到第一外围节点发送的与第一同步请求消息对应的同步失败响应消息,不再继续同步该数据,而是结束与所述第一外围节点的同步过程,并从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
第三种情况,相应的,若全局节点在设定时长内未接收到与第一同步请求消息对应的同步响应消息,即未收到同步成功响应消息和同步失败响应消息,则从第一同步号对应的缓存区中获取第一同步请求消息并通过发送单元发送。
具体来说,若在设定时长内未接收到与第一同步请求消息对应的同步失败响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取第一同步请求消息,并通过发送单元重新发送。
第一外围节点同步之后,介绍备用全局节点依据收到的第一同步请求消息更新自身数据库中的该数据的过程,具体如下:
具体实施中,备用全局节点接收到第一同步请求消息之后,依据第一同步号和第一同步号所标识的字段的内容更新备用全局节点的数据库。更新过程如下:备用全局节点依据第一同步号从自身数据库中确定出发生变化的数据在所在数据记录中的字段位置,使用接收到的该发生变化的字段的内容同步该字段。若同步成功,则备用全局节点发送同步成功响应消息,若同步失败,则备用全局节点发送同步失败响应消息,或者在某些特殊情况下,如系统出错等,不发送任何响应消息。
相应的,若全局节点接收到备用全局节点发送的与第一同步请求消息对应的同步成功响应消息,则从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
另一种情况下,相应的,若全局节点接收到备用全局节点发送的与第一同步请求消息对应的同步失败响应消息,不再继续同步该数据,而是结束与备用全局节点的同步过程,并从第一同步号对应的缓存区中释放第一同步请求消息。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表,更新方法如上所述,在此不再赘述。
第三种情况,相应的,若全局节点在设定时长内未接收到与第一同步请求消息对应的同步失败响应消息,则从第一同步号对应的缓存区中获取第一同步请求消息并重新发送。依据同步号确定同步请求消息在缓存区中的位置的方法如上所述,在此不再赘述。
具体来说,全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取第一同步请求消息,并重新发送。
若在此种情况下,若再次未收到同步响应消息,则再次重复发送同步请求消息,若同步请求消息发送次数大于阈值,则不再同步该发生变化的数据,同时从该数据所存放的缓存区的位置上释放该数据。
从上述内容可以看出:本发明实施例中,同步号用于唯一标识一条数据记录中的一个或多个字段,因此全局节点将发生变化的字段的同步号发送给第一外围节点,第一外围节点可依据该同步号查询到需要更新的字段的位置,从而更新该字段。如此,当一条数据记录中的某个字段发生变化时,仅依据同步号更新该字段即可,而不必更新整条数据记录,从而实现字段级别的数据同步,提高了数据同步效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理装置的处理器以产生一个机器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理装置以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理装置上,使得在计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程装置上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据同步的方法,其特征在于,包括以下步骤:
全局节点检测到所述全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号,同步号用于唯一标识一条数据记录中的一个或多个字段;
所述全局节点根据第一同步号生成第一同步请求消息,所述第一同步请求消息中至少包括第一同步号和所述第一同步号所标识的字段的内容;
所述全局节点将所述第一同步请求消息发送给第一外围节点,所述第一同步请求消息用于指示所述第一外围节点依据所述第一同步号和所述第一同步号所标识的字段的内容更新所述外围节点的数据库,所述第一外围节点为一个或多个。
2.如权利要求1所述的方法,其特征在于,所述全局节点检测到所述全局节点的数据库中的数据发生变化之前,还包括:
所述全局节点接收第二外围节点发送的第二同步请求消息;其中,所述第二同步请求消息为所述第二外围节点在检测到所述第二外围节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第二同步号后发送的,所述第二同步请求消息中至少包括所述第二同步号和所述第二同步号所标识的字段的内容;
所述全局节点依据所述第二同步号和所述第二同步号所标识的字段的内容,更新所述全局节点的数据库。
3.如权利要求1所述的方法,其特征在于,全局节点检测到所述全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号之后,还包括:
全局节点检测到所述全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到第一外围节点的地址。
4.如权利要求1所述的方法,其特征在于,所述全局节点根据第一同步号生成第一同步请求消息之后、所述全局节点将所述第一同步请求消息发送给第一外围节点之前,还包括:
所述全局节点将所述第一同步请求消息缓存至与所述第一同步号对应的缓存区中;
所述全局节点将所述第一同步请求消息发送给第一外围节点之后,还包括:
若所述全局节点接收到所述第一外围节点发送的与所述第一同步请求消息对应的同步成功响应消息,则从所述第一同步号对应的缓存区中释放所述第一同步请求消息;
若所述全局节点接收到所述第一外围节点发送的与所述第一同步请求消息对应的同步失败响应消息,则结束与所述第一外围节点的数据同步过程,并从所述第一同步号对应的缓存区中释放所述第一同步请求消息;
若所述全局节点在设定时长内未接收到与所述第一同步请求消息对应的同步响应消息,则从所述第一同步号对应的缓存区中获取所述第一同步请求消息并重新发送。
5.如权利要求4所述的方法,其特征在于,所述全局节点将所述第一同步请求消息缓存至与所述第一同步号对应的缓存区中,具体包括:
所述全局节点根据第一列表确定出所述第一同步号对应的空闲的第一存储单元标识;其中,所述第一列表中用于存储同步号和缓存区内的空闲的存储单元标识的对应关系;
所述全局节点将所述第一同步请求消息缓存至第一存储单元标识对应的缓存区中;根据第一存储单元标识,更新第一列表和第二列表;其中,所述第二列表用于存储同步号和缓存区内已占用的存储单元标识的对应关系;
所述从所述第一同步号对应的缓存区中释放所述第一同步请求消息,具体包括:
所述全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放所述第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表;
所述从所述第一同步号对应的缓存区中获取所述第一同步请求消息并重新发送,具体包括:
所述全局节点从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取所述第一同步请求消息,并重新发送。
6.一种数据同步的装置,其特征在于,包括:
处理单元,用于检测到全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第一同步号,同步号用于唯一标识一条数据记录中的一个或多个字段;
消息生成单元,用于根据第一同步号生成第一同步请求消息,所述第一同步请求消息中至少包括第一同步号和所述第一同步号所标识的字段的内容;
发送单元,用于将所述第一同步请求消息发送给第一外围节点,所述第一同步请求消息用于指示所述第一外围节点依据所述第一同步号和所述第一同步号所标识的字段的内容更新所述外围节点的数据库,所述第一外围节点为一个或多个。
7.如权利要求6所述的装置,其特征在于,所述处理单元,还用于:
在检测到所述全局节点的数据库中的数据发生变化之前,接收第二外围节点发送的第二同步请求消息;其中,所述第二同步请求消息为所述第二外围节点在检测到所述第二外围节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到对应的第二同步号后发送的,所述第二同步请求消息中至少包括所述第二同步号和所述第二同步号所标识的字段的内容;
依据所述第二同步号和所述第二同步号所标识的字段的内容,更新所述全局节点的数据库。
8.如权利要求6所述的装置,其特征在于,所述处理单元,还用于:
检测到所述全局节点的数据库中的数据发生变化时,根据发生变化的数据在所在数据记录中的字段位置查询得到第一外围节点的地址。
9.如权利要求6所述的装置,其特征在于,所述处理单元,还用于:
在根据第一同步号生成第一同步请求消息之后、将所述第一同步请求消息发送给第一外围节点之前,将所述第一同步请求消息缓存至与所述第一同步号对应的缓存区中;
在将所述第一同步请求消息发送给第一外围节点之后,若接收到所述第一外围节点发送的与所述第一同步请求消息对应的同步成功响应消息,则从所述第一同步号对应的缓存区中释放所述第一同步请求消息;
若接收到所述第一外围节点发送的与所述第一同步请求消息对应的同步失败响应消息,则结束与所述第一外围节点的同步过程,并从所述第一同步号对应的缓存区中释放所述第一同步请求消息;
若所述全局节点在设定时长内未接收到与所述第一同步请求消息对应的同步失败响应消息,则从所述第一同步号对应的缓存区中获取所述第一同步请求消息并通过发送单元重新发送。
10.如权利要求9所述的装置,其特征在于,处理单元,具体用于:
根据第一列表确定出所述第一同步号对应的空闲的第一存储单元标识;其中,所述第一列表中用于存储同步号和缓存区内的空闲的存储单元标识的对应关系;
将所述第一同步请求消息缓存至第一存储单元标识对应的缓存区中;根据第一存储单元标识,更新第一列表和第二列表;其中,所述第二列表用于存储同步号和缓存区内已占用的存储单元标识的对应关系;
在将所述第一同步请求消息发送给第一外围节点之后,若接收到所述第一外围节点发送的与所述第一同步请求消息对应的同步成功响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放所述第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表;
若接收到所述第一外围节点发送的与所述第一同步请求消息对应的同步失败响应消息,则结束与所述第一外围节点的数据同步过程,并从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中释放所述第一同步请求消息;根据第一存储单元标识,更新第一列表和第二列表;
若在设定时长内未接收到与所述第一同步请求消息对应的同步响应消息,则从第二列表中确定出的第一同步号对应的第一存储单元标识,则从第一存储单元标识对应的缓存区中获取所述第一同步请求消息,并通过发送单元重新发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410533035.1A CN104301990B (zh) | 2014-10-10 | 2014-10-10 | 一种数据同步的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410533035.1A CN104301990B (zh) | 2014-10-10 | 2014-10-10 | 一种数据同步的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104301990A true CN104301990A (zh) | 2015-01-21 |
CN104301990B CN104301990B (zh) | 2018-01-26 |
Family
ID=52321495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410533035.1A Active CN104301990B (zh) | 2014-10-10 | 2014-10-10 | 一种数据同步的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104301990B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106101229A (zh) * | 2016-06-15 | 2016-11-09 | 北京众享比特科技有限公司 | 数据同步网络和方法 |
CN106383666A (zh) * | 2016-09-07 | 2017-02-08 | 东信和平科技股份有限公司 | 一种数据存储方法及装置 |
CN107948318A (zh) * | 2017-12-27 | 2018-04-20 | 世纪龙信息网络有限责任公司 | 多节点间的缓存同步方法和系统 |
CN109684407A (zh) * | 2018-11-23 | 2019-04-26 | 武汉达梦数据库有限公司 | 一种dml操作的数据同步方法 |
CN110162543A (zh) * | 2019-05-29 | 2019-08-23 | 北京奇艺世纪科技有限公司 | 一种信息查询方法及装置 |
CN110661857A (zh) * | 2019-09-12 | 2020-01-07 | 京东数字科技控股有限公司 | 一种数据同步方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221522A (zh) * | 2007-01-11 | 2008-07-16 | 中兴通讯股份有限公司 | 一种容灾备份系统中数据同步的方法 |
CN101446972A (zh) * | 2008-12-12 | 2009-06-03 | 中兴通讯股份有限公司 | 一种动态数据同步的方法和系统 |
CN102143194A (zh) * | 2010-06-10 | 2011-08-03 | 华为技术有限公司 | 数据同步的方法、系统、中间数据节点及终止数据节点 |
-
2014
- 2014-10-10 CN CN201410533035.1A patent/CN104301990B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221522A (zh) * | 2007-01-11 | 2008-07-16 | 中兴通讯股份有限公司 | 一种容灾备份系统中数据同步的方法 |
CN101446972A (zh) * | 2008-12-12 | 2009-06-03 | 中兴通讯股份有限公司 | 一种动态数据同步的方法和系统 |
CN102143194A (zh) * | 2010-06-10 | 2011-08-03 | 华为技术有限公司 | 数据同步的方法、系统、中间数据节点及终止数据节点 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106101229A (zh) * | 2016-06-15 | 2016-11-09 | 北京众享比特科技有限公司 | 数据同步网络和方法 |
CN106101229B (zh) * | 2016-06-15 | 2019-12-13 | 北京众享比特科技有限公司 | 数据同步网络和方法 |
CN106383666A (zh) * | 2016-09-07 | 2017-02-08 | 东信和平科技股份有限公司 | 一种数据存储方法及装置 |
CN106383666B (zh) * | 2016-09-07 | 2020-05-01 | 东信和平科技股份有限公司 | 一种数据存储方法及装置 |
CN107948318A (zh) * | 2017-12-27 | 2018-04-20 | 世纪龙信息网络有限责任公司 | 多节点间的缓存同步方法和系统 |
CN107948318B (zh) * | 2017-12-27 | 2021-02-19 | 世纪龙信息网络有限责任公司 | 多节点间的缓存同步方法和系统 |
CN109684407A (zh) * | 2018-11-23 | 2019-04-26 | 武汉达梦数据库有限公司 | 一种dml操作的数据同步方法 |
CN110162543A (zh) * | 2019-05-29 | 2019-08-23 | 北京奇艺世纪科技有限公司 | 一种信息查询方法及装置 |
CN110661857A (zh) * | 2019-09-12 | 2020-01-07 | 京东数字科技控股有限公司 | 一种数据同步方法和装置 |
CN110661857B (zh) * | 2019-09-12 | 2021-12-07 | 京东数字科技控股有限公司 | 一种数据同步方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104301990B (zh) | 2018-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104301990A (zh) | 一种数据同步的方法及装置 | |
CN105933391B (zh) | 一种节点扩容方法、装置及系统 | |
US20140089619A1 (en) | Object replication framework for a distributed computing environment | |
CN112765262B (zh) | 一种数据重分布方法、电子设备及存储介质 | |
CN102999571B (zh) | 一种集群中单机多节点的实现方法 | |
CN107231400B (zh) | 一种数据的同步方法和装置 | |
CN102202087B (zh) | 一种标识存储设备的方法及系统 | |
CN102799628A (zh) | 在key-value数据库中进行数据分区的方法和装置 | |
CN106055698A (zh) | 数据迁移方法、代理节点及数据库实例 | |
CN101626563A (zh) | 一种通信网络中的数据存储系统及信息处理方法 | |
CN106202123B (zh) | 灰度发布的方法及设备 | |
KR101912728B1 (ko) | 데이터 처리 방법 및 장치 | |
CN105550306A (zh) | 多副本数据的读写方法及系统 | |
CN104301233A (zh) | 路由访问方法、路由访问系统及用户终端 | |
CN103605617B (zh) | 一种记录存储数据发生变化的方法及装置 | |
CN103139255A (zh) | 分配资源标识和标识段的方法 | |
CN106709066B (zh) | 数据同步方法及装置 | |
CN108566291A (zh) | 一种事件处理的方法、服务器及系统 | |
CN105069059A (zh) | 数据库同步方法及装置 | |
CN102024040A (zh) | 数据库同步方法、装置和系统 | |
CN106909197B (zh) | 一种虚拟化主机时间管理方法及虚拟化主机系统 | |
CN102957546A (zh) | 配置处理方法、装置及系统 | |
CN102724301B (zh) | 云数据库系统以及云数据读写处理方法、设备 | |
CN108509296B (zh) | 一种处理设备故障的方法和系统 | |
US20180302404A1 (en) | Method for processing data request and system therefor, access device, and storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |