数据同步方法和数据同步系统的制作方法

文档序号:6468192阅读:192来源:国知局
专利名称:数据同步方法和数据同步系统的制作方法
技术领域
本发明涉及内存数据库领域,尤其涉及一种数据同步方法和数据同步系统。
背景技术
对于企业用户来说,多种服务都是建立在数据库基础之上的,数据库的可靠性十分重要。为了提高内存数据库的可靠性,可以采用主备双机的方案,两台内存数据库同时运行,一台主机接收业务访问,另一台作为备机,实时的同步主机内存中的数据,当主机发生故障时,切换到备机,由备机继续提供服务。 在实现上述内存数据库以主备机模式工作的过程中,发明人发现现有技术中至少存在如下问题 1、两台内存数据库同时运行,但只有一台能进行业务服务,造成硬件资源的浪费; 2、主机中置有缓存区,存储着需要同步到备机的数据,当主机发生故障时,缓存区的数据丢失,导致切换到备机后,部分业务数据丢失;此外,主机发生故障切换到备机需要一定时间,由该内存数据库提供的业务会产生中断。

发明内容
为了解决现有技术中,两台互为主备机的内存数据库同时工作带来的资源浪费和
切换时产生的数据丢失的问题,本发明提供一种数据同步的方法。 —种数据同步方法,包括 接收并缓存逻辑日志,将所述逻辑日志按序列号排序;
判断所述逻辑日志是否正常; 如果所述逻辑日志正常,将所述逻辑日志写入内存数据库中。 进一步地,所述判断所述逻辑日志是否正常具体为判断所述逻辑日志的序列号是
否连贯,如果序列号丢失,则所述逻辑日志不正常;如果序列号连贯,则所述逻辑日志正常。 进一步地,所述判断所述逻辑日志是否正常的步骤之后还包括如果所述逻辑日
志不正常,向分发服务器发送重发请求,请求重发丢失的逻辑日志。
进一步地,所述数据同步方法还包括 删除缓存的逻辑日志; 向分发服务器发送同步成功消息。
进一步地,所述数据同步方法还包括 在所述内存数据库发生故障并恢复后,从所述磁盘中读取所述备份文件;
根据所述备份文件重建所述内存数据库; 根据新接收到的逻辑日志的序列号和所述重建的内存数据库中逻辑日志的序列号,判断是否发生逻辑日志丢失; 如果发生逻辑日志丢失,向中心节点请求重新发送丢失的逻辑日志。
进一步地,所述数据同步方法还包括 当新的边缘节点加入时,拷贝其他边缘节点磁盘中的备份文件到该新的边缘节点的磁盘中; 根据所述备份文件创建该新的边缘节点的内存数据库; 根据新接收到的逻辑日志序列号和所述内存数据库中逻辑日志的序列号,判断是否发生逻辑日志丢失; 如果逻辑日志丢失,向中心节点请求重新发送丢失的逻辑日志。
本发明还提供一种数据同步方法。
—种数据同步的方法,包括 向至少一个边缘节点发送所述逻辑日志,并接收该边缘节点发送的应答消息,所述应答消息中携带有逻辑日志序列号和节点号; 在接收到全部边缘节点的应答消息后,删除缓存的所述逻辑日志。
进一步地,所述数据同步方法还包括 中心节点对所述逻辑日志进行分类,为同一类逻辑日志独立分配序列号; 所述中心节点根据分类,向至少两个分发服务器集群发送所述逻辑日志,所述分
发服务器集群包括至少一个分发服务器; 分发服务器接收所述中心节点发送的所述逻辑日志,并缓存所述逻辑日志。
进一步地,所述数据同步方法还包括 在超时没有接收到边缘节点的答应消息时,向没有发送应答消息的边缘节点重发逻辑日志;或者, 接收边缘节点的重发请求,向所述边缘节点重新发送对应的逻辑日志,所述重发请求中携带有需要重发的逻辑日志序列号与边缘节点号。 进一步地,所述在接收到全部边缘节点的应答消息后,删除缓存的所述逻辑日志的步骤之后还包括向中心节点发送同步成功消息。
本发明还提供一种边缘节点。
—种边缘节点,包括 排序模块,用于接收并缓存逻辑日志,将所述逻辑日志按序列号排序;
判断模块,用于判断所述排序模块接收的逻辑日志是否正常; 日志写入模块,用于在所述逻辑日志正常时,将所述逻辑日志写入内存数据库中。
进一步地,所述边缘节点还包括 数据备份模块,用于将内存数据库中的逻辑日志周期性的备份到磁盘中;
数据库建立模块,用于当内存数据库故障重启后,根据所述磁盘中的备份文件重建所述内存数据库;或者有新加入的边缘节点时,为所述新加入的边缘节点新建内存数据库; 请求重发模块,用于在所述判断模块判断所述接收的逻辑日志不正常时,向分发服务器发送重发请求,请求重发丢失的逻辑日志;或者, 当重建内存数据库或新建内存数据库后,发生逻辑日志丢失时,向中心节点发送重发请求,请求重发丢失的逻辑日志。
本发明还提供一种分发服务器。
—种分发服务器,包括 日志发送模块,用于向至少一个边缘节点发送所述逻辑日志,并接收该边缘节点发送的应答消息,所述应答消息中携带有逻辑日志序列号和节点号; 日志清除模块,用于在接收到全部边缘节点的应答消息后,删除缓存的所述逻辑日志。
进一步地,所述分发服务器还包括 日志缓存模块,用于接收中心节点发送的逻辑日志,并缓存所述逻辑日志; 超时重发模块,用于在超时没有接收到边缘节点的应答消息时,向没有发送应答
消息的边缘节点重新发送所述逻辑日志; 应答重发模块,用于接收边缘节点的重发请求,向该边缘节点发送相应的逻辑日志。
本发明还提供一种同步系统。 —种数据同步系统,包括至少一个中心节点,至少一个分发服务器和至少一个边缘节点;其中,一个中心节点连接有至少两个分发服务器集群,所述分发服务器集群包括至少一个分发服务器;一个分发服务器连接有至少一个边缘节点; 所述中心节点,用于对逻辑日志进行分类,为同一类逻辑日志独立分配序列号;根据分类,向至少两个分发服务器集群发送所述逻辑日志,具体为向一个分发服务器集群发送一类逻辑日志;所述分发服务器集群包括至少一个分发服务器; 所述分发服务器,用于接收所述中心节点发送的逻辑日志,并缓存所述逻辑日志;向至少一个边缘节点发送所述逻辑日志,在接收到全部边缘节点发送的应答消息后,删除缓存的所述逻辑日志; 所述边缘节点,用于接收并缓存所述逻辑日志,将所述逻辑日志按序列号排序;判断所述逻辑日志是否正常;如果所述逻辑日志正常,将所述逻辑日志写入内存数据库中;将内存中的逻辑日志周期性的备份到磁盘中;在发生故障时,判断是否有逻辑日志丢失,并向中心数据库要求重发丢失的逻辑日志。 进一步地,所述边缘节点还用于当所述逻辑日志不正常时,向分发服务器发送重发请求,请求重发丢失的逻辑日志;将内存数据库中的逻辑日志周期性的备份到磁盘中;当重建内存数据库或新建内存数据库后,发生逻辑日志丢失时,向中心节点发送重发请求,请求重发丢失的逻辑日志;在发生故障时,判断是否有逻辑日志丢失,并向中心节点要求重发丢失的逻辑日志。 本发明提供的数据同步方法、分发服务器、边缘节点和数据同步系统,由中心节点根据业务类型对逻辑日志进行分类并分配序列号,将逻辑日志按分类分别发送到不到的分发服务器集群;再由分发服务器集群将逻辑日志发送到对应的边缘节点,并检测是否已将逻辑日志成功发送;边缘节点接收逻辑日志,并依照序列号对逻辑日志进行排序,从而检测是否有逻辑日志丢失,在逻辑日志正常时将逻辑日志写入内存数据库,在发生逻辑日志丢失时主动要求重发。解决了现有技术中,两台互为主备机的内存数据库同时工作带来的资源浪费和切换时产生的数据丢失的问题,提高了数据同步的可靠性。


