发明内容
本申请实施例提供了一种数据同步方法、装置、计算机设备及计算机可读存储介质,能够数据同步过程中,各个节点的数据库之间的数据一致性。该技术方案如下。
一方面,提供了一种数据同步方法,该方法包括:
响应于数据写入请求,将待写入的目标数据分别写入该至少两个节点的数据库中的第一存储区域,该数据库包括用于存储增量数据的第一存储区域以及用于存储全量数据的第二存储区域;
每隔目标时长在该至少两个节点中检测活跃节点;
响应于检测到存在活跃节点,对该至少两个节点的数据库的第一存储区域中的数据进行版本校验;
响应于该至少两个节点的数据库的第一存储区域中所存储数据的版本一致,向该至少两个节点的数据库发送数据提交请求,该数据提交请求用于指示将该第一存储区域中的数据写入对应的第二存储区域。
一方面,提供了一种数据同步装置,该装置包括:
写入模块,用于响应于数据写入请求,将待写入的目标数据分别写入该至少两个节点的数据库中的第一存储区域,任一该数据库包括用于存储增量数据的第一存储区域以及用于存储全量数据的第二存储区域;
检测模块,用于每隔目标时长在该至少两个节点中检测活跃节点;
校验模块,用于响应于检测到存在活跃节点,对该至少两个节点的数据库的第一存储区域中的数据进行版本校验;
请求发送模块,用于响应于该至少两个节点的数据库的第一存储区域中所存储数据的版本一致,向该至少两个节点的数据库发送数据提交请求,该数据提交请求用于指示将该第一存储区域中的数据写入对应的第二存储区域。
在一种可能实现方式中,该写入模块,用于:
响应于对该至少两个节点的数据库所对应的源数据库的数据写入操作,从该源数据库中获取被写入的数据作为该目标数据;
生成数据写入请求,该数据写入请求携带该目标数据;
将该数据写入请求发送至数据更新接口,该数据更新接口用于将该目标数据分别写入该至少两个节点的数据库中的第一存储区域。
在一种可能实现方式中,该装置还包括:
第一生成模块,用于每隔第一参考时长,基于该源数据库中的数据,生成第一版本的数据,该第一版本的版本标识为该第一版本的生成时刻,该第一版本的数据用于对该至少两个节点的数据库进行数据恢复。
在一种可能实现方式中,该校验模块用于执行下述任一项:
对该至少两个节点的数据库的第一存储区域中的数据进行对比;
分别获取该至少两个节点的数据库的第一存储区域所存储数据的哈希值,对获取到的至少两个该哈希值进行对比;
分别获取该至少两个节点的数据库的第一存储区域中数据的最近一次更新时刻,对获取到的至少两个该更新时刻进行对比。
在一种可能实现方式中,该装置还包括:
删除模块,用于响应于该至少两个节点的数据库的第一存储区域中所存储数据的版本不一致,删除该第一存储区域中的数据。
在一种可能实现方式中,该装置还包括:
第二生成模块,用于响应于该至少两个节点的数据库的第一存储区域中所存储数据的版本一致,基于该第一存储区域中的数据,生成第二版本的数据,该第二版本的版本标识为该第二版本的生成时刻。
在一种可能实现方式中,该装置还包括:
第一接收模块,用于接收数据恢复请求,该数据恢复请求包括目标时刻,该数据恢复请求用于指示将数据库恢复至该目标时刻;
确定模块,用于基于该目标时刻,确定该目标时刻对应的第一版本的数据以及第二版本的数据;
恢复模块,用于基于该目标时刻对应的第一版本的数据以及第二版本的数据,指令该至少两个节点的数据库恢复第二存储区域中的数据。
在一种可能实现方式中,该装置还包括:
第二接收模块,用于接收业务处理接口发送的版本查询请求,该版本查询请求用于查询参考时间段内该至少两个节点的数据库的数据更新情况;
数据发送模块,用于响应于该版本查询请求,将该至少两个节点的数据库在参考时间段内所生成的第二版本的数据发送至该业务处理接口,该业务处理接口用于将该参考时间段内所生成的第二版本的数据发送至业务处理网关。
在一种可能实现方式中,该装置还包括:
第三接收模块,用于响应于接收到业务处理请求,对该至少两个节点的数据库进行版本校验;
业务处理模块,用于响应于该至少两个节点的数据库的版本一致,基于该任一节点的数据库中的数据以及该业务处理请求进行业务处理。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器加载并执行以实现该数据同步方法所执行的操作。
一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现该数据同步方法所执行的操作。
一方面,提供了一种计算机程序产品,该计算机程序产品包括至少一条计算机程序,该至少一条计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该至少一条计算机程序,处理器执行该至少一条计算机程序,使得该计算机设备执行上述数据同步方法所执行的操作。
本申请实施例提供的技术方案,通过接收到对目标数据的写入请求时,能够将目标数据同时写入多个节点的数据库的数据热区,即第一存储区域,再按照周期检测业务处理系统内的活跃节点,当检测到有活跃节点,即业务处理系统内有数据更新时,检验各个节点的数据库的第一存储区域是否都获取到新增的目标数据,若是,再触发各个节点的数据库将第一存储区域中的数据写入对应的第二存储区域,也即是,写入到用于存储全量数据的存储区域,从而确保各个节点的数据库中的第二存储区域所存储数据的一致性,进而能够为业务处理提供可靠、稳定的数据支撑。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
云技术(cloud technology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。本申请实施例提供的技术方案涉及云技术中的云计算技术和云存储技术。
其中,云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且能够随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。按照逻辑功能划分,在IaaS(Infrastructure as a Service,基础设施即服务)层上可以部署PaaS(Platform as aService,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等;SaaS为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
数据库(Database)可以视为一种电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库管理系统(Database Management System, DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来分类,例如关系式、XML(Extensible Markup Language,即可扩展标记语言);或依据所支持的计算机类型来分类,例如服务器群集、移动电话;或依据所用查询语言来分类,例如SQL(Structured Query Language,结构化查询语言)、XQuery(一种语法标准);或依据性能冲量重点来分类,例如最大规模、最高运行速度;或者应用其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本申请实施例所提供的技术方案,能够应用于任一业务处理系统中,为了更好地满足业务处理需求,业务处理系统的硬件设备部署为多点多活架构,也即是部署为一个分布式系统,该分布式系统中各个区域的数据库均能够为业务处理提供数据支持。图1是本申请实施例提供的一种分布式系统的架构示意图,本申请实施例提供的数据同步方法能够应用于该分布式系统中,在本申请实施例中,部署在同一区域的服务器集群可以视为一个节点,如图1所示,该系统包括第一节点和第二节点,该第一节点部署在A区域,第二节点部署在B区域,当然该业务处理系统还可以包括其他节点,本申请实施例对此不作限定,在本申请实施例中仅以第一节点、第二节点为例进行说明。在一种可能实现方式中,该第一节点包括第一服务器101和第一数据库102,该第二节点包括第二数据库103。
其中,该第一服务器101可以是任一业务系统对应的后台服务器,例如该业务系统可以是人力资源管理系统、OA(Office Automation,办公自动化)系统等。第一服务器101能够接收数据处理请求,示例性的,该数据处理请求包括数据写入请求、数据删除请求等,该第一服务器101能够基于该数据处理请求对第一数据库102和第二数据库103执行相应的数据操作。在一种可能实现方式中,该第一服务器101还能够提供数据校验服务,该第一服务器101中部署有数据校验模块,该数据校验模块包括upsert API(upsert ApplicationProgramming Interface,数据更新接口),该数据更新接口能够响应于数据处理请求,分别对两个节点的数据库中的数据进行相应的数据操作;可选的,该数据校验模块还包括checkcenter(检查中心),该检查中心能够查询各个节点的数据库的数据更新情况。
该第一数据库102和第二数据库103用于存储业务系统的数据,例如,用户数据、设备运行数据等,本申请实施例对此不作限定,该第一数据库102和第二数据库103可以是PaaSMangoDB(部署在PaaS层的MangoDB数据库)。在本申请实施例中,第一数据库102和第二数据库103存储有相同的数据,在任一数据库出现故障时,服务器能够基于另一数据库中的数据执行相关的数据处理操作,以保障正常的数据处理进程。可选的,第一数据库102和第二数据库103部署在不同地区,以实现数据容灾备份。上述数据库均能够实现为一种服务器。
在一些实施例中,该实施环境还包括第二服务器104,该第二服务器104与第一服务器101能够提供相同的服务,示例性的,该第二服务器104中也部署有上述数据校验模块。在一些实施例中,上述服务器和数据库可以部署在不同区域,示例性的,第一服务器101和第一数据库102部署在A区域,第二服务器104和第二数据库103部署在B区域。在各个服务器和数据库正常运行的情况下,第一服务器101能够对A区域中的终端所发送的数据处理请求进行响应,对第一数据库102中的数据进行相应的数据处理,第二服务器104能够对B区域中的终端所发送的数据处理请求进行响应,对第二数据库103 中的数据进行相应的数据处理;在任一区域的服务器或数据库发生故障时,故障区域的流量能够迁移到另一区域,由另一区域的服务器或数据库来进行数据处理。
在本申请实施例中,上述服务器和数据库可以实现为独立的物理服务器,或者是多个物理服务器构成的服务器集群,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。各个服务器和各个节点的数据库之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。需要说明的是,上述服务器和数据库的数目可以更多或更少,示例性的,其他区域也能够部署有与A区域相同的设备,本申请实施例对上述分布式系统中服务器和数据库的数量和设备类型不加以限定。
在一种可能实现方式中,上述服务器和数据库可以为区块链系统中的节点设备,各个节点设备中的数据存储在该区块链系统的区块链上,例如,各个节点的数据库中的数据存储在区块链上,以避免数据被篡改,提高数据的安全性。
在图1所示的分布式系统的基础上,图2是本申请是实施例提供的一种分布式系统的示意图,以下结合图1和图2对该分布式系统的具体功能架构进行说明。参见图2,在一些实施例中,该分布式系统除了包括上述服务器和数据库之外,还包括第一网关201、第二网关202、第三服务器203和第四服务器204,示例性的,第一网关201、第三服务器203属于第一节点,第二网关202、第四服务器204属于第二节点。在一种可能实现方式中,该第一网关201和第二网关202为API网关,用于提供给限流、鉴权和路由功能,示例性的,该第一网关201和第二网关202上部署有LVS(Linux虚拟服务器)用于提供负载均衡功能。该第三服务器203和第四服务器204上均部署有GateAgent(网关代理)、OrgAPI(一种用于进行业务处理的接口)以及存储模块。在一种可能实现方式中,GateAgent视为一种配置有数据处理条件的网关,用于提供鉴权和CLB(Cloud Load Balancer,负载均衡)功能;OrgAPI能够通过外部服务向check center发送查询请求,以查询数据库的运行状态、数据更新情况等,该外部服务能够提供查询节点的存活状态的功能;该存储模块可以实现为MangoDB(一种数据库)或Redis(一种数据存储系统),用于备份数据库中的增量数据,以供各类业务调用。示例性的,该第一网关201和第二网关202能够接收Soap(Simple Object Access Protocol,简单对象访问协议)类型的数据、WebAPI(Web Application Programming Interface,网络应用程序接口)所发送的数据,这些类型的数据均能够基于HTTP(HyperText Transfer Protocol,超文本传输协议)传输到网关;在一些实施例中,该分布式系统还包括数据类型转换模块,在分布式系统接收到WCF类型的数据时,通过该数据类型转换模块进行数据转换,将WCF类型的数据转换为能够传输到网关的数据。
上述第一网关、第二网关、第三服务器和第四服务器可以部署在不同区域,如图2所示,在一些实施例中,第一网关、第一服务器、第三服务器以及第一数据库可以部署在A区域,第二网关、第二服务器、第四服务器以及第二数据库可以部署在B区域。需要说明的是,上述设备也可以以其他形式进行部署,本申请实施例对此不作限定。
需要说明的是,上述对分布式系统的架构的说明,仅是一种可能实现方式的示例性说明,本申请实施例对分布式系统的具体架构不作限定。
图3是本申请实施例提供的一种数据同步方法的流程图。该方法应用于如图1和图2所示的分布式系统中,能够由上述任一节点执行,在本申请实施例中,以该方法由第一节点执行为例,对该数据同步方法进行介绍,参见图3,在一种可能实现方式中,该实施例包括以下步骤。
301、第一节点响应于数据写入请求,将待写入的目标数据分别写入至少两个节点的数据库中的第一存储区域,任一数据库包括用于存储增量数据的第一存储区域以及用于存储全量数据的第二存储区域。
在一种可能实现方式中,该数据写入请求由对至少两个节点的数据库具有操作权限的设备发送,该数据写入请求携带待写入数据库的目标数据,第一节点响应于该数据写入请求,将该目标数据先写入各个节点的数据库中的第一存储区域中,也即是,先写入各个节点的数据库的数据热区中。
302、第一节点每隔目标时长在该至少两个节点中检测活跃节点。
其中,该目标时长由开发人员进行设置,本申请实施例对此不作限定。示例性的,该活跃节点是在目标时长内进行过业务处理的节点。在本申请实施例中,第一节点对业务处理系统中各个节点的活跃状态进行检测,也即是检测目标时长内各个节点是否进行过业务处理,检测各个节点的数据库是否有更新。
303、第一节点响应于检测到存在活跃节点,对至少两个节点的数据库的第一存储区域中的数据进行版本校验。
在本申请实施例中,该第一节点对各个节点的数据库的第一存储区域中的数进行版本校验,也即是,校验各个节点的数据库的第一存储区域中所存储的数据是否一致,从而确定每次数据写入过程中,是否将数据成功写入了各个节点的数据库中的第一存储区域。
304、第一节点响应于至少两个节点的数据库的第一存储区域中所存储数据的版本一致,向至少两个节点的数据库发送数据提交请求,该数据提交请求用于指示将该第一存储区域中的数据写入对应的第二存储区域。
在一种可能实现方式中,第一节点确定各个节点的数据库中的第一存储区域所存储的数据一致,也即是,新增数据均成功写入到各个节点的数据库中的第一存储区域,则触发各个节点的数据库将第一存储区域中的数据存储到第二存储区域中,以完成数据写入。
本申请实施例提供的技术方案,通过接收到对目标数据的写入请求时,能够将目标数据同时写入多个节点的数据库的数据热区,即第一存储区域,再按照周期检测业务处理系统内的活跃节点,当检测到有活跃节点,即业务处理系统内有数据更新时,检验各个节点的数据库的第一存储区域是否都获取到新增的目标数据,若是,再触发各个节点的数据库将第一存储区域中的数据写入对应的第二存储区域,也即是,写入到用于存储全量数据的存储区域,从而确保各个节点的数据库中的第二存储区域所存储数据的一致性,进而能够为业务处理提供可靠、稳定的数据支撑。
上述实施例是对本申请实施例方式的一个简要介绍,图4是本申请实施例提供的一种数据同步方法的流程图,该方法可以应用于如图1和图2所示的分布式系统中,以下结合图4对数据同步过程进行说明,在一种可能实现方式中,该实施例包括以下步骤。
401、第一节点响应于对至少两个节点的数据库所对应的源数据库的数据写入操作,从该源数据库中获取被写入的数据作为该目标数据。
其中,该源数据库用于存储业务系统的原始数据,在一种可能实现方式中,用户在业务系统中进行数据写入时,是针对源数据库进行的。示例性的,该源数据库是可以是关系型数据库,例如,源数据库中的数据存储为表格的形式,在这种情况下,该源数据库难以支撑高并发业务,因此需要将数据存储至多个区域的数据库,以更好地为各个地区的业务处理提供数据支撑。
在一种可能实现方式中,任一用户所使用的终端在对业务系统中进行数据写入操作时,也即是,对源数据库进行数据写入操作时,可以向API网关,也即是,上述第一网关发送数据写入信息,该数据写入信息可以携带用户的身份信息、终端的身份信息等,API网关能够基于该数据写入信息所携带的身份信息进行鉴权,以验证用户是否具备数据写入权限,响应于鉴权通过,则允许该终端在源数据库中写入目标数据,需要说明的是,本申请实施例对网关进行权限验证的方法不作限定。在一种可能实现方式中,该API网关响应于鉴权通过,将该数据写入信息转发至该第一节点,该第一节点响应于该数据写入信息从源数据库中获取本次写入的目标数据;可选的,该目标数据也可以直接携带在该数据写入信息中,第一节点接收到该数据写入信息,即可获取到该目标数据。需要说明的是,本申请实施例对该目标数据的具体获取方法不作限定。可选的,上述获取目标数据的过程有第一节点中的第一服务器执行,也即是,该第一节点中的第一服务器接收数据写入信息,响应于该数据写入信息获取该目标数据。
402、第一节点通过数据更新接口将该目标数据分别写入至少两个节点的数据库的第一存储区域。
在本申请实施例中,任一数据库包括用于存储增量数据的第一存储区域以及用于存储全量数据的第二存储区域,该第一存储区域也可以称为数据热区。
在一种可能实现方式中,第一节点响应于获取到本次写入源数据库的目标数据,基于该目标数据,生成数据写入请求,将该数据写入请求发送至数据更新接口,通过该数据更新接口将目标数据分别写入至少两个节点的数据库的第一存储区域。示例性的,该数据更新接口可以指令该至少两个节点的数据库将目标数据写入到第一存储区域中。需要说明的是,上述对数据写入请求的生成方法的说明,仅是一种可能实现方式的示例性说明,在一些实施例中,该数据写入请求也可以由该第一节点的API网关生成,例如,API网关响应于用户有权限进行数据写入,生成该数据写入请求,将该数据写入请求发送至第一节点中第一服务器的数据更新接口,本申请实施例对该数据写入请求的生成方式不作限定。
在一些实施例中,第一节点中的数据更新接口还可以对每次的数据写入情况进行记录,示例性的,记录数据写入的时间、本次请求数据写入的终端等,形成数据写入记录,来记录数据库中数据的变化情况,满足后续的数据排查需求,也便于进行操作溯源。
需要说明的是,上述步骤401和步骤402,是响应于数据写入请求,将待写入的目标数据分别写入至少两个节点的数据库中的第一存储区域的过程。在本申请实施例中,先将增量数据写入各个节点的数据库中的第一存储区域,即数据热区,而不是直接写入全量数据的存储区域,能够避免因某一节点的数据库的数据写入失败,而导致各个节点的数据库所存储的数据不一致。
403、第一节点每隔目标时长在至少两个节点中检测活跃节点。
在一种可能实现方式中,检测活跃节点的过程通过节点检测设备实现,该节点检测设备也即是上述图2中用于提供外部服务的设备,示例性的,该节点检测设备上部署有北极星服务探测工具,通过该北极星服务探测工具来提供活跃节点检测服务。在一种可能实现方式中,第一节点每隔目标时长向节点检测设备发送节点检测请求,该节点检测设备响应于该节点检测请求,检测各个节点的活跃状态,示例性的,节点检测设备检测各个节点在目标时长内的业务处理次数、接口调用情况等。该节点检测设备将节点检测结果发送至各个节点,各个节点响应于检测到存在活跃节点,继续执行下述步骤404,响应于未检测到活跃节点,则再次等待目标时长,进行下一次活跃节点检测。
在本申请实施例中,在检测到活跃节点,即检测到任一节点有数据更新时,在执行后续的数据校验、数据同步的步骤,能够有效避免节点重复执行冗余步骤,且对于更新频率较大的数据库,采用每隔目标时长进行一次数据检验、数据同步的方式,以避免频繁进行数据校验和数据同步而导致第一节点的数据处理压力过大。
404、第一节点响应于检测到存在活跃节点,对该至少两个节点的数据库的第一存储区域中的数据进行版本校验。
在一些实施例中,该第一节点响应于检测到活跃节点,即可触发对各个节点的数据库的第一存储区域中的数据进行版本校验。在一种可能实现方式中,该第一节点对各个第一存储区域中的数据进行版本校验的方法,包括下述多种实现方式中的任一种。
实现方式一、第一节点对至少两个节点的数据库的第一存储区域中的数据进行对比。在一种可能实现方式中,该第一节点可以直接对各个节点的数据库的第一存储区域中所存储的数据进行对比,若数据相同,则确定各个节点的数据库的第一存储区域中所存储数据的版本一致,若数据不同,则确定各个节点的数据库的第一存储区域中所存储数据的版本不一致。
实现方式二、第一节点分别获取至少两个节点的数据库的第一存储区域所存储数据的哈希值,对获取到的至少两个该哈希值进行对比。在一种可能实现方式中,该第一节点将各个节点的数据库的第一存储区域所存储数据的哈希值进行对比,若哈希值相同,则确定各个节点的数据库的第一存储区域中所存储的数据相同,即数据的版本一致,若哈希值不同,则确定各个节点的数据库的第一存储区域中所存储的数据不相同,即数据的版本不一致。需要说明的是,该第一存储区域所存储数据的哈希值可以由该第一节点生成,也可以由数据库生成,本申请实施例对哈希值的具体获取方式不作限定。
实现方式三、第一节点分别获取至少两个节点的数据库的第一存储区域中数据的最近一次更新时刻,对获取到的至少两个该更新时刻进行对比。若基于各个节点的数据库所获取到的更新时刻均相同,则确定各个节点的数据库的第一存储区域中所存储的数据相同,即数据的版本一致,若更新时刻不同,则确定各个节点的数据库的第一存储区域中所存储的数据不相同,即数据的版本不一致。在一些实施例中,该第一节点也可以获取第一存储区域所存储的各个数据的更新时刻,分别对从不同第一存储区域所获取到的更新时刻进行对比,来确定各个第一存储区域所存储的数据是否相同。需要说明的是,本申请实施例对获取哪些数据的更新时刻不作限定。
需要说明的是,上述对各个第一存储区域中所存储的数据进行版本校验的方法的说明,仅是一种可能实现方式的示例性说明,本申请实施例对具体采用哪种方式进行版本校验不作限定。在一种可能实现方式中,上述数据版本校验步骤由第一节点的第一服务器执行。在本申请实施例中,该第一节点能够基于版本校验结果执行下述步骤405或者步骤406。
405、第一节点响应于至少两个节点的数据库的第一存储区域中所存储数据的版本一致,向该至少两个节点的数据库发送数据提交请求,分别由各个节点的数据库将该第一存储区域中的数据写入对应的第二存储区域。
其中,该数据提交请求用于指示将该第一存储区域中的数据写入对应的第二存储区域,也即是指示一个数据库将本数据库中第一存储区域中的数据,写入本数据的第二存储区域。
在一种可能实现方式中,各个节点的数据库将第一存储区域中的数据写入对应的第二存储区域后,可以将第一存储区域中的数据删除。可选的,各个节点的数据库在完成数据写入后,还可以向第一节点发送数据写入完成的提示信息。
406、第一节点响应于至少两个节点的数据库的第一存储区域中所存储数据的版本不一致,删除该第一存储区域中的数据。
在一种可能实现方式中,各个节点的数据库之间数据同步失败时,该第一节点可以向该至少两个节点的数据库分别发送数据同步失败的提示信息,该至少两个节点的数据库响应于该提示信息,删除临时存储在第一存储区域中的数据,从而确保各个节点的数据库所存储数据的一致性。
在一些实施例中,该第一节点响应于各个节点的数据库的第一存储区域中所存储的数据不一致,还能够重新进行数据同步。示例性的,第一节点可以指令数据库删除第一存储区域中的数据,重新从源数据库中获取增量数据,将新获取到的增量数据写入各个节点的数据库的第一存储区域中。
在本申请实施例中,该第一节点在基于数据库中的数据进行业务处理之前,还能够再次对各个节点的数据库所存储数据的一致性进行校验,以确保第一节点无论基于哪个节点的数据库中的数据进行业务处理,所获取到的业务处理结果均是相同的。在一种可能实现方式中,第一节点响应于接收到业务处理请求,对该至少节点的两个节点的数据库进行版本校验,响应于该至少两个节点的数据库的版本一致,基于第一节点的数据库中的数据以及该业务处理请求进行业务处理,响应于该至少两个节点的数据库的版本一致,则该第一节点可以不进行本次业务处理。在本申请实施例中,在进行业务处理之前,先确定各个数据库所存储的数据是否一致,在各个节点的数据库所存储数据一致的情况下,再进行业务处理,能够确保业务处理结果的准确性,避免各个节点的数据库之间数据同步失败对业务处理结果造成影响。
本申请实施例提供的技术方案,通过接收到对目标数据的写入请求时,能够将目标数据同时写入多个节点的数据库的数据热区,即第一存储区域,再按照周期检测业务处理系统内的活跃节点,当检测到有活跃节点,即业务处理系统内有数据更新时,检验各个节点的数据库的第一存储区域是否都获取到新增的目标数据,若是,再触发各个节点的数据库将第一存储区域中的数据写入对应的第二存储区域,也即是,写入到用于存储全量数据的存储区域,从而确保各个节点的数据库中的第二存储区域所存储数据的一致性,进而能够为业务处理提供可靠、稳定的数据支撑。
需要说明的是,上述实施例仅以将新增数据在至少两个节点的数据库之间同步为例进行说明,本申请实施例所提供的技术方案也能够应用于数据删除的场景,示例性的,若用户对源数据库进行了数据删除操作,通过该第一节点的数据更新接口在至少两个节点的数据库的第一存储区域中写入数据删除信息,在对至少两个节点的数据库的第一存储区域所存储的数据进行版本校验通过后,该至少两个节点的数据库将第一存储区域中的数据写入该第二存储区域,数据库响应于写入第一存储区域的数据中,包括该数据删除信息,基于该数据删除信息对该第二存储区域中的数据进行删除。需要说明的是,上述在至少两个数据库之间同步删除数据的过程与上述在至少两个节点的数据库之间同步写入数据的过程同理,在此不作赘述。
上述实施例介绍了在不同数据库之间进行数据同步的方法,在本申请实施例中,还能够基于全量数据生成大版本,基于每次更新至数据库的数据生成小版本,基于这些大版本的数据以及小版本的数据,能够实现准确、快速的数据恢复,实现对数据库的版本管理,图5是本申请实施例提供的一种数据恢复方法的流程图,在本申请实施例中,以该方法由第一节点执行为例进行说明,参见图5,在一种可能实现方式中,该实施例包括以下步骤。
501、第一节点获取至少一个第一版本的数据和至少一个第二版本的数据。
在本申请实施例中,该第一版本的数据为不同时刻的全量数据,可以称为大版本的数据,该第二版本的数据为不同时刻的增量数据,可以成为小版本的数据。该第一版本的数据和第二版本的数据均能够用于对该至少两个节点的数据库进行数据恢复。
在一种可能实现方式中,该第一节点每隔第一参考时长,基于源数据库中的数据,生成第一版本的数据,也即是,该第一节点基于原始的数据,生成当前时刻的全脸数据所对应的版本。其中,该第一参考时长可以由开发人员进行设置,例如,该第一参考时长可以设置为24小时,本申请实施例对此不作限定。可选的,该第一版本的版本标识为该第一版本的生成时刻,或者,该第一版本的版本标识携带该第一版本的生成时刻的时间戳等,本申请实施例对此不作限定。在本申请实施例中,基于源数据库中所存储的原始数据,生成第一版本的数据,能够有效确保第一版本的数据的准确性。
在一种可能实现方式中,该第一节点在对各个节点的数据库的第一存储区域中所存储的数据进行版本校验后,响应于该至少两个节点的数据库的第一存储区域中所存储数据的版本一致,则基于该第一存储区域中的数据,生成第二版本的数据,也即是,该第一节点在新增数据均成功写入到各个节点的数据库的第一存储区域之后,基于该第一存储区域中的数据生成当前时刻的增量数据对应的版本。可选的,该第一节点可以在每次将数据写入第一存储区域之间,就对各个节点的数据库的第一存储区域中的数据进行一次版本校验,生成一个第二版本的数据。或者,该第一节点每隔目标时长,进行一次活跃节点检测,在检测到活跃节点且对各个节点的数据库的第一存储区域中的数据进行版本校验通过,生成一个第二版本的数据,其中,该目标时长由开发人员进行设置,例如,该目标时长设置为5分钟,在本申请实施例中,该第二版本的数据的生成周期小于第一版本的数据的生成周期。可选的,该第二版本的版本标识为该第二版本的生成时刻,或者,该第二版本的版本标识携带该第二版本的生成时刻的时间戳等,本申请实施例对此不作限定。
需要说明的是,在本申请实施例中,上述步骤501由第一节点的第一服务器执行,在一种可能实现方式中,还能够由该分布式系统中的其他服务器生成该第一版本的数据和第二版本的数据,例如,由图2中的第一节点的第三服务器和第二节点的第四服务器执行上述步骤501,在有数据恢复需求时,从该第一节点的第三服务器或第二节点的第四服务器中获取该第一版本的数据和第二版本的数据;或者,由第一节点的第三服务器或第二节点的第四服务器执行生成第一版本的数据的步骤,由第一节点的第一服务器或第二节点的第二服务器执行生成第二版本的数据的步骤。本申请实施例对具体由哪个节点中的哪个服务器执行上述生成第一版本的数据和第二版本的数据的步骤不作限定。
502、第一节点接收数据恢复请求,该数据恢复请求包括目标时刻。
其中,该数据恢复请求用于指示将数据库恢复至该目标时刻。该数据恢复请求可以由任一用户所使用的终端发送,示例性的,任一用户所使用的终端向分布式系统发送业务处理请求,先由第一节点的API网关对该终端或用户进行权限验证,响应于验证通过,再将该数据恢复请求发送至第一节点的第一服务器。
503、第一节点基于该目标时刻,确定该目标时刻对应的第一版本的数据以及第二版本的数据。
在一种可能实现方式中,该第一节点的第一服务器可以将该目标时刻与各个版本的版本标识进行匹配,获取到该目标时刻对应的第一版本的数据以及第二版本的数据。当然,该第一节点的第一服务器也可以通过其他方式获取目标时刻对应的第一版本的数据以及第二版本的数据,本申请实施例对此不作限定。
504、第一节点基于该目标时刻对应的第一版本的数据以及第二版本的数据,指令至少两个节点的数据库恢复第二存储区域中的数据。
在一种可能实现方式中,该第一节点的第一服务器可以将该第一版本的数据和第二版本的数据发送至各个节点的数据库,由各个数据应用该第一版本的数据和第二版本的数据,对第二存储区域中的数据进行恢复。需要说明的是,本申请实施例对数据恢复的具体方式不作限定。
需要说明的是,上述生成第一版本、第二版本以及进行数据恢复的步骤也可以由图2所示的第三服务器或第四服务器执行,也即是,第三服务器或第四服务器响应于数据恢复请求,指令数据库进行数据恢复,本申请实施例对此不作限定。本申请实施例提供的技术方案,通过基于各个节点的数据库的增量数据生成第二版本的数据,便于进行数据版本管理和数据恢复。
图6是本申请实施例提供的一种数据同步以及数据恢复的示意图,以下结合图6,对上述数据同步以及数据恢复的过程进行说明。如图6所示,在4:00生成第一版本的数据(V2021.1.1),在检测到数据写入操作时,upsert API将新增数据写入各个节点的数据库的第一存储区域,该第一节点的第一服务器每隔目标时长,即5分钟,进行活跃节点检测,响应于检测到活跃节点,对各个数据库的第一存储区域所存储的数据进行版本校验,响应于版本校验通过,生成第二版本的数据,例如,生成小版本V2021.1.1-4.10、V2021.1.1-4.20,响应于版本校验失败,丢弃临时保存在第一存储区域中的数据,不生成第二版本的数据。在有数据恢复需求时,例如,需要退回到4:10时刻的版本,则第一节点的第一服务器获取第一版本V2021.1.1的数据,以及,第二版本V2021.1.1-4.10的数据,以进行版本回退。
在上述数据同步过程中,还可以将各个节点的数据库中第一存储区域中临时存储的数据进行备份,以避免数据丢失和被篡改。示例性的,每隔第三参考时长,业务处理网关通过业务处理接口向第一节点的第一服务器发送版本查询请求,该业务处理网关也即是上述图2中的第三服务器或第四服务器,该版本查询请求用于查询参考时间段内该至少两个数据库的数据更新情况。在一种可能实现方式中,该业务处理网关可以通过节点检测设备,向第一节点的第一服务器中的check center发送该版本查询请求,该节点检测设备能够提供查询节点的存活状态的功能,例如,该节点检测设备搭载有北极星服务检测工具,能够探测各个服务器节点的存活状态,即探测各个服务器节点是否处于正常运行状态,对于处于正常运行节点的第一节点发送版本查询请求。该第一节点的第一服务器响应于接收业务处理接口发送的版本查询请求,将该至少两个节点的数据库在参考时间段内所生成的第二版本的数据发送至该业务处理接口,由该业务处理接口将该参考时间段内所生成的第二版本的数据发送至业务处理网关。其中,该第三参考时长可以由开发人员进行设置,本申请实施例对此不作限定,示例性的,该第三参考时长与该目标时长设置为相同数值,在每次生成第二版本的数据之后,即可将新生成的第二版本的数据发送至业务处理网关进行备份。上述参考时间段可以由发起请求的用户指定,携带在该版本查询请求中,或者该参考时间段为本次接收到版本查询请求的时刻与上一次接收到版本查询请求的时刻之间的时间段,本申请实施例对此不作限定。这种数据备份方式,一方面能够提高数据的安全性,另一方面也便于业务处理网关在进行业务处理时,直接调用本地缓存的增量数据。
在本申请实施例中,由于是upsert API将更新的数据同时写入各个节点的数据库的第一存储区域,即写入各个节点的数据库的数据热区,能够保证各个节点的数据库间的数据一致性,且upsert API能够记录数据实时写入的情况,记录历史数据的变化,从而满足数据后期需排查的需求,且支持数据按日期归档,具备定期清理能力;服务器还能够通过checker center检查活跃的数据节点,即检测各个节点的数据库的数据更新情况,当检查到各个节点的数据库都获取到新增数据后会进行切换数据,即将数据热区中的数据存储到全量数据的存储区域中,保证各个节点的数据库中数据的一致性。本申请实施例提供的技术方案,能够保障数据库的数据更新效率,且达到不同地区数据库中的数据迅速同步的目的,对于有强实时性查询的业务来讲更友好,使用范围更加灵活。示例性的,对于员工信息录入场景,新员工入职当日即可迅速更新各个节点的数据库所存储的员工信息,且本方案所采取的方式是检查各个节点的数据库均获取到新增数据后,再对新增数据进行同步,并不是缩短全量数据备份的时间差来实现,能够更加节省计算资源和存储资源。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
图7是本申请实施例提供的一种数据同步装置的结构示意图,参见图7,该装置包括:
写入模块701,用于响应于数据写入请求,将待写入的目标数据分别写入该至少两个节点的数据库中的第一存储区域,任一该数据库包括用于存储增量数据的第一存储区域以及用于存储全量数据的第二存储区域;
检测模块702,用于每隔目标时长在该至少两个节点中检测活跃节点;
校验模块703,用于响应于检测到存在活跃节点,对该至少两个节点的数据库的第一存储区域中的数据进行版本校验;
请求发送模块704,用于响应于该至少两个节点的数据库的第一存储区域中所存储数据的版本一致,向该至少两个节点的数据库发送数据提交请求,该数据提交请求用于指示将该第一存储区域中的数据写入对应的第二存储区域。
在一种可能实现方式中,该写入模块701,用于:
响应于对该至少两个节点的数据库所对应的源数据库的数据写入操作,从该源数据库中获取被写入的数据作为该目标数据;
生成数据写入请求,该数据写入请求携带该目标数据;
将该数据写入请求发送至数据更新接口,该数据更新接口用于将该目标数据分别写入该至少两个节点的数据库中的第一存储区域。
在一种可能实现方式中,该装置还包括:
第一生成模块,用于每隔第一参考时长,基于该源数据库中的数据,生成第一版本的数据,该第一版本的版本标识为该第一版本的生成时刻,该第一版本的数据用于对该至少两个节点的数据库进行数据恢复。
在一种可能实现方式中,该校验模块703用于执行下述任一项:
对该至少两个节点的数据库的第一存储区域中的数据进行对比;
分别获取该至少两个节点的数据库的第一存储区域所存储数据的哈希值,对获取到的至少两个该哈希值进行对比;
分别获取该至少两个节点的数据库的第一存储区域中数据的最近一次更新时刻,对获取到的至少两个该更新时刻进行对比。
在一种可能实现方式中,该装置还包括:
删除模块,用于响应于该至少两个节点的数据库的第一存储区域中所存储数据的版本不一致,删除该第一存储区域中的数据。
在一种可能实现方式中,该装置还包括:
第二生成模块,用于响应于该至少两个节点的数据库的第一存储区域中所存储数据的版本一致,基于该第一存储区域中的数据,生成第二版本的数据,该第二版本的版本标识为该第二版本的生成时刻。
在一种可能实现方式中,该装置还包括:
第一接收模块,用于接收数据恢复请求,该数据恢复请求包括目标时刻,该数据恢复请求用于指示将数据库恢复至该目标时刻;
确定模块,用于基于该目标时刻,确定该目标时刻对应的第一版本的数据以及第二版本的数据;
恢复模块,用于基于该目标时刻对应的第一版本的数据以及第二版本的数据,指令该至少两个节点的数据库恢复第二存储区域中的数据。
在一种可能实现方式中,该装置还包括:
第二接收模块,用于接收业务处理接口发送的版本查询请求,该版本查询请求用于查询参考时间段内该至少两个节点的数据库的数据更新情况;
数据发送模块,用于响应于该版本查询请求,将该至少两个节点的数据库在参考时间段内所生成的第二版本的数据发送至该业务处理接口,该业务处理接口用于将该参考时间段内所生成的第二版本的数据发送至业务处理网关。
在一种可能实现方式中,该装置还包括:
第三接收模块,用于响应于接收到业务处理请求,对该至少两个节点的数据库进行版本校验;
业务处理模块,用于响应于该至少两个节点的数据库的版本一致,基于该任一节点的数据库中的数据以及该业务处理请求进行业务处理。
本申请实施例提供的装置,通过接收到对目标数据的写入请求时,能够将目标数据同时写入多个节点的数据库的数据热区,即第一存储区域,再按照周期检测业务处理系统内的活跃节点,当检测到有活跃节点,即业务处理系统内有数据更新时,检验各个节点的数据库的第一存储区域是否都获取到新增的目标数据,若是,再触发各个节点的数据库将第一存储区域中的数据写入对应的第二存储区域,也即是,写入到用于存储全量数据的存储区域,从而确保各个节点的数据库中的第二存储区域所存储数据的一致性,进而能够为业务处理提供可靠、稳定的数据支撑。
需要说明的是:上述实施例提供的数据同步装置在数据同步时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据同步装置与数据同步方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述节点设备可以实现为一种服务器,图8是本申请实施例提供的一种服务器的结构示意图,该服务器800可因配置或性能不同而产生比较大的差异,在一些实施例中,服务器800包括一个或多个处理器(Central Processing Units,CPU)801和一个或多个的存储器802,其中,该一个或多个存储器802中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器801加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器800还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器800还可以包括其他用于实现设备功能的部件,在此不做赘述。
在一些实施例中,本申请实施例所涉及的计算机程序可被部署在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链系统。也即是,上述网关、数据库和服务器均可以作为区块链系统中的节点设备。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由处理器执行以完成上述实施例中的数据同步方法。例如,该计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括至少一条计算机程序,该至少一条计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该至少一条计算机程序,处理器执行该至少一条计算机程序,使得该计算机设备执行上述数据同步方法。
本领域普通技术人员能够理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
上述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。