CN116132453A - 一种网络服务间的数据同步方法及设备 - Google Patents
一种网络服务间的数据同步方法及设备 Download PDFInfo
- Publication number
- CN116132453A CN116132453A CN202211695813.8A CN202211695813A CN116132453A CN 116132453 A CN116132453 A CN 116132453A CN 202211695813 A CN202211695813 A CN 202211695813A CN 116132453 A CN116132453 A CN 116132453A
- Authority
- CN
- China
- Prior art keywords
- token
- request
- service node
- data
- node
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Telephonic Communication Services (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的目的是提供一种网络服务间的数据同步方法及设备,本申请通过服务节点响应于对请求端发起的数据变更请求校验鉴权成功,在使用原子事务的函数中执行数据变更请求中的操作相关数据对应的变更操作得到变更结果;并响应于变更操作执行成功,携带与操作相关数据对应的令牌,向受信节点的同步接口发送数据同步请求,以使受信节点通过令牌消费接口验证令牌是否有效,若是,则取出存储的、与令牌对应的操作相关数据,执行操作相关数据对应的同步操作并返回操作成功响应信息给服务节点;使得服务节点在使用原子事务的函数中将变更结果进行事务提交,并将操作成功响应信息返回给请求端或受信节点,确保服务节点和受信节点之间数据的一致性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种网络服务间的数据同步方法及设备。
背景技术
现有技术中,在两个网络服务间同步数据是非常常见的需求,并且需要保障数据同步的原子性与一致性,现有的数据同步方案包括数据库同步方案和分布式事务方案。比如,在数据库同步方案中,直接在数据库层面进行同步,几乎每种数据库都会有对应的数据同步工具,而数据库同步方案的局限性主要是需要两个网络服务使用的是同一类型的数据库,不支持异构的存储方案,同步方需要能够拿到两个数据库的读权限,无法做权限隔离。在分布式事务方案中,比如XA方案、TCC方案、2PC方案、3PC方案等分布式事务方案也可以用于服务间的数据同步,但XA方案是数据库级别的,要求双方的数据库都实现XA协议,2PC/3PC方案也是数据库级别的,并且资源占用时间长,TCC方案对于双方的业务改造成本较大,需要为一个操作实现Try、Commit及Cancel接口等,因此,如何需求一种能够满足网络服务间的数据同步的方法成为业界当前主要研究的课题。
发明内容
本申请的一个目的是提供一种网络服务间的数据同步方法及设备,实现了网络服务层面的数据同步,并非针对某类存储引擎,同步的服务节点和受信节点双方,可以各自进行存储的实现,能够达到异构数据存储的数据同步,确保在服务节点处更新的数据可以在受信节点同步更新。
根据本申请的一个方面,提供了一种网络服务间的数据同步方法,应用于服务节点,其中,所述方法包括:
响应于对请求端发起的数据变更请求校验鉴权成功,在使用原子事务的函数中执行所述数据变更请求中的操作相关数据对应的变更操作,得到变更结果;
响应于变更操作执行成功,则携带与所述操作相关数据对应的令牌,向受信节点的同步接口发送数据同步请求,以使所述受信节点通过令牌消费接口验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据后,执行取出的、与所述令牌对应的操作相关数据对应的同步操作;
接收所述受信节点响应于同步操作执行成功返回的操作成功响应信息;
响应于所述操作成功响应信息,在使用原子事务的函数中将变更结果进行事务提交;
将所述操作成功响应信息返回给所述请求端或所述受信节点,以使所述受信节点将所述操作成功响应信息发送给所述请求端;
其中,所述方法还包括:
接收所述受信节点响应于同步操作执行失败返回的操作失败响应信息;
响应于所述操作失败响应信息,在使用原子事务的函数中对变更操作进行事务回滚或补偿操作;
将所述操作失败响应信息返回给所述请求端或所述受信节点,以使所述受信节点将所述操作成功响应信息发送给所述请求端。
根据本申请的另一方面,还提供了一种网络服务间的数据同步方法,应用于受信节点,其中,所述方法包括:
通过同步接口接收服务节点响应于变更操作执行成功后携带与操作相关数据对应的令牌发起的数据同步请求,其中,所述服务节点响应于对请求端发起的数据变更请求校验鉴权成功,执行所述数据变更请求中的所述操作相关数据对应的变更操作;
验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据,将令牌删除或标记无效后,在使用原子事务的函数中执行取出的、与所述令牌对应的操作相关数据对应的同步操作;
响应于同步操作执行成功,向所述服务节点返回操作成功响应信息,以使所述服务节点响应于所述操作成功响应信息在使用原子事务的函数中将变更结果进行事务提交后将所述操作成功响应信息返回给所述请求端;
其中,所述方法还包括:
响应于同步操作执行失败,向所述服务节点返回操作失败响应信息,以使所述服务节点响应于所述操作失败响应信息在使用原子事务的函数中对变更操作进行事务回滚或补偿操作。
根据本申请的另一方面,还提供了一种网络服务间的数据同步方法,应用于受信节点,其中,所述方法包括:
通过同步接口接收服务节点响应于变更操作执行成功后携带与操作相关数据对应的令牌发起的数据同步请求,其中,所述服务节点响应于对请求端发起的数据变更请求校验鉴权成功,执行所述数据变更请求中的所述操作相关数据对应的变更操作;
验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据;
在使用原子事务的函数中执行取出的、与所述令牌对应的操作相关数据对应的同步操作;
响应于同步操作执行成功,向所述服务节点返回操作成功响应信息,以使所述服务节点响应于所述操作成功响应信息在使用原子事务的函数中将变更结果进行事务提交;
响应于接收到所述服务节点返回的所述操作成功响应信息,将所述操作成功响应信息发送给所述请求端;
其中,所述方法还包括:
响应于同步操作执行失败,向所述服务节点返回操作失败响应信息,以使所述服务节点响应于所述操作失败响应信息在使用原子事务的函数中对变更操作进行事务回滚或补偿操作;
响应于接收到所述服务节点返回的所述操作失败响应信息,将所述操作失败响应信息发送给所述请求端。
根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述网络服务间的数据同步方法。
根据本申请的另一方面,还提供了一种网络服务间的数据同步的服务节点,该服务节点包括:
一个或多个处理器;
计算机可读介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述服务节点端网络服务间的数据同步方法。
根据本申请的另一方面,还提供了一种网络服务间的数据同步的受信节点,该受信节点包括:
一个或多个处理器;
计算机可读介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述受信节点端网络服务间的数据同步方法。
与现有技术相比,本申请采用了请求端、受信节点和服务节点之间的逻辑配合,通过服务节点响应于对请求端发起的数据变更请求校验鉴权成功,在使用原子事务的函数中执行所述数据变更请求中的操作相关数据对应的变更操作,得到变更结果;并响应于变更操作执行成功,则携带与所述操作相关数据对应的令牌,向受信节点的同步接口发送数据同步请求,以使所述受信节点通过令牌消费接口验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据后,执行取出的、与所述令牌对应的操作相关数据对应的同步操作,并返回操作成功响应信息给服务节点;所述服务节点接收所述受信节点响应于同步操作执行成功返回的操作成功响应信息;并响应于所述操作成功响应信息,在使用原子事务的函数中将变更结果进行事务提交,并将所述操作成功响应信息返回给所述请求端或所述受信节点,以使所述受信节点将所述操作成功响应信息发送给所述请求端。实现了网络服务层面的数据同步,能够支持同步的服务节点和受信节点双方使用不同的存储引擎,均可进行存储的实现,能够达到异构数据存储的数据同步的目的,同时使用原子事务的函数确保在服务节点处更新的数据可以在受信节点同步更新的原子性和数据一致性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种网络服务间的数据同步方法的流程示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请提供的一种网络服务间的数据同步方法的所有实施例中,应用于受信节点、服务节点及安装有请求程序的请求端,其中,受信节点为受到请求程序对应的请求端和待访问的网络服务的服务节点信任的另一个网络服务,服务节点与受信节点之间存在权限的信任建立,以便受信节点可以提供向服务节点发起的网络请求的授权;服务节点为要访问资源或执行操作的目标网络服务所在的节点;请求程序可以是一个客户端程序,网络服务或者请求脚本程序等具备发送网络请求能力的计算机程序,请求程序可以被用户操作触发一个网络请求,也可以根据程序逻辑发起一个网络请求,请求程序安装于请求端。需要说明的是,在本申请所有实施例中的同步,可以是同步双方的数据存储中的数据完全相同,也可以是对于需要进行同步的数据,能够保障双方所获取的原始数据是一致的,双方可以根据实际需要对数据作不同的解析、处理和存储等。
在本申请提供的一种网络服务间的数据同步方法中,受信节点至少提供令牌(token)生产接口、令牌(token)消费接口和同步接口,其中,token生产接口用于接收目标网络请求的信息参数,连同访问者的身份标识等信息一并存储并生成token的接口;token消费接口用于接收一个token,在存储中取出与token对应的目标网络请求的信息参数与身份标识的接口;受信节点需要为所有需要进行数据同步的网络请求给出一个对应的同步请求的同步接口,即服务节点对于需要同步的所有请求都可以通过映射或函数关系得到一个对应的同步操作的同步接口,比如,假设服务节点的接口地址为[S-API],受信节点的接口地址为[M-API],那么:添加用户的变更操作:POST[S-API]/admin,对应的同步请求可以是POST[M-API]/add_admin,变更用户权限的变更操作:PATCH[S-API]/admin,对应的同步请求可以是POST[M-API]/alter_admin,使得通过受信节点的同步接口实现本申请提供的一种网络服务间的数据同步方法的流程中对应步骤的操作。同时,服务节点也存在处理校验与鉴权的接口和用于数据变更和同步的变更接口,服务节点需要为每一类需要进行变更的数据提供一个变更操作的变更接口,如在服务节点添加用户的接口,变更用户权限的接口等,如果该类型的数据需要与受信节点同步,则需要按照本申请提供的一种网络服务间的数据同步方法的流程中对应的步骤进行执行。以上受信节点和服务节点的这些接口都需要在网络中开放,并给出一个接口地址,以便本申请实施例中涉及的请求对应的接口时向该接口地址发送一个网络请求。
本申请实施例提供的一种网络服务间的数据同步方法,在不同的实际应用场景中,存在两种实现方式,分别为非代理模式和代理模式。首先,无论采取哪种实现方式,受信节点都需要提供安全的访问协议(如HTTPS)来确保请求程序和服务节点能够安全地对其进行请求,并且受信节点需要能够认证请求端中安装的请求程序,情况可以为:如果请求程序为用户,用户已经在受信节点登陆,在发送给受信节点的请求中会携带已登陆用户的凭据,从而使得受信节点可以获取请求的用户身份与权限;如果请求程序为服务,在发送给受信节点的请求中需要携带该服务的标识,或携带该服务的标识和密钥(以便通过密钥进行安全性增强),使得受信节点能够获取请求的服务的身份与权限,在满足这两个条件后,请求程序所发送给受信节点的请求中携带的密钥或凭据等信息会被受信节点识别为一个有效的访问者,并在请求的校验与鉴权通过后,在服务节点进行数据变更,以发起在受信节点对应的数据的同步。在代理模式下,在部分通信情况下,请求端无法与服务节点建立安全的连接,如服务节点无法提供安全的协议访问,但是受信节点可以访问服务节点;又比如,服务节点处于一个局域网中,但没有公网地址,受信节点也处于该局域网中但是有公网地址,安装有请求程序的请求端没有连接该局域网,从而使得请求端无法访问到服务节点,在这两种情况下,可以使用受信节点作为安装有请求程序的请求端的请求代理,从而保障了请求端的请求的可行性和安全性,但代理模式需要满足受信节点可以访问服务节点。在其他情况下默认使用非代理模式请求,但也可以选择(或由管理者配置)代理模式进行请求。
下面以非代理模式为例,对本申请提供的一种网络服务间的数据同步方法进行进一步解释说明,包括服务节点、受信节点和安装有请求程序的请求端,包括请求端通过请求程序执行的步骤S11和步骤S12、服务节点执行的步骤S21至步骤S25和受信节点执行的步骤S31至步骤S34,具体包括如下步骤:
步骤S11(未示出),请求端响应于获取到访问者所需进行的变更操作发起数据变更请求,以使所述请求端信任的受信节点与对应的服务节点对所述数据变更请求进行校验鉴权。
步骤S21(未示出),服务节点响应于对请求端发起的数据变更请求校验鉴权成功,在使用原子事务的函数中执行所述数据变更请求中的操作相关数据对应的变更操作,得到变更结果。
其中,所述使用原子事务的函数可以用来表示一系列步骤,包括但不限于开启事务、提交事务、回滚事务或执行补偿操作等。
步骤S22(未示出),服务节点响应于变更操作执行成功,则携带与所述操作相关数据对应的令牌,向受信节点的同步接口发送数据同步请求,以使所述受信节点通过令牌消费接口验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据后,执行取出的、与所述令牌对应的操作相关数据对应的同步操作。
步骤S31(未示出),受信节点通过同步接口接收服务节点响应于变更操作执行成功后携带与操作相关数据对应的令牌发起的数据同步请求,其中,所述服务节点响应于对请求端发起的数据变更请求校验鉴权成功,执行所述数据变更请求中的所述操作相关数据对应的变更操作。
步骤S32(未示出),受信节点通过令牌消费接口验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据并返回给所述服务节点。在此,所述受信节点只需直接执行所述令牌消费接口的函数逻辑即可。
步骤S33(未示出),受信节点在使用原子事务的函数中执行取出的、与所述令牌对应的操作相关数据对应的同步操作。
步骤S34(未示出),受信节点响应于同步操作执行成功,向所述服务节点返回操作成功响应信息,以使所述服务节点响应于所述操作成功响应信息在使用原子事务的函数中将变更结果进行事务提交,在此,所述操作成功响应信息的发出用于指示服务节点的变更操作和受信节点的同步操作均成功。
步骤S23(未示出),服务节点接收所述受信节点响应于同步操作执行成功返回的操作成功响应信息。
步骤S24(未示出),服务节点响应于所述操作成功响应信息,在使用原子事务的函数中将变更结果进行事务提交。
步骤S25(未示出),服务节点将所述操作成功响应信息返回给所述请求端。
步骤S12(未示出),请求端接收所述服务节点响应于在使用原子事务的函数中将变更结果进行事务提交而返回的所述操作成功响应信息。
通过上述步骤S11至步骤S12、步骤S21至步骤S25和步骤S31至步骤S34,通过在非代理模式下,在服务节点对发起的数据同步请求校验鉴权成功后,在在使用原子事务的函数中执行所述数据变更请求中的操作相关数据对应的变更操作,并向受信节点也发起进行同步的数据变更的操作,并在受信节点进行同步的变更操作也成功时,由服务节点将操作成功响应信息反馈给请求端,使得请求端能够了解到需要进行变更操作的数据已在服务节点和受信节点均同步变更,实现了网络服务层面的数据同步,能够支持同步的服务节点和受信节点双方使用不同的存储引擎,均可进行存储的实现,能够达到异构数据存储的数据同步的目的,同时使用原子事务的函数确保在服务节点处更新的数据可以在受信节点同步更新的原子性和数据一致性。
本实施例中,受信节点在执行步骤S33(未示出)在使用原子事务的函数中执行取出的、与所述令牌对应的操作相关数据对应的同步操作之后,所述受信节点也存在同步操作失败的情况,当所述受信节点进行的同步操作失败时,所述受信节点响应于同步操作执行失败,向所述服务节点返回操作失败响应信息,以使所述服务节点响应于所述操作失败响应信息在使用原子事务的函数中对变更操作进行事务回滚或补偿操作。所述服务节点在接收所述受信节点响应于同步操作执行失败返回的操作失败响应信息后,为了确保服务节点与受信节点之间的数据能够保持数据同步一致性,所述服务节点响应于所述操作失败响应信息,在使用原子事务的函数中对变更操作进行事务回滚或补偿操作,实现了在同步操作失败时,也能将服务节点和受信节点一并恢复到未变更状态,进一步确保数据一致性和变更的原子性,并将所述操作失败响应信息返回给所述请求端,使得请求端能够通过接收到的所述服务节点响应于在使用原子事务的函数中对变更操作进行事务回滚或补偿操作而返回的所述操作失败响应信息,了解到本次变更和同步失败,从而达到通知请求端的目的。
下面以代理模式为例,对本申请提供的另一方面的一种网络服务间的数据同步方法进行进一步解释说明,包括服务节点、受信节点和安装有请求程序的请求端,包括请求端通过请求程序执行的步骤S101和步骤S102、服务节点执行的步骤S21至步骤S25和受信节点执行的步骤S31至步骤S34,具体包括如下步骤:
步骤S101(未示出),请求端响应于获取到访问者所需进行的变更操作向受信节点发起数据变更请求,以使所述请求端信任的受信节点与对应的服务节点对所述数据变更请求进行校验鉴权,并使得受信节点代理请求端向服务节点发送数据变更的请求。
依序执行的步骤S201(未示出)、步骤S202(未示出)、步骤S301(未示出)、步骤S302(未示出)、步骤S303(未示出)、步骤S304(未示出)、步骤S203(未示出)和步骤S204(未示出),依序分别与上述按序执行的步骤S21(未示出)、步骤S22(未示出)、步骤S31(未示出)、步骤S32(未示出)、步骤S33(未示出)、步骤S34(未示出)、步骤S23(未示出)、和骤S24(未示出)对应一致,在此不再赘述。
步骤S205(未示出),服务节点将所述操作成功响应信息返回给所述受信节点,以使所述受信节点将所述操作成功响应信息发送给所述请求端。
步骤S305(未示出),受信节点响应于接收到所述服务节点返回的所述操作成功响应信息,将所述操作成功响应信息发送给所述请求端。
步骤S102(未示出),请求端接收所述受信节点从所述服务节点接收的操作成功响应信息,其中,所述服务节点响应于在使用原子事务的函数中将变更结果进行事务提交而返回所述操作成功响应信息至所述受信节点。
通过上述步骤S011至步骤S102、步骤S201至步骤S205和步骤S301至步骤S305,通过在代理模式下,在服务节点对发起的数据同步请求校验鉴权成功后,在在使用原子事务的函数中执行所述数据变更请求中的操作相关数据对应的变更操作,并向受信节点也发起进行同步的数据变更的操作,并在受信节点进行同步的变更操作也成功时,由服务节点将操作成功响应信息反馈给受信节点,并由受信节点再将操作成功响应信息返回给请求端,实现了通过受信节点的转发,使请求端能够了解到需要进行变更操作的数据已在服务节点和受信节点均同步变更,实现了网络服务层面的数据同步,能够支持同步的服务节点和受信节点双方使用不同的存储引擎,均可进行存储的实现,能够达到异构数据存储的数据同步的目的,同时使用原子事务的函数确保在服务节点处更新的数据可以在受信节点同步更新的原子性和数据一致性。
本实施例中,受信节点在执行步骤S303(未示出)在使用原子事务的函数中执行取出的、与所述令牌对应的操作相关数据对应的同步操作之后,所述受信节点也存在同步操作失败的情况,当所述受信节点进行的同步操作失败时,所述受信节点响应于同步操作执行失败,向所述服务节点返回操作失败响应信息,以使所述服务节点响应于所述操作失败响应信息在使用原子事务的函数中对变更操作进行事务回滚或补偿操作;为了确保服务节点与受信节点之间的数据能够保持数据同步一致性,所述服务节点在接收所述受信节点响应于同步操作执行失败返回的操作失败响应信息后,响应于所述操作失败响应信息,在使用原子事务的函数中对变更操作进行事务回滚或补偿操作,实现了在同步操作失败时,也能将服务节点和受信节点一并恢复到未变更状态,进一步确保数据一致性和变更的原子性,并将所述操作失败响应信息返回给所述受信节点;由所述受信节点将所述操作失败响应信息代理转发给所述请求端,使得所述请求端能够通过接收到的所述受信节点从所述服务节点接收的操作失败响应信息了解到本次变更和同步失败,从而达到通知请求端的目的。
在本申请无论是非代理模式还是代理模式下,本申请提供的应用于网络服务管理的一实施例中的一种网络服务间的数据同步方法在进行数据同步时,有一些数据需要同时在管理节点M(即受信节点)与服务节点S进行存储,并且需要保持数据的一致性,比如,服务节点的密钥和关键信息(如服务节点的标准接口地址等)等。其中,涉及服务节点的密钥和关键信息等信息的添加、删除、变更等都需要在管理节点M(即受信节点)与服务节点S之间实现数据的同步和一致性,存在变更操作至少有以下:服务的注册、管理员的添加、管理员的删除、修改管理员权限、变更管理员的管理范围(比如从管理一个服务扩大范围到管理多个服务,从管理所有集群缩小为只管理某几个集群等)、项目的所有权转移(从一个管理员转移给另一个管理员)及项目的部分删除(删除某个节点,某个服务或某个集群)或删除整个项目等。保持这些变更操作的数据同步的原因是一个请求不仅能在管理节点(即受信节点)授权前就进行校验鉴权,也能在服务节点执行前进行校验鉴权,受信节点和服务节点的每一端都有着完整的鉴权能力,可以双重保障了请求的安全性。
在本申请的实施例中,所有满足幂等性(比如执行一次与执行多次的效果一致)的数据同步请求,如果由于网络等问题造成同步失败的,都可以进行安全地重试,以保障每次重试的原子性。
本申请提供的一实施例中的一种网络服务间的数据同步方法可以保障所有需要在服务节点与管理节点(即受信节点)间同步元信息的请求的数据一致性和变更的原子性,服务节点和管理节点要么一并完成变更,要么一并恢复到未变更状态。其中,管理范围的变更操作是一种特殊的数据同步操作,因为它总可以转化为一个或多个一般的数据同步操作,比如,由于管理员的实际管理范围总是可以表征为一系列的服务节点,即管理员拥有这些节点的管理权限,如服务节点:(N1,N2,N3)等,若需要将该管理员的管理范围变更为服务节点:(N2,N4),并且在N2节点上变更该管理员的权限,则经过整理可以分类得到每个服务节点需要执行的操作为如下:
N1:删除管理员
N2:变更管理员权限
N3:删除管理员
N4:新增管理员
这些与管理相关的变更操作都适用于本申请提供的一实施例中的一种网络服务间的数据同步方法的流程,可以并行执行,由于本申请能够保障同步操作的一致性,所以无论这些操作有哪些成功,哪些失败,管理节点(即受信节点)上存储的该管理员的实际管理范围都与这些范围内节点是否实际存储该管理员的信息保持着一致,即对于一个目标管理范围和当前实际管理范围,总可以生成一组变更操作,使得实际管理范围趋近并成为目标管理范围(假设同步操作在多次重试后最终会成功),从而确保管理节点(即受信节点)与服务节点之间的数据同步,更一般性的,所有满足幂等性(执行一次与执行多次的效果一致)的数据同步请求,由于网络等问题造成同步失败的,都可以进行安全地重试,本申请可以保障每次重试的原子性。
接着本申请的上述实施例,无论是在非代理模式下,还是在代理模式下,本申请一实施例提供的一种网络服务间的数据同步方法,还包括:在进行服务节点的变更操作和受信节点的同步操作之前,还需要对请求端发起的数据同步请求进行校验与鉴权,以确保请求端发起的数据同步请求的安全性。下面分别以非代理模式和代理模式两个方面出发,来对请求端发起的数据同步请求进行校验与鉴权:
一方面,以非代理模式为例,对本申请一实施例提供的一种网络服务间的数据同步方法中对数据同步请求进行的校验与鉴权进行进一步解释说明,包括服务节点、受信节点和安装有请求程序的请求端,在非代理模式下进行的对数据同步请求进行的校验与鉴权包括如下步骤:
所述请求端向受信节点的令牌生产接口发送携带待发起数据同步请求的访问者的身份权限凭证、所述数据同步请求的信息参数和请求的服务节点的标识的第一请求,以使所述受信节点验证所述访问者是否有在所述服务节点中执行所述数据同步请求的权限,若是,则生成一个令牌并发送给所述请求端,同时对应存储所述信息参数和所述访问者的身份权限凭证;其中,所述信息参数包括完整的操作相关数据。
在此,所述身份权限凭证可以包括但不限于是访问者的身份标识、权限凭据或用于查询对应的用户标识的凭证等。所述数据同步请求的信息参数包括但不限于是数据同步请求的URL、请求体、请求头、请求方法及路径等参数,所述请求体里包括所述操作相关数据,所述操作相关数据包括但不限于操作类型、操作类型对应的哪一具体操作、目标操作对象以及操作需要变更(比如包含新增、更改、删除等)的状态数据等,比如用户A1想要对用户A2的访问权限进行操作,那么用户A2则为目标操作对象,操作数据是表征着A2的访问权限的数据,用户A1作为请求的发送者。
所述受信节点,通过令牌生产接口接收请求端携带待发起数据同步请求的访问者的身份权限凭证、所述数据同步请求的信息参数和请求的服务节点的标识的第一请求。
所述受信节点,验证所述访问者是否有在所述服务节点中执行所述数据同步请求的权限,若是,则生成一个令牌并发送给所述请求端,同时对应存储所述信息参数和所述访问者的身份权限凭证;其中,所述请求端在接收所述令牌后携带所述令牌和所述受信节点的标识向所述服务节点的接口地址发起数据同步请求,以使所述服务节点携带所述令牌向所述受信节点的标识对应的令牌消费接口发送第二请求。
所述请求端在接收所述令牌后,携带所述令牌和所述受信节点的标识向所述服务节点发送数据同步请求,以使所述服务节点响应于所述数据同步请求携带所述令牌向所述受信节点的标识对应的令牌消费接口发送第二请求;其中,所述受信节点通过所述令牌消费接口验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的信息参数和所述访问者的身份权限凭证并返回给所述服务节点,以使所述服务节点基于所述令牌的有效性响应结果、对应的信息参数和所述访问者的身份权限凭证进行校验与鉴权。
在此,所述令牌的有效性响应结果包括用于指示所述令牌有效的成功响应信息或用于指示所述令牌失效的失败响应信息。
所述服务节点通过接口地址接收请求端携带所述令牌和所述受信节点的标识发送的数据同步请求,其中,所述令牌由所述受信节点通过令牌生产接口接收所述请求端携带待发起所述数据同步请求的访问者的身份权限凭证、所述数据同步请求的信息参数和请求的服务节点的标识的第一请求后,在验证所述访问者有在所述服务节点中执行所述数据同步请求的权限时生成的,其中,所述信息参数包括所述操作相关数据。
所述服务节点携带所述令牌向所述受信节点的标识对应的令牌消费接口发送第二请求,以使所述受信节点通过所述令牌消费接口验证所述令牌是否有效。
所述受信节点,通过令牌消费接口接收所述服务节点携带所述令牌发起的第二请求,验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的信息参数和所述访问者的身份权限凭证并返回给所述服务节点,以使所述服务节点基于所述令牌的有效性响应结果、对应的信息参数和所述访问者的身份权限凭证进行校验与鉴权。
所述服务节点接收所述受信节点返回的所述令牌的有效性响应结果、与所述令牌对应的信息参数和所述访问者的身份权限凭证。
所述服务节点对所述令牌的有效性响应结果、所述受信节点返回的信息参数和访问者的身份权限凭证进行校验与鉴权。
本实施例中,在非代理模式下通过请求端直接向服务节点发起数据同步请求后,由受信节点提供对发起的数据同步请求的授权,由于受信节点与服务节点中均存储有对数据同步请求进行鉴权的权限,由服务节点实现对请求的数据同步请求进行请求的校验与鉴权,并在校验与鉴权均成功时,才能通过所述服务节点执行所述数据同步请求中的所述操作相关数据对应的变更操作,并将执行操作的成功与否直接返回给所述请求端,实现了防篡改及非法请求的执行,从而保障所有数据同步请求相关的网络请求的安全,可以适用于对安全较高的实际应用场景。
另一方面,以代理模式为例,对本申请一实施例提供的一种网络服务间的数据同步方法中对数据同步请求进行的校验与鉴权进行进一步解释说明中也包括服务节点、受信节点和安装有请求程序的请求端,只是在代理模式下进行的对数据同步请求进行的校验与鉴权时,和非代理模式下的步骤大致一致,不同的是:在代理模式下是通过请求端向受信节点发起请求,以使受信节点提供对发起的数据同步请求的授权,由于受信节点与服务节点中均存储有对数据同步请求进行鉴权的权限,由服务节点实现对请求的数据同步请求进行请求的校验与鉴权,并在校验与鉴权均成功时,才能通过所述服务节点执行所述数据同步请求中的所述操作相关数据对应的变更操作,并将执行操作的成功与否反馈给请求代理的受信节点,并由所述受信节点转发给所述请求端,实现了防篡改及非法请求的执行,从而保障所有数据同步请求相关的网络请求的安全,可以适用于对安全较高的实际应用场景。
接着本申请的上述实施例,在本申请例提供的一种网络服务间的数据同步方法中对数据同步请求进行的校验与鉴权时,无论是在非代理模式下,还是在代理模式下,所述服务节点对所述令牌的有效性响应结果、所述受信节点返回的信息参数和访问者的身份权限凭证进行校验与鉴权的步骤时,具体包括如下三项:
通过所述令牌的有效性响应结果校验所述受信节点是否响应成功;
校验所述数据同步请求是否与所述受信节点返回的信息参数相匹配;
鉴权所述受信节点返回的访问者的身份权限凭证对应的访问权限是否允许执行所述数据同步请求。
例如,在受信节点返回的令牌的有效性响应结果包括用于指示所述令牌有效的成功响应信息或用于指示所述令牌失效的失败响应信息,在通过所述令牌的有效性响应结果校验所述受信节点是否响应成功(即令牌是否有效或失效)时,若受信节点返回的是成功响应信息,则受信节点的响应成功(即令牌有效),若受信节点返回的是失败响应信息,则受信节点的响应失败(即令牌失效);在校验所述数据同步请求是否与所述受信节点返回的信息参数相匹配时,若匹配则验证成功,若不匹配则验证失败;在鉴权所述受信节点返回的访问者的身份权限凭证对应的访问权限是否允许执行所述数据同步请求时,若允许则鉴权通过,若不允许则鉴权不通过。实现了通过这三项校验鉴权方式来对受信节点返回的令牌的有效性响应结果、所述受信节点返回的信息参数和访问者的身份权限凭证进行校验与鉴权,只有当着三项校验鉴权均成功时,服务节点才会在使用原子事务的函数中执行所述数据变更请求中的操作相关数据对应的变更操作,从而确保数据同步请求没有被篡改,进而保证数据同步请求的安全性。
接着本申请的上述实施例,在本申请例提供的一种网络服务间的数据同步方法中对数据同步请求进行的校验与鉴权时,无论是在非代理模式下,还是在代理模式下,所述受信节点在执行取出存储的、与所述令牌对应的操作相关数据的同时,所述受信节点还执行:删除或标记无效所述令牌及其对应的信息参数和所述访问者的身份权限凭证的存储记录。本申请的所有实施例中,无论是非代理模式,还是代理模式下,为了防止令牌被重放攻击,受信节点在取出存储的、与所述令牌对应的操作相关数据和所述访问者的身份权限凭证的步骤的同时,所述受信节点还会删除或标记无效所述令牌及其对应的信息参数和所述访问者的身份权限凭证的存储记录,即令牌token被使用后变无效了,使得即使攻击者截获了受信节点返回的令牌token,也无法进行发起数据同步请求的重放,进而可以有效防止请求重放攻击,确保安全性。
接着本申请的上述实施例,在本申请例提供的一种网络服务间的数据同步方法中对数据同步请求进行的校验与鉴权时,无论是在非代理模式下,还是在代理模式下,所述受信节点在执行生成一个令牌,同时对应存储所述信息参数和所述访问者的身份权限凭证的同时,还执行:为存储的所述令牌对应的信息参数和访问者的身份权限凭证,配置有效期;
其中,所述受信节点验证所述令牌是否有效,具体包括:验证所述令牌在所述有效期内是否有效。
在此,为令牌存储对应的信息参数和访问者的身份权限凭证等信息后,还为存储的信息配置有效期,以便在受信节点验证令牌token是否有效时,可以通过验证token在所述有效期内是否有效,若已不再该有效期内,则该token失效,若在该有效期内,则指示token有效。其中,该有效期的表现形式可以包括但不限于是过期时间的形式,也可以是最大取出次数的形式等,比如,存储令牌token对应的信息可以设置一个过期时间,大多数缓存组件(如Redis等)支持直接配置一个过期时间,或者使用其他方式存储并记录存储时间,并且使用后台任务的方式对过期的记录进行清理,过期时间可以是可配置的,也可以是根据网络环境延迟等因素调控等;又比如,在存储令牌token对应的信息除了可以设置过期时间外,还可以设置一个最大取出次数,如在进行数据同步的过程中只能被读取两次(即,第一次被服务节点发起的携带token消费的请求中取出,第二次为受信节点在处理服务器节点发起的同步请求中取出,之后的读取操作都是非法的,实现上可以在存储中设置一个剩余取出次数,在初始写入时设为该记录的最大取出次数,每次读取时将剩余取出次数减1,当剩余取出次数为0时删除对应存储的记录。
在此,最大取出次数在不同的应用场景中不仅可以在到0时,删除对应记录以防止重放,还可以在每一次取出时验证请求者(发起者)的身份,即使用剩余取出次数,若请求者身份与实际流程中对应的请求身份不匹配依然会拒绝。如第一次令牌消费的发起者必须是服务节点,可以根据服务节点的密钥进行校验,第二次令牌消费的发起者必须是受信节点,若在数据同步过程中,当取出次数为1(已经被取出过1次,即剩余取出次数为1)时,请求者仍为服务节点,则会拒绝此次取出操作,因为第二次取出的执行者应该为受信节点来执行。
在本申请一优选实施例中,在非代理模式下,本申请提供的一种网络服务间的数据同步方法的实际操作流程示意图,如图1所示,其中,请求端中安装有请求程序C,请求程序C发起数据同步请求的网络服务的服务节点为服务节点S,受到请求程序C和服务节点S信任的另一个网络服务为受信节点M,下面围绕一个需要进行数据同步的变更操作,设服务节点S对于该变更操作的接口为S-1,受信节点M对于该变更操作的同步接口为M-1,对非代理模式下的网络服务间的数据同步方法进行实际应用场景的具体步骤进行说明:
步骤1、数据同步操作由请求程序C发起,携带操作所需的全部的操作相关数据、访问者的身份标识和服务节点S的标识,请求受信节点M的令牌生产接口。
步骤2、受信节点M收到请求程序C发起的请求后,验证访问者是否有在服务节点S执行数据同步的操作相关数据对应的变更操作的权限,如果没有则拒绝请求,返回失败响应,否则生成一个存储信息的凭据的令牌token,并至少存储以下信息:变更操作所需要的全部的操作相关数据等信息参数和访问者的身份标识;设置存储的信息的最大取出次数为2,并将存储信息的令牌token返回请求程序C。
步骤3、请求程序C携带受信节点M返回的令牌token和受信节点M的标识,请求服务节点S的变更接口S-1。
步骤4、服务节点S携带令牌token,向受信节点M的标识对应的令牌消费接口的接口地址发起取出信息的请求,即请求受信节点M。
步骤5、受信节点M收到请求后,检测服务节点S携带令牌token发起的中的令牌token是否有效(即存储中是否有该令牌token和该令牌token对应是否存储有信息),如果有效,将存储信息(即变更操作所需要的全部的操作相关数据等信息参数和访问者的身份标识)对应的剩余取出次数减1,并将取出的变更操作所需要的全部的操作相关数据等信息参数和访问者的身份标识返回S,否则返回失败的响应。
步骤6、服务节点S收到M的返回的所述令牌的有效性响应结果、与所述令牌对应的信息参数和所述访问者的身份权限凭证等响应信息后,会至少进行如下校验:
受信节点M的响应是否成功(即token是否有效或失效),若受信节点M返回的是成功响应信息,则受信节点M的响应成功(即令牌有效),若受信节点M返回的是失败响应信息,则受信节点M的响应失败(即令牌失效);
校验请求程序C向服务节点S发起的数据同步请求是否与受信节点M返回的信息参数是否匹配,若匹配则验证成功,若不匹配则验证失败;
鉴权受信节点M返回的访问者的身份标识对应的访问权限是否允许执行所述数据同步请求,若允许则鉴权通过,若不允许则鉴权不通过。
其中,服务节点S进行校验与鉴权的三项中的任何一项不满足,服务节点S都会拒绝执行数据同步请求,并返回请求失败的响应,若服务节点S进行校验与鉴权的三项全部都校验成功通过后,服务节点S会执行进入步骤7。
步骤7、服务节点S响应于对请求端发起的数据变更请求校验鉴权均成功,在使用原子事务的函数中执行所述数据变更请求中的操作相关数据对应的变更操作,得到变更结果,并变更操作执行成功,则携带与所述操作相关数据对应的令牌token,请求受信节点M的同步接口M-1。
步骤8、受信节点M收到同步操作的请求后,检测请求携带的令牌token是否有效,如果有效,则取出存储的、与所述令牌对应的操作相关数据并删除或标记无效,并在使用原子事务的函数中执行取出的、与所述令牌对应的操作相关数据对应的同步操作,并将受信节点M执行的同步操作是否成功作为响应的状态返回给服务节点S;
步骤9、服务节点S收到响应后,如果响应是操作成功响应信息,则在使用原子事务的函数中将变更结果进行事务提交,否则在使用原子事务的函数中对变更操作进行事务回滚或补偿操作,并将执行是否成功作为响应的状态返回给请求程序C。
在本实施例的实际应用场景中,为了保证受信节点与服务节点之间的原子事务,使用原子事务的函数包括两种情况:一、数据库本身支持原子事务,在执行开始时控制该执行所操作的数据库开启事务,执行正常结束时控制该执行所操作的数据库提交事务,执行失败时控制该执行所操作的数据库回滚事务;二、使用事务补偿操作,对于数据的原子性变更操作(T1,T2,...,Tn),提供一系列补偿操作(C1,C2,...,Cn)能将其恢复到未执行对应的变更操作的状态,若在执行变更操作T1,T2,...到Ti时发生错误(Ti未执行成功),依次执行Ci-1.Ci-2等到C1,实现对这一系列操作的补偿恢复。在使用了原子事务的函数中,不仅需要执行本地的数据变更操作,还需要发送同步操作的请求并等待响应结果,响应成功时提交,响应失败时回滚,这样可以使得服务节点S在步骤6的变更操作失败时,会回滚到服务节点S没有进行本次变更的状态,并且不会请求受信节点M进行同步,这样受信节点M与服务节点S都不会发生数据的任何变更;受信节点M在步骤8的同步操作失败时,受信节点M会回滚到没有进行本次变更的状态,并且返回失败的响应给服务节点S,服务节点S收到失败响应后,也发起回滚,回滚到服务节点S没有进行本次变更的状态,受信节点M与服务节点S都不会发生数据的任何变更;服务节点S的步骤6与受信节点M的步骤8都成功,受信节点M返回成功的响应后,服务节点S将变更进行事务提交,确保受信节点M与服务节点S都完成了数据的变更,实现了受信节点M和服务节点S之间保持原子一致性,确保受信节点M与服务节点S要么一并变更到相同的状态,要么一并恢复到未变更的状态。
在本申请一优选实施例中,在非代理模式下,本申请一实施例提供的一种网络服务间的数据同步方法的实际操作流程示意图,如图1所示,其中,请求端中安装有请求程序C,请求程序C发起数据同步请求的网络服务的服务节点为服务节点S,受到请求程序C和服务节点S信任的另一个网络服务为受信节点M,下面对非代理模式下的网络服务间的数据同步方法的实际应用场景进行具体实施例的说明。
具体的场景为一个用户A1需要发起一个请求,目的是将用户A2的访问权限调整为["log_query","data_query","data_delete"],那么具体的实现流程如下:
请求程序C向受信节点M的生成令牌token的接口发送请求,携带本次操作的完整请求的信息参数(包括操作相关数据)和服务节点S的标识,具体实现代码为:
其中X-User-Token与Cookie表示可以用不同的方式携带用户A1的身份凭据
受信节点将收到的信息参数添加请求用户A1的身份标识和剩余取出次数后进行存储,生成token并将token(假设为QWER)返回给请求程序C;
请求程序C携带token和受信节点M的标识请求服务节点S,具体实现声明式的伪代码如下所示,仅表示必要信息:
无需发送操作数据,因为操作所需的数据已被受信节点M存储,服务节点S收到请求后,携带token和服务节点S的服务密钥发送取出数据的请求到受信节点M,具体实现代码为:
受信节点M检测请求携带的token是否有效,如果无效,则返回失败的响应,否则取出对应的存储信息(即包含操作相关数据的信息参数和A1的身份标识),并将存储信息对应的剩余取出次数减1,将取出的存储信息返回给服务节点S,对于本示例来说,取出的数据通过以下代码标识
服务节点S可以对请求的方法、路径、请求头、请求体等信息参数进行校验,如果校验不通过,则拒绝请求,否则将会在使用原子事务的函数中进行变更操作,并向受信节点M发起同步请求,具体实现的伪代码示例如下:
对应的操作相关数据为取回的数据,表示如下:
即将标识为A1的用户的操作权限变更为["log_query","data_query","data_delete"],变更成功后,向受信节点M发送本次操作的同步请求,假设更改用户的同步操作的子路径为alter_admin,则实现代码如下:
受信节点收到请求后,使用token从存储中取出操作的同步数据,并在使用原子事务的函数中执行对应的同步操作,即将标识为A2的用户的操作权限变更为["log_query","data_query","data_delete"],与服务节点S的数据了保持一致。
如果受信节点M未成功执行同步操作,由于受信节点M使用了原子事务的函数,会回滚到没有发生变更的状态,同时返回失败的响应,使得服务节点S收到失败的响应后也将变更回滚,同样恢复到了没有发生变更的状态,向请求程序C返回失败的响应,表示此次同步变更操作是失败的。
如果受信节点M成功执行操作,返回了成功的响应,服务节点S将会提交事务,使得双方都完成了对用户A2的权限的一致性更改,向请求程序C返回成功的响应,表示此次同步变更操作是成功的。
接着本申请的上述实施例中,本申请一实施例提供的一种网络服务间的数据同步方法的实施例,虽然可以保证服务节点与受信节点的数据一致性,但可能会有一些小概率的情况可能导致数据的不一致,比如,服务节点的维护者失误地清理或变更了本应该与受信节点保持同步的数据,没有使用本申请一实施例提供的一种网络服务间的数据同步方法的实施例中的同步流程;受信节点的维护者失误地清理或变更了本应该与服务节点保持同步的数据,没有使用本申请一实施例提供的一种网络服务间的数据同步方法的实施例中的同步流程;在上述同步操作的参与方失误地没有按照同步操作进行正确的响应或变更,或者一方在确认提交时,服务实例或存储***发生了宕机或断开连接。为了应对这些可能会存在不一致的情况,本申请一实施例提供的一种网络服务间的数据同步方法的实施例,还可以受信节点和服务节点之间的数据不一致性的恢复,比如,当服务节点的维护者发现任何数据不一致后,可以再次发起一次针对不一致的数据的同步操作,经过本申请一实施例提供的一种网络服务间的数据同步方法的实施例的同步操作流程后,如果操作成功,则服务节点与受信节点的数据就恢复了一致,也进一步确保了服务节点与受信节点之间的数据一致性。
在本申请的实施例中,请求端构造数据,并希望能在服务节点和受信及诶单都存储着一样的数据,而且整个存储操作能够保证原子性,要么全部保存成功,要么全部没有变更;在另一种情况下,所述服务节点还作为请求端,需要将数据保存一份至自身存储,并同步给受信节点,而且需要保证同步操作的原子性,那么服务节点就执行请求中的请求程序和服务节点中的所有流程,承担流程中的两个角色,在这种情况下,没有代理模式的概念,因为数据的生成方与请求方都是服务节点,无需受信节点进行代理,只需保障服务节点能够访问到受信节点即可;在又一种情况下,受信节点作为请求端,需要将数据保存一份到自身存储,并同步给服务节点,而且需要保障同步操作的原子性,那么,受信节点就执行请求中和请求程序和受信节点的所有流程,承担流程中的两个角色,在这种情况下,代理模式和非代理模式的流程相同,都需要受信节点向服务节点发起变更请求。
根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述网络服务间的数据同步方法。
根据本申请的另一方面,还提供了一种网络服务间的数据同步的服务节点,该服务节点包括:
一个或多个处理器;
计算机可读介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述服务节点端网络服务间的数据同步方法。
在此,所述网络服务间的数据同步的服务节点中的各实施例的详细内容,具体可参见上述服务节点端网络服务间的数据同步方法的实施例的对应部分,在此,不再赘述。
根据本申请的另一方面,还提供了一种网络服务间的数据同步的受信节点,该受信节点包括:
一个或多个处理器;
计算机可读介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述受信节点端网络服务间的数据同步方法。
在此,所述网络服务间的数据同步的受信节点中的各实施例的详细内容,具体可参见上述受信节点端网络服务间的数据同步方法的实施例的对应部分,在此,不再赘述。
综上所述,本申请采用了请求端、受信节点和服务节点之间的逻辑配合,通过服务节点响应于对请求端发起的数据变更请求校验鉴权成功,在使用原子事务的函数中执行所述数据变更请求中的操作相关数据对应的变更操作,得到变更结果;并响应于变更操作执行成功,则携带与所述操作相关数据对应的令牌,向受信节点的同步接口发送数据同步请求,以使所述受信节点通过令牌消费接口验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据后,执行取出的、与所述令牌对应的操作相关数据对应的同步操作,并返回操作成功响应信息给服务节点;所述服务节点接收所述受信节点响应于同步操作执行成功返回的操作成功响应信息;并响应于所述操作成功响应信息,在使用原子事务的函数中将变更结果进行事务提交,并将所述操作成功响应信息返回给所述请求端或所述受信节点,以使所述受信节点将所述操作成功响应信息发送给所述请求端。实现了网络服务层面的数据同步,能够支持同步的服务节点和受信节点双方使用不同的存储引擎,均可进行存储的实现,能够达到异构数据存储的数据同步的目的,同时使用原子事务的函数确保在服务节点处更新的数据可以在受信节点同步更新的原子性和数据一致性。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (9)
1.一种网络服务间的数据同步方法,应用于服务节点,其中,所述方法包括:
响应于对请求端发起的数据变更请求校验鉴权成功,在使用原子事务的函数中执行所述数据变更请求中的操作相关数据对应的变更操作,得到变更结果;
响应于变更操作执行成功,则携带与所述操作相关数据对应的令牌,向受信节点的同步接口发送数据同步请求,以使所述受信节点通过令牌消费接口验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据后,执行取出的、与所述令牌对应的操作相关数据对应的同步操作;
接收所述受信节点响应于同步操作执行成功返回的操作成功响应信息;
响应于所述操作成功响应信息,在使用原子事务的函数中将变更结果进行事务提交;
将所述操作成功响应信息返回给所述请求端或所述受信节点,以使所述受信节点将所述操作成功响应信息发送给所述请求端;
其中,所述方法还包括:
接收所述受信节点响应于同步操作执行失败返回的操作失败响应信息;
响应于所述操作失败响应信息,在使用原子事务的函数中对变更操作进行事务回滚或补偿操作;
将所述操作失败响应信息返回给所述请求端或所述受信节点,以使所述受信节点将所述操作成功响应信息发送给所述请求端。
2.根据权利要求1所述的方法,其中,所述方法还包括:
通过接口地址接收请求端或受信节点携带所述令牌和所述受信节点的标识发送的数据同步请求,其中,所述令牌由所述受信节点通过令牌生产接口接收所述请求端携带待发起所述数据同步请求的访问者的身份权限凭证、所述数据同步请求的信息参数和请求的服务节点的标识的第一请求后,在验证所述访问者有在所述服务节点中执行所述数据同步请求的权限时生成的,其中,所述信息参数包括所述操作相关数据;
携带所述令牌向所述受信节点的标识对应的令牌消费接口发送第二请求,以使所述受信节点通过所述令牌消费接口验证所述令牌是否有效;
接收所述受信节点返回的所述令牌的有效性响应结果、与所述令牌对应的信息参数和所述访问者的身份权限凭证;
对所述令牌的有效性响应结果、所述受信节点返回的信息参数和访问者的身份权限凭证进行校验与鉴权。
3.一种网络服务间的数据同步方法,应用于受信节点,其中,所述方法包括:
通过同步接口接收服务节点响应于变更操作执行成功后携带与操作相关数据对应的令牌发起的数据同步请求,其中,所述服务节点响应于对请求端发起的数据变更请求校验鉴权成功,执行所述数据变更请求中的所述操作相关数据对应的变更操作;
验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据,将令牌删除或标记无效后,在使用原子事务的函数中执行取出的、与所述令牌对应的操作相关数据对应的同步操作;
响应于同步操作执行成功,向所述服务节点返回操作成功响应信息,以使所述服务节点响应于所述操作成功响应信息在使用原子事务的函数中将变更结果进行事务提交后将所述操作成功响应信息返回给所述请求端;
其中,所述方法还包括:
响应于同步操作执行失败,向所述服务节点返回操作失败响应信息,以使所述服务节点响应于所述操作失败响应信息在使用原子事务的函数中对变更操作进行事务回滚或补偿操作。
4.根据权利要求3所述的方法,其中,所述方法还包括:
通过令牌生产接口接收请求端携带待发起数据同步请求的访问者的身份权限凭证、所述数据同步请求的信息参数和请求的服务节点的标识的第一请求,其中,所述信息参数包括所述操作相关数据;
验证所述访问者是否有在所述服务节点中执行所述数据同步请求的权限,若是,则生成一个令牌并发送给所述请求端,同时对应存储所述信息参数和所述访问者的身份权限凭证;其中,所述请求端在接收所述令牌后携带所述令牌和所述受信节点的标识向所述服务节点的接口地址发起数据同步请求,以使所述服务节点携带所述令牌向所述受信节点的标识对应的令牌消费接口发送第二请求;
通过令牌消费接口接收所述服务节点携带所述令牌发起的第二请求,验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的包括目标操作数据的信息参数和所述访问者的身份权限凭证并返回给所述服务节点,以使所述服务节点基于所述令牌的有效性响应结果、对应的信息参数和所述访问者的身份权限凭证进行校验与鉴权,并通过信息参数中的操作相关数据执行变更操作。
5.一种网络服务间的数据同步方法,应用于受信节点,其中,所述方法包括:
通过同步接口接收服务节点响应于变更操作执行成功后携带与操作相关数据对应的令牌发起的数据同步请求,其中,所述服务节点响应于对请求端发起的数据变更请求校验鉴权成功,执行所述数据变更请求中的所述操作相关数据对应的变更操作;
验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的操作相关数据;
在使用原子事务的函数中执行取出的、与所述令牌对应的操作相关数据对应的同步操作;
响应于同步操作执行成功,向所述服务节点返回操作成功响应信息,以使所述服务节点响应于所述操作成功响应信息在使用原子事务的函数中将变更结果进行事务提交;
响应于接收到所述服务节点返回的所述操作成功响应信息,将所述操作成功响应信息发送给所述请求端;
其中,所述方法还包括:
响应于同步操作执行失败,向所述服务节点返回操作失败响应信息,以使所述服务节点响应于所述操作失败响应信息在使用原子事务的函数中对变更操作进行事务回滚或补偿操作;
响应于接收到所述服务节点返回的所述操作失败响应信息,将所述操作失败响应信息发送给所述请求端。
6.根据权利要求5所述的方法,其中,所述方法还包括:
接收请求端携带待发起数据同步请求的访问者的身份权限凭证、所述数据同步请求的信息参数和请求的服务节点的标识的第一请求;其中,所述信息参数包括所述操作相关数据;
验证所述访问者是否有在所述服务节点中执行所述数据同步请求的权限,若是,则生成一个令牌,同时对应存储所述信息参数和所述访问者的身份权限凭证;
携带所述令牌和所述受信节点的标识向所述服务节点发送数据同步请求;
通过令牌消费接口接收所述服务节点携带所述令牌发起的第二请求,验证所述令牌是否有效,若是,则取出存储的、与所述令牌对应的信息参数和所述访问者的身份权限凭证并返回给所述服务节点,以使所述服务节点基于所述令牌的有效性响应结果、对应的信息参数和所述访问者的身份权限凭证进行校验与鉴权。
7.一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如权利要求1至6中任一项所述的方法。
8.一种网络服务间的数据同步的服务节点,该服务节点包括:
一个或多个处理器;
计算机可读介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1或2所述的方法。
9.一种网络服务间的数据同步的受信节点,该受信节点包括:
一个或多个处理器;
计算机可读介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求3至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211695813.8A CN116132453A (zh) | 2022-12-28 | 2022-12-28 | 一种网络服务间的数据同步方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211695813.8A CN116132453A (zh) | 2022-12-28 | 2022-12-28 | 一种网络服务间的数据同步方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116132453A true CN116132453A (zh) | 2023-05-16 |
Family
ID=86296644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211695813.8A Pending CN116132453A (zh) | 2022-12-28 | 2022-12-28 | 一种网络服务间的数据同步方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116132453A (zh) |
-
2022
- 2022-12-28 CN CN202211695813.8A patent/CN116132453A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11863677B2 (en) | Security token validation | |
US20210006410A1 (en) | Method for providing virtual asset service based on decentralized identifier and virtual asset service providing server using them | |
US8341249B2 (en) | Synchronizing configuration information among multiple clients | |
US8533478B2 (en) | System for and method of writing and reading redundant data | |
US7484012B2 (en) | User enrollment in an e-community | |
US7912916B2 (en) | Resolving conflicts while synchronizing configuration information among multiple clients | |
US9286369B2 (en) | Data replication across enterprise boundaries | |
EP1585286B1 (en) | Credential roaming | |
US7975138B2 (en) | Systems and methods for mutually authenticated transaction coordination messages over insecure connections | |
US20090106549A1 (en) | Method and system for extending encrypting file system | |
CN104836862B (zh) | 一种智能终端数据存储方法 | |
EP3961442B1 (en) | Digital certificate invalidation and verification method and device | |
WO2019134234A1 (zh) | 防刷登录的方法、装置、终端设备及存储介质 | |
CN111651747B (zh) | 登录票据同步***及方法、相关设备 | |
JP5801482B2 (ja) | キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム | |
US11252143B2 (en) | Authentication system, authentication server and authentication method | |
JP2009258917A (ja) | プロキシサーバ、認証サーバおよび通信システム | |
CN112118269A (zh) | 一种身份认证方法、***、计算设备及可读存储介质 | |
CN108234122B (zh) | 令牌校验方法和装置 | |
US9621349B2 (en) | Apparatus, method and computer-readable medium for user authentication | |
JP2020038438A (ja) | 管理装置、管理システム及びプログラム | |
CN114938278B (zh) | 一种零信任访问控制方法及装置 | |
CN115001707B (zh) | 基于区块链的设备认证方法和相关设备 | |
CN116010926A (zh) | 登陆认证方法、装置、计算机设备和存储介质 | |
CN116132453A (zh) | 一种网络服务间的数据同步方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |