CN109862102B - 一种分布式数据多副本并发控制系统、服务器及方法 - Google Patents
一种分布式数据多副本并发控制系统、服务器及方法 Download PDFInfo
- Publication number
- CN109862102B CN109862102B CN201910137343.5A CN201910137343A CN109862102B CN 109862102 B CN109862102 B CN 109862102B CN 201910137343 A CN201910137343 A CN 201910137343A CN 109862102 B CN109862102 B CN 109862102B
- Authority
- CN
- China
- Prior art keywords
- version number
- server
- data
- update
- updating
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种分布式数据多副本并发控制系统、服务器及方法,所述系统包括第一服务器和多个第二服务器;第二服务器用于基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和更新版本号传输至所述第一服务器;所述第一服务器用于根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述第二服务器返回校验成功信息,以使所述第二服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息,本发明可提高并发数据处理效率,降低系统压力。
Description
技术领域
本发明涉及分布式系统技术领域,尤其涉及一种分布式数据多副本并发控制系统、服务器及方法。
背景技术
分布式数据多副本是指一个数据信息(正本)在两个以上的计算机节点上存在数据拷贝,例如在异构的主机和开放系统上都有某一个客户的账户余额数据,如图1所示。读写分离技术是目前比较常见的分布式数据并发控制方案,读写分离是指所有的数据信息处理针对正本所在系统,所有只读交易针对副本所在系统,正本所在系统和副本所在系统之间通过数据异步复制技术进行单向的数据复制,即数据从正本所在系统复制至副本所在系统。读写分离技术的缺陷在于更新类操作只能发往数据正本所在系统,在大量并发的情况下,更新类操作非常大,所有数据信息的处理操作均需在正本所在系统处理,会导致正本所在系统的处理压力增大,并发交易处理缓慢,容易造成系统崩溃等问题的发生。
发明内容
本发明的一个目的在于提供一种分布式数据多副本并发控制系统,提高并发数据处理效率,降低系统压力。本发明的另一个目的在于提供一种服务器。本发明的还一个目的在于提供一种分布式数据多副本并发控制方法。
为了达到以上目的,本发明一方面公开了一种分布式数据多副本并发控制系统,包括第一服务器和多个第二服务器;
所述第二服务器用于基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和所述更新版本号传输至所述第一服务器;
所述第一服务器用于根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述第二服务器返回校验成功信息,以使所述第二服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息。
优选的,所述第二服务器进一步用于在接收到所述第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号以对所述更新版本号进行校验,直至接收到所述第一服务器传输的所述校验成功信息。
优选的,所述第二服务器进一步用于在将所述至少一个更新数据返回至客户端之后将所述至少一个更新数据和所述更新版本号同步至其他第二服务器。
本发明还公开了一种服务器,用于基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和所述更新版本号传输至第一服务器,以使所述第一服务器根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述服务器返回校验成功信息,以使所述服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述服务器返回校验失败信息。
优选的,所述服务器进一步用于在接收到第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号以对所述更新版本号进行校验,直至接收到所述第一服务器传输的所述校验成功信息。
优选的,所述服务器进一步用于在将所述至少一个更新数据返回至客户端之后将所述至少一个更新数据和所述更新版本号同步至其他第二服务器。
本发明还公开了一种服务器,用于接收第二服务器传输的主键和更新版本号,根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述第二服务器返回校验成功信息,以使所述第二服务器将至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息,其中,所述至少一个更新数据为所述第二服务器基于客户端的交易请求根据基础数据形成的,所述更新版本号为基于当前版本号根据预设版本号更新规则形成的,所述主键为根据所述交易请求形成的。
本发明还公开了一种分布式数据多副本并发控制方法,包括:
基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和所述更新版本号传输至第一服务器;
根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向第二服务器返回校验成功信息,以使所述第二服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息。
优选的,所述方法进一步包括:
在接收到所述第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号以对所述更新版本号进行校验,直至接收到所述第一服务器传输的所述校验成功信息。
优选的,所述方法进一步包括:
在将所述至少一个更新数据返回至客户端之后将所述至少一个更新数据和所述更新版本号同步至其他第二服务器。
本发明中的多个第二服务器中任意两个第二服务器间可以通过网络实现数据双向同步,每个第二服务器可向客户端提供交易服务,接收客户端的交易请求后根据交易请求形成至少一个更新数据,同时基于当前版本号根据预设版本号更新规则形成更新版本号。第二服务器在向客户端返回至少一个更新数据之前先将根据交易请求形成主键,将主键和更新版本号传输至第一服务器。第一服务器接收到第二服务器传输的主键和更新版本号后,根据主键对应的当前版本号对更新版本号按照预设版本号更新规则进行校验,若校验成功,则表示第二服务器形成的至少一个更新数据为根据最新的基础数据得到的。若校验不成功,则表示第二服务器上的基础数据的版本不是最新的,从而形成的更新数据是不准确的,交易失败。第二服务器可在与其他第二服务器数据双向同步后再进行交易处理。本发明在分布式存储的数据多副本情况下,可对相同数据的多个副本同时进行写操作,解决了集中式架构交易吞吐量无法横向扩展的问题,又满足了由集中式向分布式架构转型过程中对于现有交易业务的低侵入、低影响和低风险要求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出现有技术的分布式数据并发控制系统的结构图;
图2示出本发明分布式数据多副本并发控制系统一个具体实施例的结构图;
图3示出本发明分布式数据多副本并发控制系统一个具体例子的工作示意图;
图4示出本发明分布式数据多副本并发控制方法一个具体实施例的流程图之一;
图5示出本发明分布式数据多副本并发控制方法一个具体实施例的流程图之二;
图6示出本发明分布式数据多副本并发控制方法一个具体实施例的流程图之三;
图7示出适于用来实现本发明实施例的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的一个方面,本实施例公开了一种分布式数据多副本并发控制系统。如图2所示,本实施例中,所述系统包括第一服务器和多个第二服务器。
其中,所述第二服务器用于基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和所述更新版本号传输至所述第一服务器。
所述第一服务器用于根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述第二服务器返回校验成功信息,以使所述第二服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息。
本发明中的多个第二服务器中任意两个第二服务器间可以通过网络实现数据双向同步,每个第二服务器可向客户端提供交易服务,接收客户端的交易请求后根据交易请求形成至少一个更新数据,同时基于当前版本号根据预设版本号更新规则形成更新版本号。第二服务器在向客户端返回至少一个更新数据之前先将根据交易请求形成主键,将主键和更新版本号传输至第一服务器。第一服务器接收到第二服务器传输的主键和更新版本号后,根据主键对应的当前版本号对更新版本号按照预设版本号更新规则进行校验,若校验成功,则表示第二服务器形成的至少一个更新数据为根据最新的基础数据得到的。若校验不成功,则表示第二服务器上的基础数据的版本不是最新的,从而形成的更新数据是不准确的,交易失败。第二服务器可在与其他第二服务器数据双向同步后再进行交易处理。本发明在分布式存储的数据多副本情况下,可对相同数据的多个副本同时进行写操作,解决了集中式架构交易吞吐量无法横向扩展的问题,又满足了由集中式向分布式架构转型过程中对于现有交易业务的低侵入、低影响和低风险要求。
其中,预设版本号更新规则可采用例如在当前版本号的基础上加1得到更新版本号的版本号更新规则,系统初始化时,当前版本号可取初始值0。则在对更新版本号进行校验时,若更新版本号比当前版本号大1,表示更新版本号校验成功,否则更新版本号校验失败。需要说明的是,本实施例中,预设版本号更新规则为在当前版本号的基础上加1形成更新版本号。在其他实施例中,预设版本号更新规则也可采用其他规则,可实现对更新版本号的校验即可。
在优选的实施方式中,第一服务器中预存入所有主键和与每个主键对应的当前版本号,例如图2中第一服务器和第二服务器均包括主键1、主键2和主键3三个主键以及与每个主键对应的基础数据和当前版本号。其中,系统初始化时,当前版本号为默认初始值,例如0。每个第二服务器中存储有所有主键以及与每个主键对应的当前版本号和基础数据,同样的,系统初始化时,当前版本号为与第一服务器的当前版本号相同的默认初始值,例如0。
系统中的多个第二服务器上存储有相同的基础数据,即系统中多个第二服务器存储有相同数据的多个副本。其中,在本实施例中,多个第二服务器处于不同系统中,多个第二服务器和第一服务器形成异构系统,第一服务器起到版本协调的作用,第一服务器和多个第二服务器间仅通过网络实现数据传输,多个第二服务器中任意两个第二服务器可通过网络实现数据双向同步,可采用数据双向异步同步进行数据同步。在一个具体例子中,对于银行系统,在任何一个第二服务器接收到客户端发起的交易请求时,例如转账或支付等交易,第二服务器根据交易请求可形成至少一个更新数据,在将至少一个更新数据返回至客户端之前,需要在当前版本号的基础上根据预设版本号更新规则形成更新版本号,并根据交易请求形成主键,该主键可以是用户的账户信息等用于标识更新类交易对应的基础数据。第二服务器需将主键和更新版本号传输至第一服务器进行校验,若校验成功,则表示基础数据为与主键对应的最新基础数据,基础数据的版本为最新版本,可用于更新类数据处理,第二服务器可将形成的至少一个更新数据传输至客户端完成交易。反之,若校验失败,则证明第二服务器上的基础数据不是最新版本的基础数据,在其他第二服务器上存在更新版本的基础数据,第二服务器需要从其他第二服务器中通过数据同步获取到最新版本的基础数据,以进一步根据交易请求进行基础数据的更新操作,通过第一服务器实现系统中多个第二服务器上多个副本的基础数据的一致性,以保证基础数据的准确更新,满足了分布式系统架构对于现有业务的低侵入、低影响和低风险要求。同时,采用本发明的分布式的数据多副本并发控制,可以解决集中式系统架构交易吞吐量无法横向扩展的问题,降低了交易并发时系统的处理压力,提高了多副本并发的控制效率。
在优选的实施方式中,所述第二服务器进一步用于在接收到所述第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号以对所述更新版本号进行校验,直至接收到所述第一服务器传输的所述校验成功信息。
第二服务器接收到第一服务器传输的校验失败信息时,表明该第二服务器中存储的基础数据并非最新版本的基础数据。在高并发的情况下,在其他第二服务器上已发生更新类交易,第一服务器上的版本号已发生更新,而此时该第二服务器还未与其他第二服务器进行数据双向同步。从而接收到校验失败信息的第二服务器中基础数据并非最新版本的基础数据,需要与其他第二服务器进行数据双向同步,从其他第二服务器上获取最新版本的基础数据后再进行交易处理,形成至少一个更新数据和更新版本号。第二服务器在接收到校验失败信息时,自动触发与其他第二服务器的数据双向同步,以完成客户端的交易请求,保证了交易的准确度,也提高了系统的交易请求处理效率。
在优选的实施方式中,所述第二服务器进一步用于在将所述至少一个更新数据返回至客户端之后将所述至少一个更新数据和所述更新版本号同步至其他第二服务器。
第二服务器在将至少一个更新数据传输至客户端完成客户端的交易请求后,自动触发数据双向同步机制,将形成的至少一个更新数据和更新版本号传输至其他第二服务器,以使系统中所有第二服务器上多个数据副本保持一致性,减少其他第二服务器交易请求处理的失败情况,提高整个系统的交易吞吐量。
在优选的实施方式中,第二服务器基于交易请求生成多个更新数据时,可将多个更新数据打包,形成一个更新版本号。第二服务器通过一个更新版本号校验多个更新数据,一方面可以减少与第一服务器的通信次数,提高交易请求处理效率;另一方面第一服务器可以对多个更新数据进行一次性校验,保证校验的原子性,避免逐次处理带来的死锁问题。而第一服务器仅通过主键的当前版本号对更新版本号进行校验,第一服务器中仅需存储基础数据的主键及其当前版本号,因此可以将主键和当前版本号以键值对的方式存放在第一服务器的内存中,提高第一服务器的运行效率。
下面通过具体实施例在对本发明作进一步的说明。如图3所示,以某一客户同时进行转账和支付交易为例。系统A的第二服务器中存储有作为主键的多个账户信息(账户1、账户2和账户3等)、与每个账户对应的余额和当前版本号。系统B的第二服务器与系统A通过数据双向同步保持数据的一致性,即系统B的第二服务器中也存储有作为主键的多个账户信息(账户1、账户2和账户3等)、与每个账户对应的余额和当前版本号。第一服务器作为全局版本号协调器,存储有与系统A和系统B相同的多个账户信息(账户1、账户2和账户3等)和与每个账户对应当前版本号。系统A和系统B的第二服务器均可向客户提供读操作(例如账户查询等)和写操作(例如转账交易或支付交易等)。
转账交易发生时A系统的第二服务器更新本地的当前版本号得到更新版本号(假设当前版本号为0,更新后的更新版本号为1),第二服务器在将基于基础数据形成的更新数据提交至数据库以完成交易请求前将转账交易的账户和更新版本号传输至第一服务器进行版本校验。第一服务器根据该条数据的全局版本号(即当前版本号,为0)进行判断,全局版本号比提交的更新版本号小1,可以修改,第一服务器校验通过后会将该最新版本号覆盖全局版本号,即将全局版本号改为1,A系统接收到校验通过后会将更新数据提交本地数据库事务返回客户端以实现转账交易成功,然后触发数据双向同步机制将最新数据及最新版本号复制到B系统中以将B系统中的基础数据的值更新为更新数据。同步完成后A和B系统的基础数据完全一致,A和B系统和第一服务器中对应主键的当前版本号也完全一致,都变成1。
在B系统中同时发生的支付交易会遇到两种可能情况:
情况一中,支付交易发生时A系统的转账交易数据复制已经完成,即B系统中的基础数据和当前版本号已经与A系统中和第一服务器中的当前版本号一致,这时B系统形成的更新数据和更新版本号时,当前版本号为1,根据预设版本号更新规则在1的基础上加1变成2作为更新版本号。B系统的第二服务器将账户和更新版本号提交至第一服务器进行版本校验,第一服务器根据自己的全局版本号(是A系统转账交易成功后的版本1)进行判断,全局版本号比更新版本号小1,可以修改,第一服务器校验判断通过后将最新版本号覆盖全局版本号,即将全局版本改为2,B系统接收到校验成功信息后会将更新数据返回客户端以使支付交易成功,并触发异步数据双向同步将最新的基础数据及最新版本号复制到A系统中以覆盖A系统的基础数据和当前版本号。
情况二中,支付交易发生时A系统的转账交易数据复制未完成时,即B系统的基础数据和当前版本号与A系统和第一服务器中不一致,这时B系统更新本地的账户的基础数据得到更新数据和更新版本号(即把仍然是0的当前版本号加1变成1),将账户和更新版本号提交第一服务器进行版本校验,第一服务器根据自己的全局版本号(已经是转账交易成功后的版本1)进行判断,全局版本号与更新版本号一样,表明更新版本号不是最新版本号,说明数据并发修改冲突发生,返回校验失败信息,B系统接收到校验失败信息后可回滚本地事务返回客户端支付交易失败并提示进行交易重试。
基于相同原理,本实施例还公开了一种服务器(第二服务器)。本实施例中,该服务器被配置为基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和所述更新版本号传输至所述第一服务器,以使所述第一服务器根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述服务器返回校验成功信息,以使所述服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述服务器返回校验失败信息。
在优选的实施方式中,所述服务器进一步用于在接收到第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号以对所述更新版本号进行校验,直至接收到所述第一服务器传输的所述校验成功信息。
第二服务器接收到第一服务器传输的校验失败信息时,表明该第二服务器中存储的基础数据并非最新版本的基础数据。在高并发的情况下,在其他第二服务器上已发生更新类交易,第一服务器上的版本号已发生更新,而此时该第二服务器还未与其他第二服务器进行数据双向同步。从而接收到校验失败信息的第二服务器中基础数据并非最新版本的基础数据,需要与其他第二服务器进行数据双向同步,从其他第二服务器上获取最新版本的基础数据后再进行交易处理,形成至少一个更新数据和更新版本号。第二服务器在接收到校验失败信息时,自动触发与其他第二服务器的数据双向同步,以完成客户端的交易请求,保证了交易的准确度,也提高了系统的交易请求处理效率。
在优选的实施方式中,所述服务器进一步用于在将所述至少一个更新数据返回至客户端之后将所述至少一个更新数据和所述更新版本号同步至其他第二服务器。
第二服务器在将至少一个更新数据传输至客户端完成客户端的交易请求后,自动触发数据双向同步机制,将形成的至少一个更新数据和更新版本号传输至其他第二服务器,以使系统中所有第二服务器上多个数据副本保持一致性,减少其他第二服务器交易请求处理的失败情况,提高整个系统的交易吞吐量。
在优选的实施方式中,第二服务器基于交易请求生成多个更新数据时,可将多个更新数据打包,形成一个更新版本号。第二服务器通过一个更新版本号校验多个更新数据,一方面可以减少与第一服务器的通信次数,提高交易请求处理效率;另一方面第一服务器可以对多个更新数据进行一次性校验,保证校验的原子性,避免逐次处理带来的死锁问题。而第一服务器仅通过主键的当前版本号对更新版本号进行校验,第一服务器中仅需存储基础数据的主键及其当前版本号,因此可以将主键和当前版本号以键值对的方式存放在第一服务器的内存中,提高第一服务器的运行效率。
其中,预设版本号更新规则可采用例如在当前版本号的基础上加1得到更新版本号的版本号更新规则,系统初始化时,当前版本号可取初始值0。则在对更新版本号进行校验时,若更新版本号比当前版本号大1,表示更新版本号校验成功,否则更新版本号校验失败。需要说明的是,本实施例中,预设版本号更新规则为在当前版本号的基础上加1形成更新版本号。在其他实施例中,预设版本号更新规则也可采用其他规则,可实现对更新版本号的校验即可。
基于相同原理,本实施例还公开了一种服务器(第一服务器)。本实施例中,该服务器被配置为接收第二服务器传输的主键和更新版本号,根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述第二服务器返回校验成功信息,以使所述第二服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息,其中,所述至少一个更新数据为所述第二服务器基于客户端的交易请求根据基础数据形成的,所述更新版本号为基于当前版本号根据预设版本号更新规则形成的,所述主键为根据所述交易请求形成的。
在优选的实施方式中,第一服务器中预存入所有主键和与每个主键对应的当前版本号,其中,系统初始化时,当前版本号为默认初始值,例如0。每个第二服务器中存储有所有主键以及与每个主键对应的当前版本号和基础数据,同样的,系统初始化时,当前版本号为与第一服务器的当前版本号相同的默认初始值,例如0。第一服务器仅通过主键的当前版本号对更新版本号进行校验,第一服务器中仅需存储基础数据的主键及其当前版本号,因此可以将主键和当前版本号以键值对的方式存放在第一服务器的内存中,提高第一服务器的运行效率。
其中,预设版本号更新规则可采用例如在当前版本号的基础上加1得到更新版本号的版本号更新规则,系统初始化时,当前版本号可取初始值0。则在对更新版本号进行校验时,若更新版本号比当前版本号大1,表示更新版本号校验成功,否则更新版本号校验失败。需要说明的是,本实施例中,预设版本号更新规则为在当前版本号的基础上加1形成更新版本号。在其他实施例中,预设版本号更新规则也可采用其他规则,可实现对更新版本号的校验即可。
基于相同原理,本实施例还公开了一种分布式数据多副本并发控制方法。如图4所示,本实施例中,该方法包括:
S100:基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和所述更新版本号传输至所述第一服务器。其中,第二服务器基于交易请求生成多个更新数据时,可将多个更新数据打包,形成一个更新版本号。第二服务器通过一个更新版本号校验多个更新数据,一方面可以减少与第一服务器的通信次数,提高交易请求处理效率;另一方面第一服务器可以对多个更新数据进行一次性校验,保证校验的原子性,避免逐次处理带来的死锁问题。而第一服务器仅通过主键的当前版本号对更新版本号进行校验,第一服务器中仅需存储基础数据的主键及其当前版本号,因此可以将主键和当前版本号以键值对的方式存放在第一服务器的内存中,提高第一服务器的运行效率。
S200:根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述第二服务器返回校验成功信息,以使所述第二服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息。
本发明中的多个第二服务器中任意两个第二服务器间可以通过网络实现数据双向同步,每个第二服务器可向客户端提供交易服务,接收客户端的交易请求后根据交易请求形成至少一个更新数据,同时基于当前版本号根据预设版本号更新规则形成更新版本号。第二服务器在向客户端返回至少一个更新数据之前先将根据交易请求形成主键,将主键和更新版本号传输至第一服务器。第一服务器接收到第二服务器传输的主键和更新版本号后,根据主键对应的当前版本号对更新版本号按照预设版本号更新规则进行校验,若校验成功,则表示第二服务器形成的至少一个更新数据为根据最新的基础数据得到的。若校验不成功,则表示第二服务器上的基础数据的版本不是最新的,从而形成的更新数据是不准确的,交易失败。第二服务器可在与其他第二服务器数据双向同步后再进行交易处理。本发明在分布式存储的数据多副本情况下,可对相同数据的多个副本同时进行写操作,解决了集中式架构交易吞吐量无法横向扩展的问题,又满足了由集中式向分布式架构转型过程中对于现有交易业务的低侵入、低影响和低风险要求。
在优选的实施方式中,第一服务器中预存入所有主键和与每个主键对应的当前版本号,其中,系统初始化时,当前版本号为默认初始值,例如0。每个第二服务器中存储有所有主键以及与每个主键对应的当前版本号和基础数据,同样的,系统初始化时,当前版本号为与第一服务器的当前版本号相同的默认初始值,例如0。
其中,预设版本号更新规则可采用例如在当前版本号的基础上加1得到更新版本号的版本号更新规则,系统初始化时,当前版本号可取初始值0。则在对更新版本号进行校验时,若更新版本号比当前版本号大1,表示更新版本号校验成功,否则更新版本号校验失败。需要说明的是,本实施例中,预设版本号更新规则为在当前版本号的基础上加1形成更新版本号。在其他实施例中,预设版本号更新规则也可采用其他规则,可实现对更新版本号的校验即可。
系统中的多个第二服务器上存储有相同的基础数据,即系统中多个第二服务器存储有相同数据的多个副本。其中,在本实施例中,多个第二服务器处于不同系统中,多个第二服务器和第一服务器形成异构系统,第一服务器起到版本协调的作用,第一服务器和多个第二服务器间仅通过网络实现数据传输,多个第二服务器中任意两个第二服务器可通过网络实现数据双向同步,可采用数据双向异步同步进行数据同步。在一个具体例子中,对于银行系统,在任何一个第二服务器接收到客户端发起的交易请求时,例如转账或支付等交易,第二服务器根据交易请求可形成至少一个更新数据,在将至少一个更新数据返回至客户端之前,需要在当前版本号的基础上根据预设版本号更新规则形成更新版本号,并根据交易请求形成主键,该主键可以是用户的账户信息等用于标识更新类交易对应的基础数据。第二服务器需将主键和更新版本号传输至第一服务器进行校验,若校验成功,则表示基础数据为与主键对应的最新基础数据,基础数据的版本为最新版本,可用于更新类数据处理,第二服务器可将形成的至少一个更新数据传输至客户端完成交易。反之,若校验失败,则证明第二服务器上的基础数据不是最新版本的基础数据,在其他第二服务器上存在更新版本的基础数据,第二服务器需要从其他第二服务器中通过数据同步获取到最新版本的基础数据,以进一步根据交易请求进行基础数据的更新操作,通过第一服务器实现系统中多个第二服务器上多个副本的基础数据的一致性,以保证基础数据的准确更新,满足了分布式系统架构对于现有业务的低侵入、低影响和低风险要求。同时,采用本发明的分布式的数据多副本并发控制,可以解决集中式系统架构交易吞吐量无法横向扩展的问题,降低了交易并发时系统的处理压力,提高了多副本并发的控制效率。
在优选的实施方式中,如图5所示,所述方法进一步还可包括:
S300:在接收到所述第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号以对所述更新版本号进行校验,直至接收到所述第一服务器传输的所述校验成功信息。
第二服务器接收到第一服务器传输的校验失败信息时,表明该第二服务器中存储的基础数据并非最新版本的基础数据。在高并发的情况下,在其他第二服务器上已发生更新类交易,第一服务器上的版本号已发生更新,而此时该第二服务器还未与其他第二服务器进行数据双向同步。从而接收到校验失败信息的第二服务器中基础数据并非最新版本的基础数据,需要与其他第二服务器进行数据双向同步,从其他第二服务器上获取最新版本的基础数据后再进行交易处理,形成至少一个更新数据和更新版本号。第二服务器在接收到校验失败信息时,自动触发与其他第二服务器的数据双向同步,以完成客户端的交易请求,保证了交易的准确度,也提高了系统的交易请求处理效率。
在优选的实施方式中,如图6所示,所述方法进一步还可包括:
S400:在将所述至少一个更新数据返回至客户端之后将所述至少一个更新数据和所述更新版本号同步至其他第二服务器。
第二服务器在将至少一个更新数据传输至客户端完成客户端的交易请求后,自动触发数据双向同步机制,将形成的至少一个更新数据和更新版本号传输至其他第二服务器,以使系统中所有第二服务器上多个数据副本保持一致性,减少其他第二服务器交易请求处理的失败情况,提高整个系统的交易吞吐量。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中计算机设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的由客户端执行的方法,或者,所述处理器执行所述程序时实现如上所述的由服务器执行的方法。
下面参考图7,其示出了适于用来实现本申请实施例的计算机设备600的结构示意图。
如图7所示,计算机设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (7)
1.一种分布式数据多副本并发控制系统,其特征在于,包括第一服务器和多个第二服务器;
所述第二服务器用于基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和所述更新版本号传输至所述第一服务器;
所述第一服务器用于根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述第二服务器返回校验成功信息,以使所述第二服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息;
所述第二服务器进一步用于在接收到所述第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号以对所述更新版本号进行校验,直至接收到所述第一服务器传输的所述校验成功信息。
2.根据权利要求1所述的分布式数据多副本并发控制系统,其特征在于,所述第二服务器进一步用于在将所述至少一个更新数据返回至客户端之后将所述至少一个更新数据和所述更新版本号同步至其他第二服务器。
3.一种服务器,其特征在于,用于基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和所述更新版本号传输至第一服务器,以使所述第一服务器根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述服务器返回校验成功信息,以使所述服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述服务器返回校验失败信息;
所述服务器进一步用于在接收到第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号以对所述更新版本号进行校验,直至接收到所述第一服务器传输的所述校验成功信息。
4.根据权利要求3所述的服务器,其特征在于,所述服务器进一步用于在将所述至少一个更新数据返回至客户端之后将所述至少一个更新数据和所述更新版本号同步至其他第二服务器。
5.一种服务器,其特征在于,用于接收第二服务器传输的主键和更新版本号,根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向所述第二服务器返回校验成功信息,以使所述第二服务器将至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息,以使所述第二服务器在接收到第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号,对所述更新版本号进行校验直至形成校验成功信息,其中,所述至少一个更新数据为所述第二服务器基于客户端的交易请求根据基础数据形成的,所述更新版本号为基于当前版本号根据预设版本号更新规则形成的,所述主键为根据所述交易请求形成的。
6.一种分布式数据多副本并发控制方法,其特征在于,包括:
基于客户端的交易请求根据基础数据形成至少一个更新数据,并基于当前版本号根据预设版本号更新规则形成更新版本号,根据所述交易请求形成主键,并将所述主键和所述更新版本号传输至第一服务器;
根据所述主键对应的当前版本号校验所述更新版本号,若校验成功,更新所述当前版本号的值为所述更新版本号,并向第二服务器返回校验成功信息,以使所述第二服务器将所述至少一个更新数据返回至客户端,若校验不成功,则向所述第二服务器返回校验失败信息;
所述方法进一步包括:
在接收到所述第一服务器传输的校验失败信息时,获取其他第二服务器的基础数据,根据获取的基础数据再次形成所述至少一个更新数据和更新版本号以对所述更新版本号进行校验,直至接收到所述第一服务器传输的所述校验成功信息。
7.根据权利要求6所述的分布式数据多副本并发控制方法,其特征在于,所述方法进一步包括:
在将所述至少一个更新数据返回至客户端之后将所述至少一个更新数据和所述更新版本号同步至其他第二服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910137343.5A CN109862102B (zh) | 2019-02-25 | 2019-02-25 | 一种分布式数据多副本并发控制系统、服务器及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910137343.5A CN109862102B (zh) | 2019-02-25 | 2019-02-25 | 一种分布式数据多副本并发控制系统、服务器及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109862102A CN109862102A (zh) | 2019-06-07 |
CN109862102B true CN109862102B (zh) | 2022-01-28 |
Family
ID=66898805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910137343.5A Active CN109862102B (zh) | 2019-02-25 | 2019-02-25 | 一种分布式数据多副本并发控制系统、服务器及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109862102B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110400214A (zh) * | 2019-07-31 | 2019-11-01 | 中国工商银行股份有限公司 | 跨平台协同交易数据处理方法及相关系统 |
CN112286947B (zh) * | 2020-09-29 | 2022-10-04 | 阿里云计算有限公司 | 保持不同存储系统的数据一致的方法以及装置 |
CN112445783A (zh) * | 2020-12-16 | 2021-03-05 | 中国联合网络通信集团有限公司 | 一种用于数据库更新的方法、装置和服务器 |
CN114760320B (zh) * | 2020-12-29 | 2023-09-12 | 广州视源电子科技股份有限公司 | 客户端与中台服务器的数据同步方法、系统及客户端 |
CN115037752B (zh) * | 2022-04-22 | 2024-03-22 | 网易(杭州)网络有限公司 | 资源再分配方法、装置及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009105280A2 (en) * | 2008-02-22 | 2009-08-27 | Security First Corporation | Systems and methods for secure workgroup management and communication |
CN103036717A (zh) * | 2012-12-12 | 2013-04-10 | 北京邮电大学 | 分布式数据的一致性维护系统和方法 |
US8584228B1 (en) * | 2009-12-29 | 2013-11-12 | Amazon Technologies, Inc. | Packet authentication and encryption in virtual networks |
CN104376070A (zh) * | 2014-11-12 | 2015-02-25 | 中国建设银行股份有限公司 | 更新数据库记录的控制方法和装置 |
CN105871955A (zh) * | 2015-01-21 | 2016-08-17 | 深圳市腾讯计算机系统有限公司 | 一种基于分布式文件系统的处理方法和服务器以及客户端 |
CN105991752A (zh) * | 2015-03-06 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种数据块更新方法及设备 |
CN108804121A (zh) * | 2018-05-28 | 2018-11-13 | 泰康保险集团股份有限公司 | 分布式系统中的版本管理方法、装置、介质及电子设备 |
-
2019
- 2019-02-25 CN CN201910137343.5A patent/CN109862102B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009105280A2 (en) * | 2008-02-22 | 2009-08-27 | Security First Corporation | Systems and methods for secure workgroup management and communication |
US8584228B1 (en) * | 2009-12-29 | 2013-11-12 | Amazon Technologies, Inc. | Packet authentication and encryption in virtual networks |
CN103036717A (zh) * | 2012-12-12 | 2013-04-10 | 北京邮电大学 | 分布式数据的一致性维护系统和方法 |
CN104376070A (zh) * | 2014-11-12 | 2015-02-25 | 中国建设银行股份有限公司 | 更新数据库记录的控制方法和装置 |
CN105871955A (zh) * | 2015-01-21 | 2016-08-17 | 深圳市腾讯计算机系统有限公司 | 一种基于分布式文件系统的处理方法和服务器以及客户端 |
CN105991752A (zh) * | 2015-03-06 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种数据块更新方法及设备 |
CN108804121A (zh) * | 2018-05-28 | 2018-11-13 | 泰康保险集团股份有限公司 | 分布式系统中的版本管理方法、装置、介质及电子设备 |
Non-Patent Citations (2)
Title |
---|
A Version-enabled Peer-to-Peer Content Distribution System based on DHT;Yi Jiang;《2006 10th International Conference on Computer Supported Cooperateive Work om Design》;20061204;第97-99,103页 * |
主副本法多副本分布式并发控制的实现;林克明;《计算机与数字工程》;20060420;第34卷(第2期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109862102A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109862102B (zh) | 一种分布式数据多副本并发控制系统、服务器及方法 | |
CN112463311B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
AU2018348323B2 (en) | Function-as-a-service (FaaS) platform in blockchain networks | |
CN111314479B (zh) | 一种数据处理方法和设备 | |
US8364634B2 (en) | System and method for processing fault tolerant transaction | |
US10489378B2 (en) | Detection and resolution of conflicts in data synchronization | |
US9110807B2 (en) | Cache conflict detection | |
CN108415792B (zh) | 容灾系统、方法、装置及设备 | |
CN110837505B (zh) | 状态数据存储方法、状态数据同步方法、设备和存储介质 | |
CN107656937B (zh) | 用于实现读写数据一致性的方法和装置 | |
WO2023045617A1 (zh) | 一种交易数据处理方法、装置、设备以及介质 | |
US20170177696A1 (en) | Usage of modeled validations on mobile devices in online and offline scenarios | |
US11360944B2 (en) | Reconciliation of data in a distributed system | |
CN113094430A (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
CN110196680B (zh) | 数据处理方法、装置及存储介质 | |
CN112965974A (zh) | 基于区块链的数据共享方法、节点、终端及系统 | |
CN111651284A (zh) | 一种处理业务数据的方法、装置、系统及存储介质 | |
CN107025257B (zh) | 一种事务处理方法及装置 | |
CN110928952A (zh) | 基于区块链的数据同步方法及装置 | |
CN112099921B (zh) | 基于JVM的Java应用系统预热方法及系统 | |
CN107465725B (zh) | 基于客户信息控制系统的异构长事务处理系统及方法 | |
US20240137397A1 (en) | Systems for Resolving Conflicts in Collaborative Digital Content Editing | |
CN111291014A (zh) | 区块链共识方法、设备和存储介质 | |
CN111159179A (zh) | 表分区方法及相关设备、计算机可读存储介质 | |
CN112988775B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |