CN113918654B - 一种区块数据提交的方法及装置 - Google Patents

一种区块数据提交的方法及装置 Download PDF

Info

Publication number
CN113918654B
CN113918654B CN202111481765.8A CN202111481765A CN113918654B CN 113918654 B CN113918654 B CN 113918654B CN 202111481765 A CN202111481765 A CN 202111481765A CN 113918654 B CN113918654 B CN 113918654B
Authority
CN
China
Prior art keywords
record
data
service
information
lock information
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
Application number
CN202111481765.8A
Other languages
English (en)
Other versions
CN113918654A (zh
Inventor
白兴强
李辉忠
张开翔
范瑞彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202111481765.8A priority Critical patent/CN113918654B/zh
Publication of CN113918654A publication Critical patent/CN113918654A/zh
Application granted granted Critical
Publication of CN113918654B publication Critical patent/CN113918654B/zh
Priority to PCT/CN2022/100630 priority patent/WO2023103340A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种区块数据提交的方法及装置,包括:调度服务将具有区块数据的第一记录存储至数据库,第一记录中还包括主锁信息和提交区块数据的起始时间戳;调度服务将主锁信息和起始时间戳通知各执行服务;各执行服务用于将具有状态数据的第二记录存储至数据库;第二记录中还包括主锁信息和起始时间戳;调度服务在区块数据共识成功且各执行服务均完成各自第二记录的存储后,从第一记录中删除主锁信息并增加提交区块数据的结束时间戳,从而完成提交区块数据的数据库事务;主锁信息的删除用于指示各执行服务更新第二记录,从而完成提交各状态数据的数据库事务。实现事务的原子性,保证了提交至数据库中的数据的准确性和完整性。

Description

一种区块数据提交的方法及装置
技术领域
本发明涉及金融科技(Fintech)领域,尤其涉及一种区块数据提交的方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(例如:区块链、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,大数据技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对大数据技术中区块数据的提交提出了更高的要求。
现有技术方案中针对任一区块链节点,基于区块链节点确定多个执行服务和一个调度服务,并将执行服务分布在不同的机器上,其中,多个执行服务用于执行区块中的交易,以实现并行执行交易,提高区块链系统的底层性能。
在区块共识成功后,针对任一执行服务,根据待提交数据(包括交易执行结果、交易数据等)确定数据库事务,并执行数据库事务,确定事务执行结果并将事务执行情况反馈至调度服务。
然后由调度服务向各执行服务发送事务提交指令(commit操作指令),以使各执行服务执行事务提交指令,将待提交数据提交至分布式数据库中,然后释放资源,并将事务提交结果反馈至调度服务。
但在上述技术方案中,若调度服务在发送commit操作指令后挂机(如宕机、死机等情况),导致无法接收数据库事务提交结果,从而无法确定全部的执行服务是否完成commit操作指令,将待提交数据提交至分布式数据库,易导致提交至分布式数据库的数据与区块的待提交数据不一致,使提交至分布式数据库的数据存在不确定性。
发明内容
本发明实施例提供一种区块数据提交的方法及装置,用于实现。
第一方面,本发明实施例提供一种区块数据提交的方法,包括:
调度服务将具有区块数据的第一记录存储至数据库,所述第一记录中还包括主锁信息和提交所述区块数据的起始时间戳;
所述调度服务将所述主锁信息和所述起始时间戳通知各执行服务;所述各执行服务用于将具有状态数据的第二记录存储至数据库;所述第二记录中还包括所述主锁信息和所述起始时间戳;所述状态数据是执行服务执行所述区块数据中的交易产生的;
所述调度服务在所述区块数据共识成功且所述各执行服务均完成各自第二记录的存储后,从所述第一记录中删除所述主锁信息并增加提交所述区块数据的结束时间戳,从而完成提交所述区块数据的数据库事务;所述主锁信息的删除用于指示所述各执行服务更新所述第二记录,从而完成提交各状态数据的数据库事务。
上述技术方案中,通过第一记录和第二记录的起始时间戳,使各执行服务的事务提交与调度服务的事务提交作为同一数据库事务,实现了分布式执行服务在数据提交时事务的统一性及原子性;通过从第一记录中删除主锁信息指示各执行服务进行事务提交,以此避免在调度服务或执行服务挂机时,事务无法提交的情形,防止提交至数据库的数据与区块数据不一致,保证了提交至数据库中的数据的准确性和完整性。
可选的,所述调度服务若确定至少一个执行服务未完成第二记录的存储,则回滚针对所述区块数据的数据库事务及针对各状态数据的数据库事务。
上述技术方案中,若存在执行服务未完成第二记录的存储,则认为该执行服务执行数据库事务未完成,进而回滚针对区块数据的数据库事务及针对各状态数据的数据库事务,以保证数据提交的原子性。
可选的,调度服务将具有区块数据的第一记录存储至数据库之前,还包括:
所述调度服务提交针对各执行服务的状态数据的共识请求;
所述调度服务将所述主锁信息和所述起始时间戳通知各执行服务,包括:
所述调度服务在共识准备阶段将所述主锁信息和所述起始时间戳通知各执行服务。
上述技术方案中,调度服务在共识准备阶段将主锁信息和起始时间戳通知各执行服务,从而使各执行服务提前执行数据库事务,减少了区块数据提交时间,提升了区块数据提交效率。
可选的,调度服务将具有区块数据的第一记录存储至数据库,包括:
调度服务在第一记录中增加第一行信息,所述第一记录的第一行信息以第一预设标识为键,将起始时间戳写入所述第一记录的写入信息,将主锁信息写入所述第一记录的锁信息,将区块数据写入所述第一记录的数据信息;所述第一预设标识用于表征所述区块数据的区块标识;
从所述第一记录中删除所述主锁信息并增加提交所述区块数据的结束时间戳,包括:
所述调度服务在确定所述第一记录的锁信息记录有所述区块数据的主锁信息时,将所述主锁信息移除;在所述第一记录中增加第二行信息,所述第一记录的第二行信息以所述第一预设标识为键,将结束时间戳添加至对应的写入信息中,将所述区块数据在所述第一记录中的位置信息添加至对应的数据信息中。
上述技术方案中,通过起始时间戳,指示各执行服务的事务提交与调度服务的事务提交进行关联,使各执行服务的事务提交与调度服务的事务提交作为同一数据库事务,实现了分布式执行服务在数据提交时事务的统一性及原子性;通过主锁信息指示各执行服务进行事务提交,以此避免在调度服务或执行服务挂机时,事务无法提交的情形,防止提交至数据库的数据与区块数据不一致,保证了提交至数据库中的数据的准确性和完整性。
第二方面,本发明实施例提供一种区块数据提交的方法,包括:
执行服务接收调度服务发送的主锁信息和起始时间戳;所述起始时间戳用于表征所述调度服务将具有区块数据的第一记录存储至数据库的存储时间;
所述执行服务基于执行所述区块数据中的交易产生的状态数据,生成第二记录并存储至数据库;所述第二记录中包括所述状态数据、所述主锁信息对应的从锁信息和所述起始时间戳;
所述执行服务在确定所述第一记录中的所述主锁信息不存在时,从所述第二记录中删除所述从锁信息并增加结束时间戳,从而完成提交所述状态数据的数据库事务;所述结束时间戳用于表征所述调度服务提交所述第一记录的提交时间。
上述技术方案中,执行服务通过起始时间戳,使自身的事务提交与调度服务的事务提交进行关联,使执行服务的事务提交与调度服务的事务提交作为同一数据库事务,实现了分布式执行服务在数据提交时事务的统一性及原子性;通过主锁信息以及对应的从锁信息决定各执行服务的事务提交,因为执行服务的第二记录已经存储至数据库,因此可以避免在调度服务或执行服务挂机时,事务无法提交的情形,防止提交至数据库的数据与区块数据不一致,保证了提交至数据库中的数据的准确性和完整性。
可选的,所述执行服务基于执行所述区块数据中的交易产生的状态数据,生成第二记录并存储至数据库,包括:
所述执行服务在第二记录中增加第一行信息,所述第二记录的第一行信息以第二预设标识为键,将起始时间戳写入所述第二记录的写入信息,将从锁信息写入所述第二记录的锁信息,将区块数据写入所述第一记录的数据信息;所述第二预设标识用于表征所述状态数据的标识;
从所述第二记录中删除所述从锁信息并增加结束时间戳,包括:
所述执行服务在确定所述第一记录的锁信息未记录有所述区块数据的主锁信息时,将所述从锁信息移除;在所述第二记录中增加第二行信息,所述第二记录的第二行信息以所述第二预设标识为键,将结束时间戳添加至对应的写入信息中,将所述状态数据在所述第二记录中的位置信息添加至对应的数据信息中。
上述技术方案中,通过结束时间戳,指示同一区块的状态数据和区块数据;通过从锁信息确定各执行服务是否完成事务提交,以此避免在调度服务或执行服务挂机时,事务无法提交的情形,防止提交至数据库的数据与区块数据不一致,保证了提交至数据库中的数据的准确性和完整性。
第三方面,本发明实施例提供一种区块数据提交的方法,包括:
在主调度服务崩溃后,从调度服务从数据库中获取第一记录;所述第一记录是主调度服务在执行针对区块数据的数据库事务产生的;
所述从调度服务在确定所述第一记录中不具有区块数据对应的主锁信息时,确定各执行服务对应的第二记录是否具有从锁信息;
所述从调度服务针对具有从锁信息的第二记录,触发具有从锁信息的第二记录的执行服务执行针对状态数据的数据库事务的提交;所述第二记录中包括执行服务执行所述区块数据中的交易产生的状态数据。
上述技术方案中,通过主锁信息和从锁信息,实现在主调度服务崩溃后,通过从调度服务完成本次事务提交,减少对事务提交的影响,提高对事务提交的效率。
可选的,所述从调度服务在确定所述第一记录中具有区块数据对应的主锁信息时,则重新执行所述区块数据的区块标识对应的区块。
上述技术方案中,若第一记录中具有区块数据对应的主锁信息,从调度服务无法确定各执行服务是否完成数据库事务的执行,因此重新执行区块数据的区块标识对应的区块,保证区块数据的事务性以及准确性。
可选的,若任一执行服务崩溃,调度服务执行所述执行服务对应的针对状态数据的数据库事务。
上述技术方案中,通过调度服务代替执行服务完成事务提交,减少执行服务挂机对事务提交的影响,提高对事务提交的效率。
第四方面,本发明实施例提供一种区块数据提交的装置,包括:
第一处理模块,用于将具有区块数据的第一记录存储至数据库,所述第一记录中还包括主锁信息和提交所述区块数据的起始时间戳;
第一发送模块,用于将所述主锁信息和所述起始时间戳通知各执行服务;所述各执行服务用于将具有状态数据的第二记录存储至数据库;所述第二记录中还包括所述主锁信息和所述起始时间戳;所述状态数据是执行服务执行所述区块数据中的交易产生的;
第一提交模块,用于在所述区块数据共识成功且所述各执行服务均完成各自第二记录的存储后,从所述第一记录中删除所述主锁信息并增加提交所述区块数据的结束时间戳,从而完成提交所述区块数据的数据库事务;所述主锁信息的删除用于指示所述各执行服务更新所述第二记录,从而完成提交各状态数据的数据库事务。
可选的,所述第一处理模块还用于:
若确定至少一个执行服务未完成第二记录的存储,则回滚针对所述区块数据的数据库事务及针对各状态数据的数据库事务。
可选的,所述第一处理模块还用于:
将具有区块数据的第一记录存储至数据库之前,提交针对各执行服务的状态数据的共识请求;
可选的,所述第一发送模块具体用于:
在共识准备阶段将所述主锁信息和所述起始时间戳通知各执行服务。
可选的,所述第一处理模块具体用于:
在第一记录中增加第一行信息,所述第一记录的第一行信息以第一预设标识为键,将起始时间戳写入所述第一记录的写入信息,将主锁信息写入所述第一记录的锁信息,将区块数据写入所述第一记录的数据信息;所述第一预设标识用于表征所述区块数据的区块标识;
可选的,所述第一提交模块具体用于:
在确定所述第一记录的锁信息记录有所述区块数据的主锁信息时,将所述主锁信息移除;在所述第一记录中增加第二行信息,所述第一记录的第二行信息以所述第一预设标识为键,将结束时间戳添加至对应的写入信息中,将所述区块数据在所述第一记录中的位置信息添加至对应的数据信息中。
第五方面,本发明实施例提供一种区块数据提交的装置,包括:
接收单元,用于接收调度服务发送的主锁信息和起始时间戳;所述起始时间戳用于表征所述调度服务将具有区块数据的第一记录存储至数据库的存储时间;
处理单元,用于基于执行所述区块数据中的交易产生的状态数据,生成第二记录并存储至数据库;所述第二记录中包括所述状态数据、所述主锁信息对应的从锁信息和所述起始时间戳;
提交单元,用于在确定所述第一记录中的所述主锁信息不存在时,从所述第二记录中删除所述从锁信息并增加结束时间戳,从而完成提交所述状态数据的数据库事务;所述结束时间戳用于表征所述调度服务提交所述第一记录的提交时间。
可选的,所述处理单元具体用于:
在第二记录中增加第一行信息,所述第二记录的第一行信息以第二预设标识为键,将起始时间戳写入所述第二记录的写入信息,将从锁信息写入所述第二记录的锁信息,将区块数据写入所述第一记录的数据信息;所述第二预设标识用于表征所述状态数据的标识;
可选的,所述提交单元具体用于:
在确定所述第一记录的锁信息未记录有所述区块数据的主锁信息时,将所述从锁信息移除;在所述第二记录中增加第二行信息,所述第二记录的第二行信息以所述第二预设标识为键,将结束时间戳添加至对应的写入信息中,将所述状态数据在所述第二记录中的位置信息添加至对应的数据信息中。
第六方面,本发明实施例提供一种区块数据提交的装置,包括:
第二处理模块,用于在主调度服务崩溃后,从数据库中获取第一记录;所述第一记录是主调度服务在执行针对区块数据的数据库事务产生的;
在确定所述第一记录中不具有区块数据对应的主锁信息时,确定各执行服务对应的第二记录是否具有从锁信息;
第二提交模块,用于针对具有从锁信息的第二记录,触发具有从锁信息的第二记录的执行服务执行针对状态数据的数据库事务的提交;所述第二记录中包括执行服务执行所述区块数据中的交易产生的状态数据。
可选的,所述第二处理模块还用于:
在确定所述第一记录中具有区块数据对应的主锁信息时,则重新执行所述区块数据的区块标识对应的区块。
可选的,所述第二提交模块还用于:
若任一执行服务崩溃,执行所述执行服务对应的针对状态数据的数据库事务。
第七方面,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块数据提交的方法。
第八方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述区块数据提交的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种两阶段事务提交的示意图;
图2为本发明实施例提供的一种系统架构示意图;
图3为本发明实施例提供的一种区块数据提交的方法的流程示意图;
图4为本发明实施例提供的一种区块数据的示意图;
图5为本发明实施例提供的一种状态数据的示意图;
图6为本发明实施例提供的一种第一记录的示意图;
图7为本发明实施例提供的一种更新后的第一记录的示意图;
图8为本发明实施例提供的一种区块数据提交的方法的流程示意图;
图9为本发明实施例提供的一种第二记录的示意图;
图10为本发明实施例提供的一种更新后的第二记录的示意图;
图11为本发明实施例提供的一种更新后的第二记录的示意图;
图12为本发明实施例提供的一种区块数据提交的方法的流程示意图;
图13为本发明实施例提供的一种区块数据提交的装置的结构示意图;
图14为本发明实施例提供的一种区块数据提交的装置的结构示意图;
图15为本发明实施例提供的一种区块数据提交的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了更好的阐述本发明,下面对可能出现的名词进行解释。
区块链系统:一种由多个区块链节点共同维护及信任的分布式存储系统。区块链底层是由一系列区块组成的一条链,每个区块上除了记录本区块的数据之外,还会记录上区一块的哈希值,通过这种方式组成链式的数据结构。一个区块由块头和块体组成,其中块头定义包括该区块高度、上一区块的哈希值等字段;块体用于存储交易数据。区块链系统是利用密码学的方式保证数据传输和访问的安全,并利用链式结构保证链上数据不可被篡改。
区块链节点:在区块链系统中,一个区块链节点是指一个具有唯一身份的参与者,该区块链节点具有一份完整的账本拷贝,具有参与区块链系统共识和维护账本的能力。
智能合约:智能合约是运行在区块链系统之上的一份代码和数据的集合,其中代码负责实现智能合约的功能,数据负责存储智能合约状态,智能合约可以接收和发送信息。
交易:在区块链系统中,任何操作(部署合约、调用合约接口等)都是通过发送交易的方式进行。交易由用户发起,并通过客户端发送至区块链节点。区块链节点在收到交易后,会将交易打包为区块并执行。
合约地址:在区块链中,每个智能合约部署到链上后,会生成对应的地址用于标示该智能合约。通过交易调用智能合约的接口时,需要提供合约地址。
哈希函数:哈希函数是一种将任意长度数据映射到有限长度的输出域的函数,具有不可逆性和抗碰撞性,其中不可逆性是指哈希函数只能的从输入确定输出,反之则不可实现;抗碰撞性是指很难找到两个不同的输出使得哈希函数得到完全一致的输出。哈希函数的返回值称为哈希值,哈希值可以作为输入数据的特征。
并行执行:区块链中的交易是对智能合约接口的调用,可以通过分析交易执行涉及到的读写关系实现并行执行以提高整个区块链底层的性能。
分布式数据库:分布式数据库是用计算机网络将物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库。每个被连接起来的数据库单元称为站点或节点。
数据库事务:是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。数据库事务由事务开始与事务结束之间执行的全部数据库操作组成。数据库事务有原子性、一致性、隔离性和持久性四个特性。
水平扩展:是指当添加更多的机器时,应用可以利用这些机器的资源来提升处理能力,从而提升扩展性。
竖直扩展:是指应用在有更多资源(如CPU、存储、网络等)单台机器上取得更好的性能。
分布式事务:分布式事务也是一种数据库事务,只是数据库中的数据存储在由网络连接的多台主机中。同样的分布式事务也需要保持数据库事务的4个特性。
目前为了做到区块链节点水平扩展,需要将原本单体架构下的区块链节点中各个模块(调度服务和执行服务等)设计为微服务模式。具体的,在区块链系统产生新的区块后,每个区块中的交易需要通过执行得到状态的改变,微服务模式下由调度服务将一个区块中的交易调度到分布在不同机器上的执行服务并行执行。
这种微服务模式下,每个执行服务都可能会挂掉,而为了保证微服务构成的区块链节点的高可用,需要能够在有执行服务挂掉后,启动新的执行服务继续执行,同时考虑到某些业务场景的大数据量的支持,需接入可并行扩展的分布式数据库。
当前主流的分布式数据库所支持的分布式事务都是保证其自身分布在不同机器的多个节点之间的事务,不能解决当前架构下分布在多个机器上的执行服务之间的分布式事务问题。如果把每个执行服务的事务提交作为一个单独的数据库事务,则需要使用两阶段提交、三阶段提交等算法,或在分布式数据库和执行服务之间引入事务代理层,由事务代理层将数据提交到数据库中。
进一步地,当前分布式数据库事务用于协调分布式数据库内部的多节点,在可水平扩展的区块链并行执行架构下,由于执行服务分布在不同的机器上,当某个区块执行完成并达成共识进入提交状态时,需要多个执行服务分布式的将待提交数据提交到数据库中,在此过程中需要保证分布式的执行服务提交数据的事务性。
且现有的分布式数据库,其支持的分布式数据库事务是相对于其自身的,如果存在多个客户端访问同一个分布式数据库,那么每个客户端使用的是一个独立的事务;例如,若客户端A1访问分布式数据库a1,客户端A2访问分布式数据库a2,则客户端A1的数据库事务B1和客户端A2的数据库事务B2是相互独立的,不存在关联性,因此针对数据库事务B1和数据库事务B2,不需要考虑数据库事务B1和数据库事务B2之间的原子性。
而在区块链系统的分布式执行服务中,多个执行服务是基于区块的交易数据提交数据库事务,即各执行服务的数据库事务存在关联性;例如,针对区块链系统中任一区块链节点,区块链节点包括执行服务C1和执行服务C2,执行服务C1和执行服务C2分别执行该区块的一部分交易数据,确定该区块的待提交数据,如执行服务C1确定待提交数据为D1,执行服务C2确定待提交数据为D2,即针对该区块的待提交数据包括待提交数据D1和待提交数据D2。
执行服务C1根据待提交数据为D1确定数据库事务E1,执行服务C2根据待提交数据为D2确定数据库事务E2,为了保证区块链系统的数据一致性,需要数据库事务E1和数据库事务E2均提交,才可以实现区块上链,即需要保证多个执行服务的数据库事务提交操作的原子性。
现有技术中,为了保证多个执行服务的数据库事务提交操作的原子性,一般有下述两种方式来实现。
一、引入事务代理层来实现。
具体的,各执行服务将待提交数据发送到事务代理,由事务代理将所有待提交数据放在一个数据库事务中提交,以此保证区块的待提交数据的一致性。
但该方法中,一方面,若事务代理层挂机(如宕机等)会导致区块链系统无法正常运行;另一方面,事务代理层导致区块链系统无法水平扩展,待提交数据不能由分布式的执行服务完成提交,必须要通过事务代理层提交,限制了区块链系统的区块上链性能。
第二、通过多阶段事务来实现。
以两阶段事务为例,图1实例性的示出了一种两阶段事务提交的示意图,如图1所示,第一阶段流程如下:
S11、协调服务向各执行服务发送数据库事务执行请求,并等待各执行服务反馈数据库事务执行情况(如执行成功或执行失败);
S12、各执行服务收到数据库事务执行请求之后,执行数据库事务,但不提交,并记录数据库事务日志;
S13、各执行服务将数据库事务执行情况反馈至协调服务,同时等待协调服务的后续指令。
第二阶段流程如下:
S21、调度服务向各执行服务发送事务提交指令(commit操作指令),请求提交数据库事务;
S22、各执行服务收到commit操作指令之后执行commit操作,然后释放数据库事务所占用的资源;
S23、各执行服务向协调服务返回数据库事务提交结果。
若在上述步骤S13的各数据库事务执行情况中存在执行失败的数据库事务执行情况或执行服务未反馈数据库事务执行情况,则调度服务向各执行服务发送事务回滚指令(rollback操作指令),请求回滚数据库事务。
但在上述方法的第二阶段流程中,在调度服务发送commit操作指令之后,部分执行服务收到commit操作指令,部分执行服务未收到commit操作指令,此时若协调服务和某些执行服务挂机之后,即使重新选出了协调服务,也无法判断挂机的执行服务是否提交成功,产生了数据不确定性。
图2示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括调度服务210、执行服务220和数据库230。
其中,调度服务210用于对每个区块中交易进行分发和对执行服务220进行管理;具体的,调度服务210在第一记录中增加第一预设标识、起始时间戳、主锁信息和区块数据,并将添加信息后的第一记录存储在数据库230。将主锁信息和起始时间戳通知执行服务220,在区块数据共识成功且各执行服务均完成各自第二记录的存储后,从第一记录中删除主锁信息并增加提交区块数据的结束时间戳,从而完成提交区块数据的数据库事务。
执行服务220的数量可以为n个,在此不对执行服务220的数量做具体限定。针对任一执行服务220,执行服务220用于接收调度服务210发送的主锁信息和起始时间戳,基于执行区块数据中的交易产生的状态数据,生成第二记录并存储至数据库230,在确定第一记录中的主锁信息不存在时,从第二记录中删除从锁信息并增加结束时间戳,从而完成提交状态数据的数据库事务。
数据库230可以为分布式数据库,本发明不对数据库的类型做具体限定;数据库230用于存储调度服务210的第一记录和执行服务220的第二记录。
需要说明的是,上述图2所示的结构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图3示例性的示出了本发明实施例提供的一种区块数据提交的方法的流程示意图,该流程可由区块数据提交的装置执行。
如图3所示,该流程具体包括:
步骤310,调度服务将具有区块数据的第一记录存储至数据库。
本发明实施例中,第一记录中还包括主锁信息和提交区块数据的起始时间戳。
步骤320中,所述调度服务将所述主锁信息和所述起始时间戳通知各执行服务。
本发明实施例中,各执行服务用于将具有状态数据的第二记录存储至数据库;第二记录中还包括主锁信息和起始时间戳;状态数据是执行服务执行区块数据中的交易产生的。
步骤330中,所述调度服务在所述区块数据共识成功且所述各执行服务均完成各自第二记录的存储后,从所述第一记录中删除所述主锁信息并增加提交所述区块数据的结束时间戳,从而完成提交所述区块数据的数据库事务。
本发明实施例中,主锁信息的删除用于指示各执行服务更新第二记录,从而完成提交各状态数据的数据库事务。
在步骤310中,区块链系统中产生区块之后,调度服务需要指示各执行服务对区块进行共识,也就是说,调度服务将具有区块数据的第一记录存储至数据库之前,提交针对各执行服务的状态数据的共识请求。
在提交共识请求之后,调度服务会根据预设标识、起始时间戳、主锁信息和区块数据生成第一记录;具体的,调度服务在第一记录中增加第一行信息,第一记录的第一行信息以第一预设标识为键,将起始时间戳写入第一记录的写入信息,将主锁信息写入第一记录的锁信息,将区块数据写入第一记录的数据信息;第一预设标识用于表征区块数据的区块标识。
举例来说,区块链系统中每个区块的执行会产生的数据包括区块数据(区块头、区块体和区块链结构相关的索引数据等)和智能合约的状态数据,其中,区块数据是由调度服务提交至数据库的,智能合约的状态数据是由各执行服务提交至数据库的。
本发明实施例中,针对区块数据和智能合约的状态数据,以键值对的组织形式进行记录;图4为本发明实施例示例性示出的一种区块数据的示意图,如图4所示,键用于表征区块标识,如区块高,图4中以区块高等于10为例,值为区块高对应的区块数据,图4中以区块数据等于A10为例。
图5为本发明实施例示例性示出的一种状态数据的示意图,如图5所示,键用于表征状态数据的标识,如用户名,图5中以用户名等于B为例,值为用户名对应的状态数据(如余额等),图5中以状态数据等于B1为例。
调度服务基于上述图4创建的区块数据,在将区块数据存储至数据库时,添加锁信息和写入信息,从而生成第一记录;图6为本发明实施例示例性示出的一种第一记录的示意图,如图6所示,第一预设标识指的是当前待提交区块CurrentNumber,即区块高;数据信息即为键对应的值,即区块数据;锁信息用于存储主锁信息P;写入信息用于记录起始时间戳,起始时间戳可以为生成第一记录的时间戳,如时间戳t0=202109221755120。在生成第一记录之后,将第一记录存储至数据库。
在一种可实施的方式中,调度服务在区块共识成功后将主锁信息和起始时间戳通知各执行服务,以实现在区块数据提交时,使调度服务的数据库事务与各执行服务的数据库事务作为同一个数据库事务。
在本发明实施例中,调度服务在共识准备阶段将主锁信息和起始时间戳通知各执行服务,以使各执行服务提前准备数据库事务提交,减少数据库事务提交时间,提升数据库事务提交效率。
在步骤330中,各执行服务在接收起始时间戳和主锁信息之后,会相应的生成第二记录,并将第二记录存储至数据库。
在一种应用场景中,调度服务若确定至少一个执行服务未完成第二记录的存储,则回滚针对区块数据的数据库事务及针对各状态数据的数据库事务。
在另一种应用场景中,调度服务确定各执行服务均完成各自第二记录的存储,基于该种场景,调度服务在确定区块数据共识成功后,删除第一记录中的主锁信息,从而完成提交区块数据的数据库事务。
具体的,调度服务在确定第一记录的锁信息记录有区块数据的主锁信息时,将主锁信息移除;在第一记录中增加第二行信息,第一记录的第二行信息以第一预设标识为键,将结束时间戳添加至对应的写入信息中,将区块数据在第一记录中的位置信息添加至对应的数据信息中。
基于上述图4进行举例,图7示例性的示出了一种更新后的第一记录的示意图,如图7所示,第一记录的第二行信息中键为10、数据信息和锁信息为空、写入信息包括结束时间戳t1(如t1=202109221755958)和区块数据所在位置(即第一行信息“A10”所在位置),结束时间戳为事务提交时间戳;在一种可实施的方式中,写入信息也可以直接包括结束时间戳t1和区块数据,在此不做具体限定。
在步骤320中,针对任一执行服务,执行服务第二记录存储至数据库之后,确定第一记录中的主锁信息是否存在,若存在,则不提交数据库事务,否则将第二记录的从锁删除,从而提交状态数据的数据库事务。
为了更好的阐述执行服务提交状态数据,图8为本发明示例性示出的一种区块数据提交的方法的流程示意图,如图8所示,流程如下。
步骤810,执行服务接收调度服务发送的主锁信息和起始时间戳。
本发明实施例中,起始时间戳用于表征调度服务将具有区块数据的第一记录存储至数据库的存储时间。
步骤820,所述执行服务基于执行所述区块数据中的交易产生的状态数据,生成第二记录并存储至数据库。
本发明实施例中,第二记录中包括状态数据、主锁信息对应的从锁信息和所述起始时间戳。
步骤830,所述执行服务在确定所述第一记录中的所述主锁信息不存在时,从所述第二记录中删除所述从锁信息并增加结束时间戳,从而完成提交所述状态数据的数据库事务。
本发明实施例中,结束时间戳用于表征调度服务提交第一记录的提交时间。
在步骤820中,基于上述对生成第一记录的阐述,第二记录是执行服务根据第二预设标识、状态数据、主锁信息对应的从锁信息和起始时间戳生成的。
具体的,执行服务在第二记录中增加第一行信息,第二记录的第一行信息以第二预设标识为键,将起始时间戳写入第二记录的写入信息,将从锁信息写入第二记录的锁信息,将区块数据写入第一记录的数据信息;第二预设标识用于表征状态数据的标识。
基于上述图5举例来说,图9为本发明实施例示例性示出的一种第二记录的示意图,如图9所示,第二预设标识指的是状态数据的标识,如用户名;数据信息即为用户名对应的值,即状态数据(B10);锁信息用于存储从锁信息Q;写入信息用于记录起始时间戳。在生成第二记录之后,将第二记录存储至数据库。
需要说明的是,不同的执行服务负责执行不同的智能合约,避免提交过程中不会出现写冲突的情况,防止出现冲突回滚的问题。且,不同的智能合约所对应的状态数据也是不同的;例如,执行服务1和2,分别产生智能合约C1的状态数据d1修改为bcos和将智能合约C2的状态数据d2的修改为fisco,则针对执行服务1,执行服务1的第二记录中,键为C1-d1,数据信息为bcos;针对执行服务2,执行服务2的第二记录中,键为C2-d2,数据信息为fisco。
在步骤830中,执行服务在确定所述第一记录中的所述主锁信息不存在时,删除第而记录中的从锁信息,从而完成提交区块数据的数据库事务。
具体的,执行服务在确定第一记录中的主锁信息不存在时,从第二记录中删除从锁信息并增加结束时间戳,从而完成提交状态数据的数据库事务;结束时间戳用于表征调度服务提交第一记录的提交时间。
基于上述图9进行举例,图10示例性的示出了一种更新后的第二记录的示意图,如图10所示,第二记录的第二行信息中键为B、数据信息和锁信息为空、写入信息包括结束时间戳t1(如t1=202109221755958)和状态数据所在位置(即第一行信息“B1”所在位置),结束时间戳为事务提交时间戳;同理,在一种可实施的方式中,写入信息也可以直接包括结束时间戳t1和状态数据,在此不做具体限定。
具体举例来说,图11示例性的示出了一种更新后的第二记录的示意图,如图11中a图所示,图11的a图用于表征执行服务1的更新后的第二记录;其中,键为C1-d1,第一行信息的数据信息为bcos、第一行信息的锁信息为空、第一行信息的写入信息为起始时间戳、第二行信息的数据信息为空、第二行信息的锁信息为空、第二行信息的写入信息为结束时间戳t1和状态数据“bcos”。
如图11中b图所示,图11的b图用于表征执行服务2的更新后的第二记录;其中,键为C2-d2,第一行信息的数据信息为fisco、第一行信息的锁信息为空、第一行信息的写入信息为起始时间戳、第二行信息的数据信息为空、第二行信息的锁信息为空、第二行信息的写入信息为结束时间戳t1和状态数据“fisco”。
示例性的,在一种可能出现的场景中,若调度服务挂机,则需要启动从调度服务,来继续完成事务提交。
具体的,在主调度服务崩溃后,从调度服务从数据库中获取第一记录;第一记录是主调度服务在执行针对区块数据的数据库事务产生的;从调度服务在确定第一记录中不具有区块数据对应的主锁信息时,确定各执行服务对应的第二记录是否具有从锁信息;从调度服务针对具有从锁信息的第二记录,触发具有从锁信息的第二记录的执行服务执行针对状态数据的数据库事务的提交;第二记录中包括执行服务执行区块数据中的交易产生的状态数据。
示例性的,若从调度服务在确定第一记录中具有区块数据对应的主锁信息时,则重新执行所述区块数据的区块标识对应的区块。
举例来说,在事务提交阶段,若主调度服务失去心跳(即挂机如崩溃、死机等情况)后,从调度服务负责处理对主调度服务的请求。具体的,从调度服务首先判断数据库中第一记录的主锁信息是否被移除,在一种可实施的方式中,如果主锁信息未被移除,则存在各执行服务未完成数据库事务执行的情况,因此需要重新执行区块。
在另一种可实施的方式中,主锁信息被移除,则表征各执行服务完成了数据库事务的执行,使各执行服务完成事务提交。
进一步地,若任一执行服务崩溃,由调度服务代替执行服务执行对应的针对状态数据的数据库事务。
举例来说,若执行服务1在将第一记录存储至数据库之后(以上述图1为例,第一阶段完成后),在各执行服务进行事务提交之前(以上述图1为例,第二阶段执行前)崩溃,因为执行服务1的第一记录已经存储至数据库中,相当于表征执行服务1完成了数据库事务的执行,此时,可以由调度服务代替执行服务1完成事务提交,进而防止对本次事务提交的影响。
为了更好的解释上述技术方案,图12为本发明实施例示例性示出的一种区块数据提交的方法的流程示意图,如图12所示。
调度服务获取区块链系统中产出的待上链区块,然后将待上链区块中的交易分发至执行服务1和执行服务2;获取执行服务1和执行服务2针对各自执行的交易的hash(哈希)列表,从而确定区块执行结果,参与共识。
调度服务根据区块数据(待上链区块的索引数据、收据等)、主锁信息和起始时间戳生成第一记录,并存至数据库;调用执行服务1和执行服务2的prepare(此时将主锁信息和起始时间戳发送至执行服务1和执行服务2),确定执行服务1和执行服务2的数据库事务是否执行成功。
执行服务1和执行服务2在收到调度服务发送的“调用prepare”指令之后,执行数据库事务,并反馈执行情况(如数据库事务执行成功),并根据区块交易的状态数据、主锁信息和起始时间戳生成第二记录,并将第二记录存储至数据库中。
调度服务在确定待上链区块共识成功后,且获取到执行服务1和执行服务2反馈的事务执行成功指示(相当于各执行服务均完成各自第二记录的存储),即确定执行服务1和执行服务2完成数据库事务执行。
调度服务在确定执行服务1和执行服务2完成数据库事务执行之后,将第一记录中的主锁信息移除,添加结束时间戳,得到更新后的第一记录,以更新后的第一记录作为对执行服务1和执行服务2的commit操作指令;从而使执行服务1和执行服务2在确定第一记录的主锁移除后,将自身的第二记录中从锁信息移除,添加结束时间戳,完成数据库事务提交;最后由调度服务反馈事务提交结果,即将待上链区块上链,反馈区块信息。
基于相同的技术构思,图13示例性的示出了本发明实施例提供的一种区块数据提交的装置的结构示意图,该装置可以执行区块数据提交的方法的流程。
如图13所示,该装置具体包括:
第一处理模块1310,用于将具有区块数据的第一记录存储至数据库,所述第一记录中还包括主锁信息和提交所述区块数据的起始时间戳;
第一发送模块1320,用于将所述主锁信息和所述起始时间戳通知各执行服务;所述各执行服务用于将具有状态数据的第二记录存储至数据库;所述第二记录中还包括所述主锁信息和所述起始时间戳;所述状态数据是执行服务执行所述区块数据中的交易产生的;
第一提交模块1330,用于在所述区块数据共识成功且所述各执行服务均完成各自第二记录的存储后,从所述第一记录中删除所述主锁信息并增加提交所述区块数据的结束时间戳,从而完成提交所述区块数据的数据库事务;所述主锁信息的删除用于指示所述各执行服务更新所述第二记录,从而完成提交各状态数据的数据库事务。
可选的,所述第一处理模块1310还用于:
若确定至少一个执行服务未完成第二记录的存储,则回滚针对所述区块数据的数据库事务及针对各状态数据的数据库事务。
可选的,所述第一处理模块1310还用于:
将具有区块数据的第一记录存储至数据库之前,提交针对各执行服务的状态数据的共识请求;
可选的,所述第一发送模块1320具体用于:
在共识准备阶段将所述主锁信息和所述起始时间戳通知各执行服务。
可选的,所述第一处理模块1310具体用于:
在第一记录中增加第一行信息,所述第一记录的第一行信息以第一预设标识为键,将起始时间戳写入所述第一记录的写入信息,将主锁信息写入所述第一记录的锁信息,将区块数据写入所述第一记录的数据信息;所述第一预设标识用于表征所述区块数据的区块标识;
可选的,所述第一提交模块1330具体用于:
在确定所述第一记录的锁信息记录有所述区块数据的主锁信息时,将所述主锁信息移除;在所述第一记录中增加第二行信息,所述第一记录的第二行信息以所述第一预设标识为键,将结束时间戳添加至对应的写入信息中,将所述区块数据在所述第一记录中的位置信息添加至对应的数据信息中。
基于相同的技术构思,图14示例性的示出了本发明实施例提供的一种区块数据提交的装置的结构示意图,该装置可以执行区块数据提交的方法的流程。
如图14所示,该装置具体包括:
接收单元1410,用于接收调度服务发送的主锁信息和起始时间戳;所述起始时间戳用于表征所述调度服务将具有区块数据的第一记录存储至数据库的存储时间;
处理单元1420,用于基于执行所述区块数据中的交易产生的状态数据,生成第二记录并存储至数据库;所述第二记录中包括所述状态数据、所述主锁信息对应的从锁信息和所述起始时间戳;
提交单元1430,用于在确定所述第一记录中的所述主锁信息不存在时,从所述第二记录中删除所述从锁信息并增加结束时间戳,从而完成提交所述状态数据的数据库事务;所述结束时间戳用于表征所述调度服务提交所述第一记录的提交时间。
可选的,所述处理单元1420具体用于:
在第二记录中增加第一行信息,所述第二记录的第一行信息以第二预设标识为键,将起始时间戳写入所述第二记录的写入信息,将从锁信息写入所述第二记录的锁信息,将区块数据写入所述第一记录的数据信息;所述第二预设标识用于表征所述状态数据的标识;
可选的,所述提交单元1430具体用于:
在确定所述第一记录的锁信息未记录有所述区块数据的主锁信息时,将所述从锁信息移除;在所述第二记录中增加第二行信息,所述第二记录的第二行信息以所述第二预设标识为键,将结束时间戳添加至对应的写入信息中,将所述状态数据在所述第二记录中的位置信息添加至对应的数据信息中。
基于相同的技术构思,图15示例性的示出了本发明实施例提供的一种区块数据提交的装置的结构示意图,该装置可以执行区块数据提交的方法的流程。
如图15所示,该装置具体包括:
第二处理模块1510,用于在主调度服务崩溃后,从数据库中获取第一记录;所述第一记录是主调度服务在执行针对区块数据的数据库事务产生的;
在确定所述第一记录中不具有区块数据对应的主锁信息时,确定各执行服务对应的第二记录是否具有从锁信息;
第二提交模块1520,用于针对具有从锁信息的第二记录,触发具有从锁信息的第二记录的执行服务执行针对状态数据的数据库事务的提交;所述第二记录中包括执行服务执行所述区块数据中的交易产生的状态数据。
可选的,所述第二处理模块1510还用于:
在确定所述第一记录中具有区块数据对应的主锁信息时,则重新执行所述区块数据的区块标识对应的区块。
可选的,所述第二提交模块1520还用于:
若任一执行服务崩溃,执行所述执行服务对应的针对状态数据的数据库事务。基于相同的技术构思,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块数据提交的方法。
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述区块数据提交的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种区块数据提交的方法,其特征在于,包括:
调度服务将具有区块数据的第一记录存储至数据库,所述第一记录中还包括主锁信息和提交所述区块数据的起始时间戳;
所述调度服务将所述主锁信息和所述起始时间戳通知各执行服务;所述各执行服务用于将具有状态数据的第二记录存储至数据库;所述第二记录中还包括所述主锁信息和所述起始时间戳;所述状态数据是执行服务执行所述区块数据中的交易产生的;
所述调度服务在所述区块数据共识成功且所述各执行服务均完成各自第二记录的存储后,从所述第一记录中删除所述主锁信息并增加提交所述区块数据的结束时间戳,从而完成提交所述区块数据的数据库事务;所述主锁信息的删除用于指示所述各执行服务更新所述第二记录,从而完成提交各状态数据的数据库事务。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述调度服务若确定至少一个执行服务未完成第二记录的存储,则回滚针对所述区块数据的数据库事务及针对各状态数据的数据库事务。
3.如权利要求1所述的方法,其特征在于,调度服务将具有区块数据的第一记录存储至数据库之前,还包括:
所述调度服务提交针对各执行服务的状态数据的共识请求;
所述调度服务将所述主锁信息和所述起始时间戳通知各执行服务,包括:
所述调度服务在共识准备阶段将所述主锁信息和所述起始时间戳通知各执行服务。
4.如权利要求1所述的方法,其特征在于,调度服务将具有区块数据的第一记录存储至数据库,包括:
调度服务在第一记录中增加第一行信息,所述第一记录的第一行信息以第一预设标识为键,将起始时间戳写入所述第一记录的写入信息,将主锁信息写入所述第一记录的锁信息,将区块数据写入所述第一记录的数据信息;所述第一预设标识用于表征所述区块数据的区块标识;
从所述第一记录中删除所述主锁信息并增加提交所述区块数据的结束时间戳,包括:
所述调度服务在确定所述第一记录的锁信息记录有所述区块数据的主锁信息时,将所述主锁信息移除;在所述第一记录中增加第二行信息,所述第一记录的第二行信息以所述第一预设标识为键,将结束时间戳添加至对应的写入信息中,将所述区块数据在所述第一记录中的位置信息添加至对应的数据信息中。
5.一种区块数据提交的方法,其特征在于,包括:
执行服务接收调度服务发送的主锁信息和起始时间戳;所述起始时间戳用于表征所述调度服务将具有区块数据的第一记录存储至数据库的存储时间;
所述执行服务基于执行所述区块数据中的交易产生的状态数据,生成第二记录并存储至数据库;所述第二记录中包括所述状态数据、所述主锁信息对应的从锁信息和所述起始时间戳;
所述执行服务在确定所述第一记录中的所述主锁信息不存在时,从所述第二记录中删除所述从锁信息并增加结束时间戳,从而完成提交所述状态数据的数据库事务;所述结束时间戳用于表征所述调度服务提交所述第一记录的提交时间。
6.如权利要求5所述的方法,其特征在于,所述执行服务基于执行所述区块数据中的交易产生的状态数据,生成第二记录并存储至数据库,包括:
所述执行服务在第二记录中增加第一行信息,所述第二记录的第一行信息以第二预设标识为键,将起始时间戳写入所述第二记录的写入信息,将从锁信息写入所述第二记录的锁信息,将区块数据写入所述第一记录的数据信息;所述第二预设标识用于表征所述状态数据的标识;
从所述第二记录中删除所述从锁信息并增加结束时间戳,包括:
所述执行服务在确定所述第一记录的锁信息未记录有所述区块数据的主锁信息时,将所述从锁信息移除;在所述第二记录中增加第二行信息,所述第二记录的第二行信息以所述第二预设标识为键,将结束时间戳添加至对应的写入信息中,将所述状态数据在所述第二记录中的位置信息添加至对应的数据信息中。
7.一种区块数据提交的方法,其特征在于,包括:
在主调度服务崩溃后,从调度服务从数据库中获取第一记录;所述第一记录是主调度服务在执行针对区块数据的数据库事务产生的;所述第一记录中还包括主锁信息和提交所述区块数据的起始时间戳;
所述从调度服务在确定所述第一记录中不具有区块数据对应的主锁信息时,确定各执行服务对应的第二记录是否具有从锁信息;所述第一记录中不具有区块数据对应的主锁信息用于指示更新所述第二记录;所述各执行服务用于将具有状态数据的第二记录存储至数据库;所述第二记录中还包括所述主锁信息和所述起始时间戳;
所述从调度服务针对具有从锁信息的第二记录,触发具有从锁信息的第二记录的执行服务执行针对状态数据的数据库事务的提交;所述第二记录中包括执行服务执行所述区块数据中的交易产生的状态数据。
8.如权利要求7所述的方法,其特征在于,还包括:
所述从调度服务在确定所述第一记录中具有区块数据对应的主锁信息时,则重新执行所述区块数据的区块标识对应的区块。
9.如权利要求7所述的方法,其特征在于,还包括:
若任一执行服务崩溃,调度服务执行所述执行服务对应的针对状态数据的数据库事务。
10.一种区块数据提交的装置,其特征在于,包括:
第一处理模块,用于将具有区块数据的第一记录存储至数据库,所述第一记录中还包括主锁信息和提交所述区块数据的起始时间戳;
第一发送模块,用于将所述主锁信息和所述起始时间戳通知各执行服务;所述各执行服务用于将具有状态数据的第二记录存储至数据库;所述第二记录中还包括所述主锁信息和所述起始时间戳;所述状态数据是执行服务执行所述区块数据中的交易产生的;
第一提交模块,用于在所述区块数据共识成功且所述各执行服务均完成各自第二记录的存储后,从所述第一记录中删除所述主锁信息并增加提交所述区块数据的结束时间戳,从而完成提交所述区块数据的数据库事务;所述主锁信息的删除用于指示所述各执行服务更新所述第二记录,从而完成提交各状态数据的数据库事务。
CN202111481765.8A 2021-12-07 2021-12-07 一种区块数据提交的方法及装置 Active CN113918654B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111481765.8A CN113918654B (zh) 2021-12-07 2021-12-07 一种区块数据提交的方法及装置
PCT/CN2022/100630 WO2023103340A1 (zh) 2021-12-07 2022-06-23 一种区块数据提交的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111481765.8A CN113918654B (zh) 2021-12-07 2021-12-07 一种区块数据提交的方法及装置

Publications (2)

Publication Number Publication Date
CN113918654A CN113918654A (zh) 2022-01-11
CN113918654B true CN113918654B (zh) 2022-04-01

Family

ID=79248717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111481765.8A Active CN113918654B (zh) 2021-12-07 2021-12-07 一种区块数据提交的方法及装置

Country Status (2)

Country Link
CN (1) CN113918654B (zh)
WO (1) WO2023103340A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918654B (zh) * 2021-12-07 2022-04-01 深圳前海微众银行股份有限公司 一种区块数据提交的方法及装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606626B1 (en) * 1998-10-20 2003-08-12 Sybase, Inc. Database system with lock manager enhancement for improving concurrency
EP1868319A1 (en) * 2006-06-12 2007-12-19 Alcatel Lucent Method, system and computer program for implementing a network management protocol
US10698723B2 (en) * 2014-03-31 2020-06-30 Oracle International Corporation Dropping an index without blocking locks
US10025873B2 (en) * 2014-04-18 2018-07-17 Walmart Apollo, Llc System and method for storing and processing database requests
US11769150B2 (en) * 2017-10-11 2023-09-26 International Business Machines Corporation Transaction scheduling for block space on a blockchain
US10430100B2 (en) * 2018-02-28 2019-10-01 International Business Machines Corporation Transactional operations in multi-master distributed data management systems
CN110196760B (zh) * 2018-07-12 2023-04-18 腾讯科技(深圳)有限公司 分布式事务一致性实现方法及装置
CN109828847B (zh) * 2019-01-25 2023-09-01 平安科技(深圳)有限公司 基于区块链的锁处理方法、装置、计算机设备及存储介质
US11108553B2 (en) * 2019-04-05 2021-08-31 International Business Machines Corporation Database transaction guaranteed commitment
US11144536B2 (en) * 2019-06-26 2021-10-12 Nice Ltd. Systems and methods for real-time analytics detection for a transaction utilizing synchronously updated statistical aggregation data
CN110535970B (zh) * 2019-09-16 2022-04-12 百度在线网络技术(北京)有限公司 司法链的证据存证和处理方法、装置、设备和介质
CN111210350A (zh) * 2020-01-03 2020-05-29 平安科技(深圳)有限公司 区块链的交易方法、装置、计算机设备及存储介质
CN112818058B (zh) * 2021-01-13 2022-10-21 迅鳐成都科技有限公司 区块链与链外系统进行可信数据交互的方法及装置
CN113918654B (zh) * 2021-12-07 2022-04-01 深圳前海微众银行股份有限公司 一种区块数据提交的方法及装置

Also Published As

Publication number Publication date
CN113918654A (zh) 2022-01-11
WO2023103340A1 (zh) 2023-06-15

Similar Documents

Publication Publication Date Title
CN111143389B (zh) 事务执行方法、装置、计算机设备及存储介质
WO2016180164A1 (zh) 一种分布式事务回滚方法及装置
US20230100223A1 (en) Transaction processing method and apparatus, computer device, and storage medium
JP6220851B2 (ja) 2フェーズコミットコールの厳密な順序付けに基づいたトランザクションリカバリをサポートするためのシステムおよび方法
Peluso et al. Score: A scalable one-copy serializable partial replication protocol
JP3779263B2 (ja) 共同作業システムのためのコンフリクトの解決
Sciascia et al. Scalable deferred update replication
CN109493223B (zh) 一种记账方法及装置
US7328213B2 (en) Transaction processing method, transaction control apparatus and program thereof
CN113396407A (zh) 用于利用区块链技术扩充数据库应用的系统和方法
EP3933608A1 (en) Method and apparatus for updating database by using two-phase commit distributed transaction
JP7220807B2 (ja) データ読み取り方法、装置、コンピュータ装置及びコンピュータプログラム
CN113220795B (zh) 基于分布式存储的数据处理方法、装置、设备以及介质
US9348841B2 (en) Transaction processing method and system
WO2022111188A1 (zh) 事务处理方法、系统、装置、设备、存储介质及程序产品
US20230110826A1 (en) Log execution method and apparatus, computer device and storage medium
CN113918654B (zh) 一种区块数据提交的方法及装置
CN115098229A (zh) 事务处理方法、装置、节点设备及存储介质
CN112148436A (zh) 去中心化的tcc事务管理方法、装置、设备及系统
WO2023274409A1 (zh) 在区块链系统中执行交易的方法和区块链节点
Pankowski Consistency and availability of Data in replicated NoSQL databases
US11522966B2 (en) Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment
Li et al. Enhancing throughput of partially replicated state machines via multi-partition operation scheduling
Tripathi et al. Scalable transaction management for partially replicated data in cloud computing environments
CN112596953A (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