图1为本发明的实施例提供的一种数据同步方法的流程 图2为本发明的又一实施例提供的一种数据同步方法的流程图; 图3为本发明的实施例使用的内存数据库分布网的结构示意图; 图4为本发明的实施例一提供的一种数据同步方法的流程图; 图5为本发明的实施例二中数据库故障再恢复后同步数据的流程图; 图6为本发明的实施例三中新加入边缘节点同步数据的流程图; 图7为本发明的实施例提供的一种边缘节点的结构示意图; 图8为本发明的又一实施例提供的一种边缘节点的结构示意图; 图9为本发明的实施例提供的一种分发服务器的结构示意图; 图10为本发明的又一实施例提供的一种分发服务器的结构示意图; 图11为本发明的实施例提供的一种数据同步系统的结构示意图。
具体实施例方式
为了解决现有技术中,两台互为主备机的内存数据库同时工作带来的资源浪费和切换时产生的数据丢失的问题,本发明的实施例提供了一种数据同步方法,该方法的流程如图1所示,步骤101、接收并缓存逻辑日志,将所述逻辑日志按序列号排序;
步骤102、判断所述逻辑日志是否正常; 步骤103、如果所述逻辑日志正常,将所述逻辑日志写入内存数据库中。 本发明的实施例还提供了一种数据同步方法,如图2所示,步骤201、向至少一个
边缘节点发送所述逻辑日志,并接收该边缘节点发送的应答消息,所述应答消息中携带有
逻辑日志序列号和节点号; 步骤202、在接收到全部边缘节点的应答消息后,删除缓存的所述逻辑日志。
本发明的实施例提供的数据同步方法,由分发服务器集群将逻辑日志发送到对应的边缘节点,并检测是否已将逻辑日志成功发送;边缘节点接收逻辑日志,并依照序列号对逻辑日志进行排序,从而检测是否有逻辑日志丢失,在所述逻辑日志正常时将所述逻辑日志写入内存数据库,在发生逻辑日志丢失时主动要求重发。解决了现有技术中,两台互为主备机的内存数据库同时工作带来的资源浪费和切换时产生的数据丢失的问题,提高了数据同步的可靠性。 下面结合附图和具体实施例,对本发明提供的数据同步方法进行介绍。
首先,对本发明实施例使用的MDN(内存数据库分发网)的网络结构进行介绍,如图3所示,中心数据库301是所有数据的源头,当中心数据库的数据变更时就产生事件,得到逻辑日志;中心数据库301连接有至少一个中心节点集群302,所述中心节点集群302包含至少一个中心节点303 ;中心节点集群302连接有至少一个分发服务器集群304,每个分发服务器集群304中包含有至少一个分发服务器305 ;每个分发服务器305下连接有至少一个边缘节点306,每个边缘节点306都对应一个应用服务器307和边缘内存数据库308 ;边缘内存数据库308带有磁盘,所述磁盘中存储有磁盘文件,所述磁盘文件包括全量备份和增量备份两部分;所述全量备份用于定期备份边缘内存数据库中的数据,所述增量备份为缓存区,存储在全量备份基础上新增的逻辑日志;每个边缘节点306都有节点号,为该边缘节点在网络中的唯一标识;每个分发集群下的边缘节点、边缘内存数据库和应用服务器用于提供同样的应用服务。
上面结合上述组网方法,对本发明实施例一提供的一种数据同步方法进行介绍。
如图4所示,步骤401、中心数据库向中心节点发送事件; 本步骤中,当中心数据库的数据变更时,产生事件;所述数据变更具体为对业务表的操作,如增、删、修改等,业务表带有ID (身份标识),为该业务表的唯一标识;所述事件中包含有接收操作的业务表的ID,操作时间,操作结果等信息。 中心数据库将生成的事件,向与其连接的中心节点集群中的全部中心节点发送。
步骤402、中心节点为逻辑日志分配序列号; 本步骤中,中心节点根据接收到的事件生成逻辑日志,所述逻辑日志包含有事件携带的信息;中心节点将逻辑日志按照业务类型进行分类,以用于不同的应用服务;并为分类后同一业务的逻辑日志分配序列号,分配方式有很多种,可以根据业务表分配序列号,例如,将对业务表A的全部操作作为一条逻辑日志,分配序列号;也可以为对每个业务表进行的某一次操作分配序列号,如对业务表A进行添加一条纪录,修改该纪录,然后删除该纪录的操作,将三次操作分别对应成逻辑日志,并按照操作顺序依次递增的分配序列号。所述序列号是一个很多位的数字,能够保证相当长的时间内不会溢出。
步骤403、中心节点向分发服务器集群发送所述逻辑日志; 本步骤中,中心节点根据分类结果,将同一类业务的逻辑日志发送到对应的提供应用业务的颁发服务器集群;所述分发服务器集群中的多个分发服务器都用于分发逻辑日志,中心节点在向各个分发服务器发送逻辑日志时,使用负载均衡技术,根据各分发服务器的忙闲状况选择向哪个分发服务器发送逻辑日志,同一逻辑日志只向一个分发服务器发送。 步骤404、分发服务器保存逻辑日志; 本步骤中,分发服务器接收中心节点发送的逻辑日志,建立"发送数据缓存表",将接收到的逻辑日志缓存在该表中。 步骤405、分发服务器向边缘节点发送逻辑日志; 本步骤中,分发服务器向与该分发服务器相连的全部边缘节点发送逻辑日志。
本发明实施例采用nonblock的方式实现数据由分发服务器向边缘节点的同步;所述nonblock方式,是指分发服务器一次性向边缘节点发送接收到的逻辑日志,在全部逻辑日志都发出后,边缘节点才会回复响应消息,通知逻辑日志的接收情况。本领域技术人员显然知道,nonblock方式只是数据传输确认方式的一种,任何能够达到分发服务器向边缘节点发送数据并得到应答这一效果的传输方式,都在本发明的保护范围之内。
步骤406、边缘节点接收并缓存逻辑日志,将所述逻辑日志按序列号排序;
本步骤中,边缘节点接收所述逻辑日志,并在增量文件中缓存所述逻辑日志,按照接收的逻辑日志的序列号,对逻辑日志进行排序还原。
步骤407、边缘节点判断逻辑日志是否正常; 本步骤中,在排序完成后,边缘节点判断接收到的逻辑日志是否正常,具体为判断是否有逻辑日志丢失。判断方法为判断所述逻辑日志的序列号是否连贯,如果序列号丢失,则所述逻辑日志不正常;如果序列号连贯,则所述逻辑日志正常。 如果逻辑日志不正常,说明有逻辑日志丢失,此时,边缘节点向分发服务器发送重发请求,请求分发服务器重发丢失的逻辑日志,所述重发请求中携带有丢失的逻辑日志的序列号。 如果逻辑日志正常,则需要进一步的对逻辑日志进行处理,具体见步骤408。
步骤408、边缘节点将正常的逻辑日志写入内存中; 本步骤中,边缘节点解析正常的逻辑日志,将逻辑日志写入到边缘内存数据库中,在写入完成之后,删除缓存区已写入内存数据库的逻辑日志;由于逻辑日志的序列号是一个非常大的数,在正常工作的情况下不会出现序列号溢出的情况;且中心节点分配序列号时序列号是只增的,故缓存区中需要删除的逻辑日志为序列号小于已写入内存数据库的最大序列号的逻辑日志。 步骤409、边缘节点向分发服务器发送应答消息; 本发明实施例中,每个分发服务器下都连接有多个边缘节点,属于分布式网络结构,可靠性相对较差。为了确保每个边缘节点都接收到所述逻辑日志,建立应答机制。分发服务器中预先存储有与该分发服务器相连的边缘节点的节点号,规定边缘节点接收到逻辑日志后返回应答消息,所述应答消息中携带有该边缘节点的节点号和接收到的逻辑日志对应的业务表ID。边缘节点在接收到答应消息之后,与预先存储的边缘节点节点号进行对比,在接收到全部边缘节点发送的应答消息后,从"发送数据缓存表中"将该业务表的逻辑日志删除。 可选的,步骤410、分发服务器向边缘节点重发逻辑日志; 本步骤中,如果接收到步骤407中所述的边缘节点发送的重发请求,则向该边缘节点重发逻辑日志。 此外,可以为分发服务器发送的逻辑日志设置定时器,当定时器到时仍未收到边缘节点的应答消息时,认为逻辑日志在发送过程中丢失,向未发应答消息的边缘节点重发逻辑日志。 步骤411、分发服务器向中心节点发送同步成功消息; 本步骤中,由于每个中心节点下连接有多个分发服务器,属于分布式网络结构,为了提高网络可靠性,需要分发服务器在发送逻辑日志成功后,向中心节点返回消息,通知同步逻辑日志成功。 步骤412、边缘内存数据库向磁盘同步逻辑日志; 本步骤中,边缘内存数据库周期性的向对应的磁盘同步逻辑日志,生成备份文件。
本发明的实施例提供的数据同步方法,由中心节点根据业务类型对逻辑日志进行分类并分配序列号,将逻辑日志按分类分别发送到不到的分发服务器集群;再由分发服务器集群将逻辑日志发送到对应的边缘节点,并检测是否已将逻辑日志成功发送;边缘节点接收逻辑日志,并依照序列号对逻辑日志进行排序,从而检测是否有逻辑日志丢失,在所述逻辑日志正常时将所述逻辑日志写入内存数据库,在发生逻辑日志丢失时主动要求重发。解决了现有技术中,两台互为主备机的内存数据库同时工作带来的资源浪费和切换时产生的数据丢失的问题,提高了数据同步的可靠性。
下面结合附图,对本发明的实施例二进行介绍。 本发明实施例二中,由中心数据库向边缘节点下发逻辑日志的过程与本发明实施例一无异,故不再赘述。
当边缘内存数据库发生故障时,由于采用分布式结构,可以由同一分发服务器集群下的其他内存数据库继续提供服务,不会引起业务中断;在边缘内存数据库恢复正常后,需要将与该边缘内存数据库对应的磁盘内的备份文件读取出来,并根据所述备份文件重建所述内存数据库,将丢失的逻辑日志恢复,这一过程如图5所示,步骤501、内存数据库读取磁盘中的备份文件; 本步骤中,内存数据库读取磁盘中的备份文件,所述备份文件中包含有逻辑日志和所述逻辑日志的序列号。 步骤502、边缘节点判断是否有逻辑日志丢失; 本步骤中,边缘节点继续接收分发服务器发送的新的逻辑日志,根据步骤501读取的逻辑日志的最大序列号和新接收的逻辑日志的序列号是否连贯,判断是否发生了逻辑日志丢失以及丢失的逻辑日志的序列号。在发生逻辑日志丢失时,进入步骤503。
步骤503、边缘节点向中心节点请求重发丢失的逻辑日志; 本步骤中,边缘节点根据步骤502的判断结果,向中心节点发送重发请求,所述重
发请求中携带有需要重发的逻辑日志的序列号。
步骤504、中心节点重发丢失的逻辑日志; 本步骤中,中心节点根据边缘节点的请求,向边缘节点对应的分发服务器重发丢失的逻辑日志。 之后,由分发服务器向边缘节点发送所述丢失的逻辑日志,其过程与步骤404至步骤409无异,不再赘述。 本发明的实施例提供的数据同步方法,由中心节点根据业务类型对逻辑日志进行分类并分配序列号,将逻辑日志按分类分别发送到不到的分发服务器集群;再由分发服务器集群将逻辑日志发送到对应的边缘节点,并检测是否已将逻辑日志成功发送;边缘节点接收逻辑日志,并依照序列号对逻辑日志进行排序,从而检测是否有逻辑日志丢失,在逻辑日志正常时将逻辑日志写入内存数据库,在发生逻辑日志丢失时主动要求重发。解决了现有技术中,两台互为主备机的内存数据库同时工作带来的资源浪费和切换时产生的数据丢失的问题,提高了数据同步的可靠性。当边缘节点发生故障并恢复时,根据之前的备份文件和新接收到的逻辑日志判断是否发生数据丢失,并向中心节点要求重发丢失的逻辑日志,解决了逻辑日志丢失的问题;由于采用分布式网络结构,在故障期间由其他的边缘节点提供应用服务,解决了业务中断的问题;且由多个边缘节点分担同样的业务,提高了系统效率,缓解了边缘服务器压力。 下面结合附图,对本发明的实施例三进行介绍。 本发明实施例三中,由中心数据库向边缘节点下发逻辑日志的过程与本发明实施例一无异,故不再赘述。 随着用户的不断增加,系统扩容,增加新的边缘内存数据库节点,该过程如图6所示,步骤601、新加入的边缘节点由其他边缘节点拷贝备份文件; 本步骤中,新加入的边缘节点由其他提供同类业务的节点的磁盘中,拷贝备份文
件和增量文件到本边缘内存数据库的磁盘。 步骤602、新加入的边缘节点创建内存数据库; 本步骤中,新加入的边缘节点根据步骤601拷贝获得的备份文件创建该边缘节点的内存数据库。
11
步骤603、新加入的边缘节点接收逻辑日志; 本步骤中,新加入的边缘节点向向对应的分发服务器集群的全部分发服务器发送TCP连接,通知分发服务器该边缘节点的加入,接收分发服务器发送的逻辑日志。
步骤604、新加入的边缘节点请求丢失的逻辑日志; 本步骤中,所述边缘节点根据新接收的逻辑日志的序列号,和增量文件中的逻辑日志的序列号,判断是否发生逻辑日志丢失;如果逻辑日志序列号不连续,则认为发生丢失,向中心节点请求重发丢失的逻辑日志。 之后,中心节点向该新加入的逻辑节点发送丢失的逻辑日志,其过程与本发明实施例一中的步骤404至步骤409无异,不再赘述。 本发明提供的数据同步方法,由中心节点根据业务类型对逻辑日志进行分类并分配序列号,将逻辑日志按分类分别发送到不到的分发服务器集群;再由分发服务器集群将逻辑日志发送到对应的边缘节点,并检测是否已将逻辑日志成功发送;边缘节点接收逻辑日志,并依照序列号对逻辑日志进行排序,从而检测是否有逻辑日志丢失,在逻辑日志正常时将所述逻辑日志写入内存逻辑日志库,在发生逻辑日志丢失时主动要求重发,提高了逻辑日志同步的可靠性。由于采用分布式的网络结构,由多个边缘内存数据库支持同一业务,因此即使有一个内存数据库故障,也可以由同一分发服务器集群下的其他内存数据库继续提供服务,不会导致业务中断;且根据业务对内存数据库进行分类,每个内存数据库只为一种服务提供支持,减少了单个内存数据库的存储数据量和访问压力,对硬件的要求相对较低,降低了系统成本。在系统扩容时,只需要加入新的边缘节点,首先与其他边缘节点同步逻辑日志,再判断是否发生逻辑日志丢失,并在发生逻辑日志丢失时向中心节点请求重发丢失的逻辑日志,实现了动态增加边缘节点,系统可扩展性增强,避免了扩容时系统中断和硬件设备更换带来的业务中断和资源浪费等问题。 本发明的实施例还提供一种边缘节点,所述边缘节点的结构如图7所示,包括
排序模块701 ,用于接收并缓存逻辑日志,将所述逻辑日志按序列号排序;
判断模块702,用于判断所述排序模块接收的逻辑日志是否正常;
日志写入模块703,用于在所述逻辑日志正常时,将所述逻辑日志写入内存中。
进一步地,所述边缘节点还包括,如图8所示,数据备份模块704,用于将内存数据库中的逻辑日志周期性的备份到磁盘中; 数据库建立模块705,用于当内存数据库故障重启后,根据所述磁盘中的备份文件重建所述内存数据库;或者有新加入的边缘节点时,为所述新加入的边缘节点新建内存数据库;
请求重发模块706,用于在所述判断模块判断所述接收的逻辑日志不正常时,向分发服务器发送重发请求,请求重发丢失的逻辑日志;或者, 当重建内存数据库或新建内存数据库后,发生逻辑日志丢失时,向中心节点发送重发请求,请求重发丢失的逻辑日志。 在边缘节点接收逻辑日志时,首先由排序模块701将所述接收的逻辑日志缓存并排序,具体为以增量文件的形式缓存到边缘节点的磁盘中;在排序后,所述判断模块702根据所述逻辑日志的序列号是否连贯来判断所述缓存的逻辑日志是否正常;如果所述逻辑日志正常,则所述日志写入模块703向该边缘节点的内存数据库中写入所述逻辑日志;如果所述逻辑日志不正常,即序列号不连续,则所述请求重发模块706向分发服务器发送重发请求,请求重新发送丢失的逻辑日志;在正常工作的过程中,所述数据备份模块704周期性 的向磁盘备份所述内存数据库中的逻辑日志,以备份文件的形式存储在所述磁盘中。
进一步地,当内存数据库发生故障并重启后,需要重建所述内存数据库,具体为所 述数据库建立模块705向故障内存数据库的磁盘读取备份文件,所述备份文件中包含有逻 辑日志及所述逻辑日志的序列号,根据所述备份文件重建内存数据库;之后,排序模块701 继续接收逻辑日志,判断模块702根据新接收的逻辑日志的序列号和重建后的内存数据库 中的逻辑日志的序列号判断是否发生逻辑日志丢失,如果发生逻辑日志丢失,由请求重发 模块706向所述中心节点请求重发丢失的逻辑日志。 进一步地,当新加入边缘节点时,需要为所述新加入的边缘节点建立内存数据库, 具体为所述数据库建立模块705从相邻的用于同种业务的边缘节点的磁盘中拷贝备份文 件,根据所述备份文件为所述新加入的边缘节点建立内存数据库;之后,排序模块701继续 接收逻辑日志,判断模块702根据新接收的逻辑日志的序列号和新建的内存数据库中的逻 辑日志的序列号判断是否发生逻辑日志丢失,如果发生逻辑日志丢失,由请求重发模块706 向所述中心节点请求重发丢失的逻辑日志。 本发明的实施例还提供一种分发服务器,所述分发服务器的结构如图9所示,
日志发送模块901,用于向至少一个边缘节点发送所述逻辑日志,并接收该边缘节 点发送的应答消息,所述应答消息中携带有逻辑日志序列号和节点号; 日志清除模块902,用于在接收到全部边缘节点的应答消息后,删除缓存的所述逻 辑日志。 进一步地,所述分发服务器还包括,如图IO所示,日志缓存模块903,用于接收中 心节点发送的逻辑日志,并缓存所述逻辑日志; 超时重发模块904,用于在超时没有接收到边缘节点的应答消息时,向没有发送应 答消息的边缘节点重新发送所述逻辑日志; 应答重发模块905,用于接收边缘节点的重发请求,向该边缘节点发送相应的逻辑 日志。 日志缓存模块901接收中心节点发送的逻辑日志,并缓存所述逻辑日志,具体为 在分发服务器中建立"发送数据缓存表",在所述发送数据缓存表中存储所述逻辑日志;之 后,由日志发送模块901向边缘节点发送所述逻辑日志,并接收所述边缘节点回复的应答 消息;所述应答消息中有边缘节点已接收的逻辑日志序列号和节点号;日志清除模块902 接收到所述应答消息后,根据所述应答消息中携带的逻辑日志序列号和节点号,判断逻辑 日志的发送情况;当接收到全部边缘节点的应答消息后,说明所述逻辑日志已经成功的发 送到全部边缘节点,则所述日志清除模块902将所述逻辑日志由分发服务器中删除。
进一步地,所述分发服务器中会预先设置一个时限,所述超时重发模块904在发 出逻辑日志后开始计时,在超出该时限仍未收到边缘节点的应答消息时,认为逻辑日志在 发送过程中丢失,向没有发送应答消息的边缘节点重发所述逻辑日志。
进一步地,在边缘节点正常工作的情况下,当边缘节点的判断模块702判断日志 发送模块901发送的逻辑日志丢失时,会向分发服务器发送重发请求,所述应答重发模块 905在接收到所述重发请求后,向相应的边缘节点发送该边缘节点请求重发的逻辑日志。
本发明的实施例还提供一种数据同步系统,所述数据同步系统的结构如图11所示,包括 至少一个中心节点1101,至少一个分发服务器1102和至少一个边缘节点1103 ;其 中, 一个中心节点1101连接有至少两个分发服务器集群1102,所述分发服务器1102包括至 少一个分发服务器1103 ;—个分发服务器1103连接有至少一个边缘节点1104 ;
所述中心节点1101,用于对逻辑日志进行分类,为同一类逻辑日志独立分配序列 号;根据分类,向至少两个分发服务器集群1102发送所述逻辑日志,所述分发服务器集群 1102包括至少一个分发服务器1103 ; 所述分发服务器1103,用于接收中心节点1101发送的逻辑日志,并缓存所述逻辑 日志;向各个边缘节点1104发送所述逻辑日志,在接收到全部边缘节点1104发送的应答消 息后,删除缓存的所述逻辑日志; 所述边缘节点1103,用于接收并缓存逻辑日志,将所述逻辑日志按序列号排序; 判断所述逻辑日志是否正常;如果所述逻辑日志正常,将所述逻辑日志写入内存数据库中。
进一步地,所述边缘节点1104还用于当所述逻辑日志不正常时,向分发服务器 1103发送重发请求,请求重发丢失的逻辑日志;在内存数据库故障重启后,发生逻辑日志 丢失时,向中心节点1101发送重发请求,请求重发丢失的逻辑日志;将内存数据库中的逻 辑日志周期性的备份到磁盘中;在发生故障时,判断是否有逻辑日志丢失,并向中心节点 1101要求重发丢失的逻辑日志。 上述分发服务器、边缘节点和数据同步系统,可以与本发明实施例提供的数据同 步方法相结合,由中心节点根据业务类型对逻辑日志进行分类并分配序列号,将逻辑日志 按分类分别发送到不到的分发服务器集群;再由分发服务器集群将逻辑日志发送到对应的 边缘节点,并检测是否已将逻辑日志成功发送;边缘节点接收逻辑日志,并依照序列号对逻 辑日志进行排序,从而检测是否有逻辑日志丢失,在逻辑日志正常时将所述逻辑日志写入 内存逻辑日志库,在发生逻辑日志丢失时主动要求重发,提高了数据同步的可靠性。由于采 用分布式的网络结构,由多个边缘内存数据库支持同一业务,因此即使有一个内存数据库 故障,也可以由同一分发服务器集群下的其他内存数据库继续提供服务,不会导致业务中 断;且根据业务对内存数据库进行分类,每个内存数据库只为一种服务提供支持,减少了单 个内存数据库的存储数据量和访问压力,对硬件的要求相对较低,降低了系统成本。
本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可 以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中, 该程序在执行时,包括方法实施例的步骤之一或其组合。 另外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模 块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如 果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机 可读取存储介质中。 上述提到的存储介质可以是只读存储器,磁盘或光盘等。 以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
一种数据同步方法,其特征在于,包括接收并缓存逻辑日志,将所述逻辑日志按序列号排序;判断所述逻辑日志是否正常;如果所述逻辑日志正常,将所述逻辑日志写入内存数据库中。
2. 根据权利要求1所述的数据同步方法,其特征在于,所述判断所述逻辑日志是否正 常具体为判断所述逻辑日志的序列号是否连贯,如果序列号丢失,则所述逻辑日志不正常; 如果序列号连贯,则所述逻辑日志正常。
3. 根据权利要求1所述的数据同步方法,其特征在于,所述判断所述逻辑日志是否正 常的步骤之后还包括如果所述逻辑日志不正常,向分发服务器发送重发请求,请求重发丢失的逻辑日志。
4. 根据权利要求1所述的数据同步方法,其特征在于,所述将所述逻辑日志写入内存 数据库中的步骤之后还包括删除缓存的逻辑日志;向分发服务器发送应答消息,指示逻辑日志同步成功。
5. 根据权利要求1所述的数据同步方法,其特征在于,还包括周期性的向磁盘备份内存数据库中的逻辑日志,所述逻辑日志以备份文件的形式存储 在磁盘中;在所述内存数据库发生故障并恢复后,从所述磁盘中读取所述备份文件; 根据所述备份文件重建所述内存数据库;根据新接收到的逻辑日志的序列号和所述重建的内存数据库中逻辑日志的序列号,判 断是否发生逻辑日志丢失;如果发生逻辑日志丢失,向中心节点请求重新发送丢失的逻辑日志。
6. 根据权利要求1所述的数据同步方法,其特征在于,还包括当新的边缘节点加入时,拷贝其他边缘节点磁盘中的备份文件到该新的边缘节点的磁 盘中;根据所述备份文件创建该新的边缘节点的内存数据库;根据新接收到的逻辑日志序列号和所述内存数据库中逻辑日志的序列号,判断是否发 生逻辑日志丢失;如果逻辑日志丢失,向中心节点请求重新发送丢失的逻辑日志。
7. —种数据同步方法,其特征在于,包括向至少一个边缘节点发送逻辑日志,并接收该边缘节点发送的应答消息,所述应答消 息中携带有逻辑日志序列号和节点号;在接收到全部边缘节点的应答消息后,删除缓存的所述逻辑日志。
8. 根据权利要求7所述的数据同步方法,其特征在于,所述向至少一个边缘节点发送 逻辑日志,并接收该边缘节点发送的应答消息的步骤之前还包括中心节点对所述逻辑日志进行分类,为同一类逻辑日志独立分配序列号; 所述中心节点根据分类,向至少两个分发服务器集群发送所述逻辑日志,所述分发服 务器集群包括至少一个分发服务器;所述分发服务器接收所述中心节点发送的所述逻辑日志,并缓存所述逻辑日志。
9. 根据权利要求7所述的数据同步方法,其特征在于,还包括在超时没有接收到边缘节点的应答消息时,向没有发送应答消息的边缘节点重发逻辑日志;接收边缘节点的重发请求,向所述边缘节点重新发送对应的逻辑日志,所述重发请求中携带有需要重发的逻辑日志序列号与边缘节点号。
10. 根据权利要求7所述的数据同步方法,其特征在于,所述在接收到全部边缘节点的应答消息后,删除缓存的所述逻辑日志的步骤之后还包括向中心节点发送同步成功消息。
11. 一种边缘节点,其特征在于,包括排序模块,用于接收并缓存逻辑日志,将所述逻辑日志按序列号排序;判断模块,用于判断所述排序模块接收的逻辑日志是否正常;日志写入模块,用于在所述逻辑日志正常时,将所述逻辑日志写入内存数据库中。
12. 根据权利要求11所述的边缘节点,其特征在于,还包括数据备份模块,用于将内存数据库中的逻辑日志周期性的备份到磁盘中;数据库建立模块,用于当内存数据库故障重启后,根据所述磁盘中的备份文件重建所述内存数据库;或者有新加入的边缘节点时,为所述新加入的边缘节点新建内存数据库;请求重发模块,用于在所述判断模块判断所述接收的逻辑日志不正常时,向分发服务器发送重发请求,请求重发丢失的逻辑日志;或者,当重建内存数据库或新建内存数据库后,发生逻辑日志丢失时,向中心节点发送重发请求,请求重发丢失的逻辑日志。
13. —种分发服务器,其特征在于,包括日志发送模块,用于向至少一个边缘节点发送所述逻辑日志,并接收该边缘节点发送的应答消息,所述应答消息中携带有逻辑日志序列号和节点号;日志清除模i央,用于在接收到全部边缘节点的应答消息后,删除缓存的所述逻辑日志。
14. 根据权利要求13所述的分发服务器,其特征在于,还包括日志缓存模块,用于接收中心节点发送的逻辑日志,并缓存所述逻辑日志;超时重发模块,用于在超时没有接收到边缘节点的应答消息时,向没有发送应答消息的边缘节点重新发送所述逻辑日志;应答重发模块,用于接收边缘节点的重发请求,向该边缘节点发送相应的逻辑日志。
15. —种数据同步系统,其特征在于,包括至少一个中心节点,至少一个分发服务器和至少一个边缘节点;其中,一个中心节点连接有至少两个分发服务器集群,所述分发服务器集群包括至少一个分发服务器;一个分发服务器连接有至少一个边缘节点;所述中心节点,用于对逻辑日志进行分类,为同一类逻辑日志独立分配序列号;根据分类,向至少两个分发服务器集群发送所述逻辑日志,具体为向一个分发服务器集群发送一类逻辑日志;所述分发服务器集群包括至少一个分发服务器;所述分发服务器,用于接收所述中心节点发送的逻辑日志,并缓存所述逻辑日志;向至少一个边缘节点发送所述逻辑日志;在接收到全部边缘节点发送的应答消息后,删除缓存的所述逻辑日志;所述边缘节点,用于接收并缓存所述逻辑日志,将所述逻辑日志按序列号排序;判断所述逻辑日志是否正常;如果所述逻辑日志正常,将所述逻辑日志写入内存数据库中。
16.根据权利要求15所述的数据同步系统,其特征在于,所述边缘节点还用于当所述逻辑日志不正常时,向分发服务器发送重发请求,请求重发丢失的逻辑日志;将内存逻辑日志库中的逻辑日志周期性的备份到磁盘中;当重建内存数据库或新建内存数据库后,发生逻辑日志丢失时,向中心节点发送重发请求,请求重发丢失的逻辑日志;在发生故障时,判断是否有逻辑日志丢失,并向中心节点要求重发丢失的逻辑日志。
全文摘要
本发明公开了一种数据同步方法和数据同步系统。涉及内存数据库领域;解决了两台互为主备机的内存数据库同时工作带来的资源浪费和切换时产生的数据丢失的问题。所述数据同步方法包括接收并缓存逻辑日志,将所述逻辑日志按序列号排序;判断所述逻辑日志是否正常;如果所述逻辑日志正常,将所述逻辑日志写入内存数据库中。本发明可应用于数据库的数据同步。
文档编号G06F17/30GK101751394SQ20081017928
公开日2010年6月23日 申请日期2008年12月16日 优先权日2008年12月16日
发明者周丹弟 申请人:青岛海信传媒网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1