CN110473100B - 一种基于区块链系统的交易处理方法及装置 - Google Patents
一种基于区块链系统的交易处理方法及装置 Download PDFInfo
- Publication number
- CN110473100B CN110473100B CN201910752822.8A CN201910752822A CN110473100B CN 110473100 B CN110473100 B CN 110473100B CN 201910752822 A CN201910752822 A CN 201910752822A CN 110473100 B CN110473100 B CN 110473100B
- Authority
- CN
- China
- Prior art keywords
- transaction
- operation information
- log space
- node
- mapping table
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及金融科技(Fintech)技术领域,公开了一种基于区块链系统的交易处理方法及装置,其中方法包括:节点在第一进程处理的第一交易异常时,确定第一进程对应的第一日志空间,并从第一日志空间获取第一交易的各操作信息,基于第一交易的各操作信息对预设数据库进行回滚操作。本发明实施例中,由于进程是基于串行方式来处理多个交易,因此,通过为并行的各进程分配不同的日志空间,使得每个进程对应的日志空间依次存储所处理的交易的操作信息;如此,节点可以通过查询进程对应的日志空间快速地获取到异常交易的各操作信息,从而可以提高基于异常交易的各操作信息对预设数据库进行回滚的准确性,并可以提高交易处理的准确性。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及一种基于区块链系统的交易处理方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,区块链技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。在区块链系统中,节点在处理交易时,除了会基于交易生成区块外,还可以将交易逐步写入节点内部设置的交易数据库中,比如可以在交易数据库中插入交易对应的数据、更新交易对应的数据、删除交易对应的数据等。
在区块链系统中,节点在执行交易时,可能会由于数据出错或程序故障导致交易发生异常,为了保证交易数据库的准确性,节点通常需要对异常交易进行回滚处理,即取消交易数据库中该条异常交易的所有写入操作,从而将交易数据库恢复至执行该条异常交易之前的状态。在一种现有的实现方案中,可以在节点中预先设置写入日志列表,使用写入日志列表来记录节点所执行的全部写入操作;如此,若在执行某一条交易时发现该条交易异常,则节点可以获取写入日志列表中最新的写入操作和该条交易的起始写入操作,根据最新的写入操作和起始写入操作之间的各写入操作对交易数据库进行回滚。然而,为了提高交易的处理效率,现阶段区块链系统中的节点大多支持并行处理交易,如此,写入日志列表中多个交易的写入操作可能是交叉存储的,因此,若采用上述实现方式,可能会同时对并行处理的其它交易执行回滚操作,导致交易处理的准确性较低。
综上,目前亟需一种基于区块链系统的数据处理方法,用以解决现有技术在执行交易回滚时存在的交易处理准确性低的技术问题。
发明内容
本发明实施例提供一种基于区块链系统的数据处理方法,用以解决现有技术在执行交易回滚时存在的交易处理准确性低的技术问题。
第一方面,本发明实施例提供的一种基于区块链系统的交易处理方法,所述方法应用于所述区块链系统中的任一节点,包括:
所述节点在第一进程处理的第一交易异常时,确定所述第一进程对应的第一日志空间;其中,所述第一日志空间用于记录所述第一进程在处理交易的过程中对预设数据库的操作信息;所述节点为并行的各进程分配的日志空间不同;进一步地,所述节点从所述第一日志空间获取所述第一交易的各操作信息,并基于所述第一交易的各操作信息对所述预设数据库进行回滚操作。
在上述设计中,通过为并行的各进程分配不同的日志空间,使得每个进程对应一个日志空间,由于进程是基于串行方式来处理多个交易的,因此,在进程对应的日志空间中,交易的操作信息是按照交易的处理顺序依次进行存储的;如此,若进程当前处理的交易异常,则节点可以通过查询进程对应的日志空间快速地获取到异常交易的各操作信息,从而可以基于该异常交易的各操作信息准确地对预设数据库进行回滚,提高交易处理的准确性。
在一种可能的设计中,所述节点在第一进程处理的第一交易异常之前,所述方法还包括:所述节点从预设映射表获取所述第一进程对应的所述第一日志空间,并使用所述第一日志空间记录所述第一进程在处理所述第一交易的过程中对预设数据库的操作信息;相应地,所述节点若从所述预设映射表未获取到所述第一进程对应的所述第一日志空间,则为所述第一进程分配所述第一日志空间,并将所述第一进程与所述第一日志空间的对应关系添加在所述预设映射表中。
在上述设计中,通过设置预设映射表来存储进程与日志空间的对应关系,使得节点在确定使用进程处理交易时,可以直接查询预设映射表确定是否已为进程分配了对应的日志空间,从而可以避免为同一进程分配多个日志空间,提高对日志空间管理的灵活性。
在一种可能的设计中,所述节点从预设映射表获取所述第一进程对应的所述第一日志空间之前,还包括:所述节点确定所述预设映射表处于未锁定状态;所述未锁定状态用于指示当前不存在进程使用所述预设映射表。
在上述设计中,在节点使用预设映射表之前需要查询预设映射表的状态,若预设映射表处于未锁定状态时,则节点可以使用预设映射表为进程分配对应的预设映射表,若预设映射表处于锁定状态时,则节点无法使用预设映射表;也就是说,通过预先为预设映射表设置锁资源(即记录预设映射表的状态),可以避免多个进程同时访问预设映射表所导致的资源冲突,且可以避免节点同时为多个进程分配相同的日志空间,从而保证交易处理的准确性。
在一种可能的设计中,所述节点使用所述第一日志空间记录所述第一进程在处理所述第一交易的过程中对预设数据库的操作信息,包括:所述节点记录所述第一交易在所述第一日志空间中的第一条操作信息所在的初始位置或记录第二交易在所述第一日志空间中的最后一条操作信息所在的终止位置;所述第二交易为处理所述第一交易之前所述第一进程处理的交易;进一步地,所述节点从所述第一日志空间获取所述第一交易的各操作信息,包括:所述节点根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述初始位置确定所述第一交易的各操作信息;或,所述节点根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述终止位置确定所述第一交易的各操作信息。
在上述设计中,进程在处理每个交易时可以记录该交易在日志空间中的起始位置或上一交易在日志空间中的终止位置,如此,在某一交易发生异常时,日志空间中当前位置与该交易在日志空间中的起始位置之间的各操作信息或者日志空间中当前位置与上一交易在日志空间中的终止位置即为该交易对应的各个操作信息;也就是说,通过记录每个交易在日志空间中的起始位置或上一交易在日志空间中的终止位置,可以快速且准确地获取每个交易对应的操作信息,提高基于交易对应的操作信息回滚预设数据库的准确性。
在一种可能的设计中,所述方法还包括:所述节点若确定所述第一进程处理完对应的所有交易,则释放所述第一日志空间占用的资源。
在上述设计中,在进程处理完对应的所有交易后,通过在进程退出的同时释放进程对应的日志空间,可以降低系统资源占用情况,为后续进程对应的日志空间预留空间。
第二方面,本发明实施例提供了一种基于区块链系统的交易处理装置,所述装置包括:
确定模块,用于在第一进程处理的第一交易异常时,确定所述第一进程对应的第一日志空间;其中,所述第一日志空间用于记录所述第一进程在处理交易的过程中对预设数据库的操作信息;所述装置为并行的各进程分配的日志空间不同;
获取模块,用于从所述第一日志空间获取所述第一交易的各操作信息;
处理模块,用于基于所述第一交易的各操作信息对所述预设数据库进行回滚操作。
在一种可能的设计中,所述确定模块在第一进程处理的第一交易异常之前,所述获取模块还用于:从预设映射表获取所述第一进程对应的所述第一日志空间;相应地,所述处理模块还用于:使用所述第一日志空间记录所述第一进程在处理所述第一交易的过程中对预设数据库的操作信息;进一步地,若所述获取模块从所述预设映射表未获取到所述第一进程对应的所述第一日志空间,则所述处理模块还用于:为所述第一进程分配所述第一日志空间,并将所述第一进程与所述第一日志空间的对应关系添加在所述预设映射表中。
在一种可能的设计中,所述获取模块从预设映射表获取所述第一进程对应的所述第一日志空间之前,所述确定模块还用于:确定所述预设映射表处于未锁定状态;所述未锁定状态用于指示当前不存在进程使用所述预设映射表。
在一种可能的设计中,所述处理模块具体用于:记录所述第一交易在所述第一日志空间中的第一条操作信息所在的初始位置或记录第二交易在所述第一日志空间中的最后一条操作信息所在的终止位置;所述第二交易为处理所述第一交易之前所述第一进程处理的交易;相应地,所述获取模块具体用于:根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述初始位置确定所述第一交易的各操作信息;或,所述节点根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述终止位置确定所述第一交易的各操作信息。
在一种可能的设计中,所述处理模块还用于:若确定所述第一进程处理完对应的所有交易,则释放所述第一日志空间占用的资源。
第三方面,本发明实施例提供了一种计算设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行上述第一方面任意所述的基于区块链系统的交易处理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述第一方面任意所述的基于区块链系统的交易处理方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于区块链系统的交易处理方法对应的流程示意图;
图2为本发明实施例提供的一种基于区块链系统的交易处理方法的交互流程示意图;
图3为本发明实施例提供的一种提供的基于区块链系统的交易处理装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
金融科技(Fintech)技术领域通常涉及到多种交易,比如,银行的交易可以包括售卡交易、存款交易、贷款交易、保险交易、理财交易等,银行每天的交易量可以达到数千笔甚至数万笔。随着区块链技术的逐步发展,金融科技领域也可以使用区块链技术来处理交易,举例来说,若多家银行之间涉及到相关交易,则可以通过设置联盟链来同步处理相关交易,或者还可以将法院、客户等同时上链,共同维护联盟链的安全和稳定。
在区块链系统中,每个节点内部都可以设置有交易数据库,各个节点通过交易数据库共同维护区块链系统中的公共账本,节点内部的交易数据库可以存储该节点所处理的交易的区块数据和交易数据,区块数据主要可以包括交易开始的时间戳、区块的哈希值等。在实际操作中,交易数据库一般可以为键值数据库,键值数据库属于一种非关系数据库,可以基于简单的键值方法来存储数据,在键值数据库中,每条交易数据都可以以键值对集合的方式存储在键值数据库中,键作为唯一标识符,可以用于检索对应的值。
表1为本发明实施例提供的一种可能的交易数据库的示意表。
表1:一种交易数据库的示意表
键 | 值 |
1 | 10 |
2 | 20 |
3 | 30 |
如表1所示,交易数据库中可以存储多条键值对,每条键值对均可以包括键和键对应的值。比如键为1的键值对对应的值为10,键为2的键值对对应的值为20,键为3的键值对对应的值为30。其中,交易数据库中的每条键值对可以标识交易的某一条交易数据,比如若交易为某一账户的交易,则该账户的每一笔收入或每一笔支出都可以作为一个单独的键值对。
本发明实施例中,区块链系统中的节点可以对内部设置的交易数据库进行各种写入操作,比如插入一条新的键值对、修改一条已存在的键值对、删除一条已存在的键值对等。其中,这些写入操作均可以基于交易数据库中的键来执行。下面分别描述三种可能的写入操作:
插入写入操作
若某一时刻收入10,则可以在表1所示的交易数据库中插入一条键为4(也可以为其它值,根据实际需要设置)、对应的值为10的键值对,插入写入操作对应的操作信息可以为“类型:插入,键:4”。如此,更新后的交易数据库可以如表2所示:
表2:一种插入操作对应的交易数据库的示意
键 | 值 |
1 | 10 |
2 | 20 |
3 | 30 |
4 | 10 |
修改写入操作:
基于表2所示的交易数据库,若某一时刻修改键为2的交易收入为40,则可以在表2所示的交易数据库中将键为2的键值对对应的值改为40,修改写入操作对应的操作信息可以为“类型=修改,键=2,值:40”。如此,更新后的交易数据库可以如表3所示:
表3:一种修改操作对应的交易数据库的示意
键 | 值 |
1 | 10 |
2 | 40 |
3 | 30 |
4 | 10 |
删除写入操作:
基于表3所示意的交易数据库,若某一时刻撤回键为2的交易收入,则可以在表3所示的交易数据库中将键为2的键值对删除,删除写入操作对应的操作信息可以为“类型:删除,键:2”。如此,更新后的交易数据库可以如表4所示:
表4:一种删除操作对应的交易数据库的示意
键 | 值 |
1 | 10 |
3 | 30 |
4 | 10 |
在现有技术中,每个节点均可以针对于内部的交易数据库设置一个日志列表,从而将所有的写入操作保存在日志列表中。基于上述表1~表4,节点可以在日志列表中记录如表5a所示的日志列表,或者也可以在日志列表中记录如表5b所示的日志列表,具体不作限定。
表5a:一种可能的日志列表的示意表
类型 | 键 | 值 |
插入 | 4 | 10 |
修改 | 2 | 40 |
删除 | 2 |
表5b:另一种可能的日志列表的示意表
参照表5a所示,该种日志列表是按照从上到下的顺序依次记录节点对交易数据库的写入操作,每一行数据均为一条写入操作信息;参照表5b所示,该种日志列表是按照从左到右的顺序依次记录节点对交易数据库的写入操作,每一列数据均为一条写入操作信息。
采用现有技术中的方案,在节点依次执行各个交易时,若某一个交易异常,则节点可以按照日志列表中写入操作的顺序获取该异常交易对应的写入操作,从而基于异常交易的写入操作对交易数据库进行回滚,这是没有问题的。然而,现阶段区块链系统中的节点通常采用并行方式处理交易,即同一时刻可能存在多个交易在执行,如此,日志列表中各个交易的写入操作可以是穿插的;举例来说,日志列表中第一~第五条写入操作属于交易a1的五条写入操作,第六条写入操作属于交易a2的一条写入操作,第七~第十条写入操作属于交易a1的三条写入操作,则若在执行至第十条写入操作时发现交易a1异常,则节点可以按照日志列表中的第十条写入操作~第一条写入操作对交易数据库进行回滚。由此可知,该次回滚操作在回滚异常交易a1的写入操作的同时也回滚了正常交易a2的写入操作,导致交易处理过程出错。
基于此,本发明实施例提供了一种基于区块链系统的交易处理方法,用于准确地回滚异常交易的写入操作,从而提高交易处理的准确性。
图1为本发明实施例提供的一种基于区块链系统的交易处理方法对应的流程示意图,该方法可以应用于区块链系统中的任一节点,该方法包括:
步骤101,节点在第一进程处理的第一交易异常时,确定第一进程对应的第一日志空间。
本发明实施例中,区块链系统中的任一节点在接收到交易后,可以将交易存储在节点内部设置的交易池中,同时还可以将交易同步给区块链系统中的其它节点;相应地,其它节点在接收到交易后,可以将交易存储在其它节点内部设置的交易池中。进一步地,当从区块链系统的多个节点中确定出处理交易的第一节点后,第一节点可以先创建用于处理交易的进程,比如,若第一节点支持多进程并行处理交易,则第一节点可以同时创建多个并行的进程,并可以将进程与交易的对应关系存储在进程池中,后续使用每个进程处理对应的交易;若第一节点支持单进程串行处理交易,则可以创建一个进程,并使用该进程依次处理多个交易。举例来说,若第一节点同时接收到交易1~交易10,且第一节点的中央处理器(Central Processing Unit,CPU)核数为5(即第一节点最多支持5个进程并行处理交易),则第一节点可以创建并行的进程b1~进程b5;若进程b1~进程b5的处理能力相同,则第一节点可以为进程b1分配交易1和交易2,为进程b2分配交易3和交易4,为进程b3分配交易5和交易6,为进程b4分配交易7和交易8,为进程b5分配交易9和交易10。
进一步地,第一节点在创建并行的进程b1~进程b5之后,可以从存储器中为并行的各进程分配不同的日志空间,每个进程对应的日志空间用于记录该进程在处理交易的过程中对预设数据库的操作信息;此处,预设数据库是指第一节点中的交易数据库。其中,存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static RandomAccess Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
具体实施中,第一节点可以预先在存储器中设置一块初始存储空间,在每次创建一个进程后,第一节点均可以从该初始存储空间未占用的存储空间中选取预设数据量的子存储空间作为进程对应的日志空间,如此,进程在处理交易的过程中所执行的全部写入操作均可以记录在进程对应的日志空间中。其中,子存储空间的预设数据量和初始存储空间的大小可以由本领域技术人员根据经验进行设置,或者也可以根据实际需要进行设置,具体不做限定。
举例来说,若初始存储空间占据的空间范围为00000000~10000000,预设数据量为00000010,则第一节点创建进程b1~进程b5之后,若查询初始存储空间确定空间范围00000000~00000010已被占用,则可以从00000010~10000000中选取子存储空间1~子存储空间5,并将子存储空间1~子存储空间5分别分配给进程b1~进程b5;比如,子存储空间1可以占用空间范围00000010~00000100,子存储空间2可以占用空间范围00000100~00000110,子存储空间3可以占用空间范围00000110~00001000,子存储空间4可以占用空间范围00001000~00001010,子存储空间5可以占用空间范围00001010~00001100,子存储空间1~子存储空间5中每个子存储空间可以存储00000010的数据量。
需要说明的是,上述仅是一种示例性的简单说明,其所列举的子存储空间1~子存储空间5所占用的空间范围仅是为了便于说明方案,并不构成对方案的限定,在具体实施中,子存储空间1~子存储空间5所占用的空间范围可以为从00000010~10000000中任意选取的,比如子存储空间1占用空间范围00000010~00000100,子存储空间2占用空间范围00001010~00001100,子存储空间3占用空间范围0001000~00001010,子存储空间4可以占用空间范围00000100~00000110,子存储空间5可以占用空间范围00000110~000010000,具体不作限定。
以第一进程为进程b1例,具体实施中,第一节点在将子存储空间1分配给进程b1之后,子存储空间1即为进程b1对应的日志空间,进程b1可以将后续处理的所有交易的操作信息记录在子存储空间1中;比如,若进程b1依次处理交易1和交易2,则第一节点可以将进程b1处理交易1和交易2的过程中对预设数据库的操作信息按照顺序记录在进程b1对应的日志空间中。如此,若进程b1确定其正在处理的交易2异常,则可以从子存储空间1中获取交易2的各操作信息。
在一种可能的实现方式中,为了便于查询进程对应的日志空间,第一节点还可以设置预设映射表,并使用预设映射表存储进程与日志空间的对应关系。在一种可能的实现方式中,第一节点可以采用下列方式为进程b1分配对应的日志空间:在创建进程b1后,第一节点可以先查询预设映射表确定预设映射表中是否包含进程b1对应的日志空间,若预设映射表中包含进程b1对应的日志空间,则第一节点可以直接使用进程b1对应的日志空间记录进程b1在处理交易的过程中对预设数据库的所有操作信息。相应地,若预设映射表中不包含进程b1对应的日志空间,则第一节点可以从初始存储空间当前未占用的存储空间中选取预设数据量的子存储空间作为进程b1对应的日志空间,并可以将进程b1与进程b1对应的日志空间的对应关系添加在预设映射表中;如此,第一节点可以使用进程b1对应的日志空间记录进程b1在处理交易的过程中对预设数据库的所有操作信息。
表6为本发明实施例提供的一种可能的预设映射表的示意表。
表6:一种预设映射表的示意
如表6所示,预设映射表中可以存储有进程的标识和进程对应的日志空间的起始位置和终止位置,如表6所示,进程b1对应的日志空间占用00000010~00000100范围内的空间,第一节点可以将进程b1处理交易1和交易2时对预设数据库的操作信息存储在00000010~00000100范围的空间中;进程b2对应的日志空间占用00000100~00000110范围内的空间,第一节点可以将进程b2处理交易3和交易4时对预设数据库的操作信息存储在00000100~00000110范围的空间中;进程b3对应的日志空间占用00000110~00001000范围内的空间,第一节点可以将进程b3处理交易5和交易6时对预设数据库的操作信息存储在00000110~00001000范围的空间中;进程b4对应的日志空间占用00001000~00001010范围内的空间,第一节点可以将进程b4处理交易7和交易8时对预设数据库的操作信息存储在00001000~00001010范围的空间中;进程b5对应的日志空间占用00001010~00001100范围内的空间,第一节点可以将进程b5处理交易9和交易10时对预设数据库的操作信息存储在00001010~00001100范围的空间中。
需要说明的是,操作信息在日志空间中可以以表格的形式存储,或者也可以以其它形式存储,不作限定。
本发明实施例中,通过设置预设映射表来存储进程与日志空间的对应关系,使得第一节点在确定使用进程处理交易时,可以直接查询预设映射表确定是否已为进程分配了对应的日志空间,从而可以避免为同一进程分配多个日志空间,提高对日志空间管理的灵活性。
在上述实现方式中,由于预设映射表为公共资源,若同时存在多个进程访问预设映射表,则多个进程可能需要采用竞争的方式来获取预设映射表,导致预设映射表处于不稳定状态。为了解决这个问题,在一个示例中,第一节点在设置预设映射表时,还可以为预设映射表设置锁资源;如此,第一节点从预设映射表中获取进程b1对应的日志空间之前,还可以根据预设映射表的锁资源确定预设映射表的状态,若确定预设映射表处于未锁定状态,则可以获取进程b1对应的日志空间,若确定预设映射表处于锁定状态,则可以执行等待。其中,锁资源可以以表格的形式存在,或者也可以以图的形式存在,不作限定。
表7为本发明实施例提供的一种锁资源的示意表,表7中的锁资源是以表格形式存在的。
表7:一种锁资源的示意
资源 | 状态(未锁定或锁定) |
预设映射表 | 未锁定 |
如表7所示,锁资源中可以包括预设映射表和预设映射表的状态的对应关系,若预设映射表的状态为锁定状态,则说明当前存在某一进程访问预设映射表,如此,其它进程暂时无法访问预设映射表;若预设映射表的状态为未锁定状态,则说明当前不存在进程访问预设映射表,如此,其它进程可以访问预设映射表。
具体实施中,第一节点在创建进程b1后,可以先查询确定预设映射表的状态,若确定预设映射表处于未锁定状态,则可以查询确定预设映射表中是否包含进程b1对应的日志空间,并将预设映射表的状态设置为锁定状态,以避免其它进程访问预设映射表;进一步地,当第一节点从预设映射表中获取到进程b1对应的日志空间,或者第一节点已为进程b1分配对应的日志空间且将进程b1和进程b1对应的日志空间的对应关系存储在预设映射表之后,第一节点可以将预设映射表的状态设置为未锁定状态。相应地,若确定预设映射表处于锁定状态,则第一节点可以等待至预设映射表的状态转换为未锁定状态,再查询确定预设映射表中是否包含进程b1对应的日志空间。
本发明实施例中,在第一节点使用预设映射表之前需要查询预设映射表的状态,若预设映射表处于未锁定状态时,则第一节点可以使用预设映射表为进程分配对应的预设映射表,若预设映射表处于锁定状态,则第一节点无法使用预设映射表;也就是说,通过预先为预设映射表设置锁资源,可以避免多个进程同时访问预设映射表所导致的资源冲突,且可以避免第一节点同时为多个进程分配相同的日志空间,从而保证交易处理的准确性。
步骤102,第一节点从第一日志空间获取第一交易的各操作信息。
本发明实施例中,第一节点在为进程b1分配了对应的日志空间后,可以使用进程b1对应的日志空间记录进程b1在处理交易的过程中对预设数据库的操作信息;由于进程b1按照串行方式处理交易,因此若进程b1处理多个交易,则多个交易的操作信息可以按照交易的处理顺序依次被记录在日志空间中。如此,若进程b1在处理某一交易时发现该交易异常,则第一节点可以直接从进程b1对应的日志空间中获取该异常交易的全部操作信息;由于进程b1按照串行方式处理交易,因此进程b1对应的日志空间不会存在多个交易的操作信息穿插记录的情况,从而可以保证获取到的全部为异常交易的操作信息,并能提高获取的速度。
举例来说,若进程b1依次处理交易1和交易2,处理交易1时对预设数据库的操作信息包括操作信息1和操作信息2,处理交易2时对预设数据库的操作信息包括操作信息3、操作信息4和操作信息5,则进程b1对应的日志空间可以依次记录操作信息1、操作信息2、操作信息3、操作信息4和操作信息5,如表8所示。
表8:一种进程b1对应的日志空间的示意
如此,若进程b1在处理交易2对应的操作信息4时发现交易2为异常交易,则第一节点可以从进程b1对应的日志空间中获取操作信息3和操作信息4。
具体实施中,第一节点获取异常交易对应的操作信息的方式可以有多种,比如第一节点可以将交易的标识和操作信息的对应关系记录在进程b1对应的日志空间中,如此,第一节点在确定异常交易后,可以从进程b1对应的日志空间中获取与异常交易的标识匹配的操作信息,作为异常交易的各操作信息。下面描述两种获取异常交易对应的操作信息的实现方式。
实现方式一
在实现方式一中,第一节点在进程b1处理每个交易的过程中,可以记录日志空间中每个交易对预设数据库的第一条操作信息所在的起始位置;如此,在确定某一条交易为异常交易后,第一节点可以从进程b1对应的日志空间中获取最新一条操作信息所在的位置,并可以将最新一条操作信息所在的位置和该异常交易的起始位置之间的各个操作信息确定为异常交易的各操作信息。
需要说明的是,异常交易的各操作信息包括最新一条操作信息和异常交易的起始位置对应的操作信息。
基于表8所示意的日志空间,第一节点在进程b1在处理交易1时,会记录交易1的第一条操作信息所在的位置,由于交易1的第一条操作信息为操作信息1,因此第一节点记录交易1的第一条操作信息所在的位置为第一字节;相应地,第一节点在进程b1在处理交易2时,会记录交易2的第一条操作信息所在的位置,由于交易2的第一条操作信息为操作信息3,因此第一节点记录交易2的第一条操作信息所在的位置为第三字节。如此,若进程b1在处理交易2对应的操作信息4时发现交易2为异常交易,则第一节点可以获取当前最新的操作信息所在的位置,即第四字节,并可以将第三字节和第四字节之间的操作信息(即操作信息3和操作信息4)作为异常交易2的两个操作信息。
实现方式二
在实现方式二中,第一节点在进程b1处理每个交易之前,可以记录进程b1对应的日志空间中上一交易的最后一条操作信息所在的终止位置;如此,在确定某一条交易为异常交易后,第一节点可以从进程b1对应的日志空间中获取最新一条操作信息所在的位置,并可以将最新一条操作信息所在的位置和终止位置之间的各个操作信息确定为异常交易的各操作信息。
需要说明的是,异常交易的各操作信息包括最新一条操作信息,不包括异常交易的上一交易的终止位置对应的操作信息。
基于表8所示意的日志空间,第一节点在进程b1在处理交易2之前,可以记录交易2的上一交易(即交易1)在进程b1对应的日志空间中的最后一条操作信息所在的位置,由于交易1的最后一条操作信息为操作信息2,因此第一节点记录交易1的最后一条操作信息所在的位置为第二字节。如此,若进程b1在处理交易2对应的操作信息4时发现交易2为异常交易,则第一节点可以获取当前最新的操作信息所在的位置,即第四字节,并可以将第二字节和第四字节之间的操作信息(即操作信息3和操作信息4)作为异常交易2的两个操作信息。
本发明实施例中,进程在处理每个交易时可以记录该交易在日志空间中的起始位置或上一交易在日志空间中的终止位置,如此,在某一交易发生异常时,日志空间中当前位置和该交易在日志空间中的起始位置或上一交易在日志空间中的终止位置之间的各操作信息即为该异常交易对应的各个操作信息;也就是说,通过记录每个交易在日志空间中的起始位置或上一交易在日志空间中的终止位置,可以快速且准确地获取每个交易对应的操作信息,提高基于交易对应的操作信息回滚预设数据库的准确性。
步骤103,第一节点基于第一交易的各操作信息对预设数据库进行回滚操作。
具体实施中,基于表8所示意的日志空间,若第一节点确定操作信息3和操作信息4为异常交易2的各个操作信息,则可以先使用操作信息4对预设数据库回滚,再使用操作信息3对预设数据库回滚。其中,在对预设数据库回滚完成后,预设数据库的状态与第一节点执行完操作信息2之后的预设数据库的状态相同。
进一步地,第一节点可以查询线程池确定线程池中是否还存在进程b1未处理的交易,若确定线程池中存在进程b1还未处理的交易(比如交易11),则可以继续使用进程b1处理交易11,并可以将处理交易11的过程中对预设数据库的操作信息顺序记录在进程b1对应的日志空间中,重复执行步骤101~步骤103的过程直至线程池中不存在进程b1未处理的交易为止。
在一种可能的实现方式中,若确定线程池中不存在进程b1未处理的交易,则说明进程b1已处理完对应的所有交易,如此,第一节点可以释放进程b1对应的日志空间占用的资源。基于表6所示的预设映射表,具体实施中,第一节点通过查询表6确定进程b1对应的日志空间为00000010~00000100,如此,第一节点可以清空初始存储空间中00000010~00000100的空间范围内存储的数据。
本发明实施例中,在进程处理完对应的所有交易后,通过在进程退出的同时释放进程对应的日志空间,可以降低系统资源占用情况,为后续进程对应的日志空间预留空间。
图2为本发明实施例中基于区块链系统的交易处理方法的交互流程示意图,下面结合图2对本发明实施例进行具体介绍。
本发明实施例中基于区块链系统的交易处理方法涉及后台的各个模块,具体包括:日志空间管理器、第一线程等。其中,日志空间管理器可以为软件设备,第一线程可以为区块链系统的节点中的任一线程。
步骤201,第一线程在被节点创建后,向日志空间管理器发送日志空间请求消息。
此处,节点在创建第一线程后,可以向第一线程分配对应的交易;比如,节点可以将第一线程与交易的对应关系存储在公共线程池中,以使第一节点自行访问公共线程池来获取交易;或者,节点也可以将交易发送给第一线程,由第一线程自行存储在内部空间,不作限定。
进一步地,在被节点创建后,第一线程可以向日志空间管理器发送日志空间请求消息,日志空间请求消息中可以携带第一进程的标识。
步骤202,日志空间管理器接收到第一线程发送的日志空间请求消息后,获取预设映射表的状态,确定预设映射表是否被锁定;若确定预设映射表已被锁定,则执行步骤203,若确定预设映射表未被锁定,则执行步骤204。
本发明实施例中,日志空间管理器中可以设置有预设映射表的锁资源,日志空间管理器可以通过访问预设映射表的锁资源查询预设映射表的状态,若预设映射表的状态为锁定状态,则确定预设映射表已被锁定;若预设映射表的状态为未锁定状态,则确定预设映射表未被锁定。
步骤203,日志空间管理器向第一线程发送等待指令,并监控预设映射表的状态,直至确定预设映射表由已被锁定切换为未被锁定,执行步骤204。
具体实施中,若确定预设映射表已被锁定,则说明当前存在其它进程访问预设映射表,因此日志空间管理器可以向第一进程发送等待指令,等待指令用于告知第一进程等待日志空间管理器的唤醒消息。
进一步地,日志空间管理器可以按照预设周期监控预设映射表的锁资源,比如可以每5s访问一次预设映射表的锁资源,若在某次访问过程中发现预设映射表的状态更新为未锁定状态,则可以确定当前已不存在其它进程访问预设映射表,如此,日志空间管理器可以向第一进程发送唤醒消息。
步骤204,日志空间管理器锁定预设映射表。
若预设映射表的状态为未锁定状态,说明当前时刻不存在其它进程访问预设映射表,因此,日志空间管理器可以使用预设映射表来处理第一进程的日志空间请求消息。具体操作中,日志空间管理器可以先将预设映射表的锁资源中的状态更新为锁定状态,从而避免在第一进程访问预设映射表时其它进程同时访问预设映射表。
需要说明的是,若存在多个进程同时访问预设映射表,则第一进程可以为多个进程中先竞争到锁资源的进程,或者也可以为最先向日志空间管理器发送日志空间请求消息的进程。
步骤205,日志空间管理器确定预设映射表中是否存在第一线程对应的第一日志空间,若不存在,则执行步骤206,若存在,则执行步骤207。
此处,预设映射表中可以存储有进程的标识和日志空间的位置信息的对应关系,如此,日志空间管理器可以根据第一进程的标识查询预设映射表,确定是否存在与第一进程的标识匹配的日志空间。
步骤206,日志空间管理器为第一线程分配对应的第一日志空间,并将第一线程与第一日志空间的对应关系存储在预设映射表中。
步骤207,日志空间管理器释放预设映射表的锁定状态,并为第一线程注册回调函数。
此处,日志空间管理器获取到第一线程对应的第一日志空间后,可以将预设映射表的锁资源中的状态更新为未锁定状态,如此,若存在其它进程等待预设映射表,则日志空间管理器可以唤醒其它进程。
进一步地,回调函数可以为节点中预先设置的一段软件程序,回调函数用于指示进程在退出之前释放进程对应的日志空间。相应地,日志空间管理器为第一线程注册回调函数后,回调函数可以实时监听第一线程的运行情况,若确定第一线程处理完对应的所有交易,则可以触发第一线程释放第一日志空间占用的资源。
步骤208,日志空间管理器将第一日志空间的位置信息发送给第一线程。
此处,第一日志空间的位置信息可以是指第一日志空间在初始存储空间中占用的空间范围的起始位置和终止位置。
步骤209,第一线程确定是否存在未处理的第一交易,若存在,则执行步骤210,若不存在,则执行步骤213。
在一个示例中,公共线程池中可以存储进程的标识、进程对应的交易的标识和交易的处理状态,交易的处理状态可以为未处理、已处理、异常中的任意一项。因此,第一线程在接收到对应的日志空间的位置信息后,可以查询公共线程池确定是否还存在未处理的交易。
步骤210,第一线程开始执行第一交易,并记录第一交易在第一线程对应的第一日志空间中的第一条操作信息所在的起始位置或上一交易在第一线程对应的日志空间中的最后一条操作信息所在的终止位置;且,在执行第一交易的过程中,第一线程使用第一线程对应的第一日志空间记录执行第一交易的过程中对预设数据库的操作信息。
步骤211,在执行第一交易的过程中,第一线程确定第一交易是否出现异常,若异常,则执行步骤212,若未异常,则执行步骤209。
步骤212,从第一线程对应的第一日志空间中获取第一交易的各操作信息,按照各操作信息在所在的位置的逆向顺序对预设数据库执行回滚,并在回滚完成后执行步骤209。
具体实施中,当第一交易异常时,第一线程可以从第一线程对应的第一日志空间中获取最新一条操作信息,若第一线程记录有第一交易的起始位置,则第一线程可以判断该条操作信息所在的位置是否大于或等于所述起始位置,若该条操作信息所在的位置大于或等于所述起始位置,则可以按照该条操作信息对预设数据库执行逆向操作。进一步地,在对预设数据库逆向操作完成后,获取该条操作信息的上一条操作信息,判断上一条操作信息所在的位置是否大于或等于所述起始位置,若上一条操作信息所在的位置小于所述起始位置,则可以确定回滚完成;相应地,若上一条操作信息所在的位置大于或等于所述起始位置,则可以按照上一条操作信息对预设数据库执行逆向操作,并重复执行该过程直至操作信息所在的位置小于所述起始位置。
相应地,若第一线程记录有上一交易的终止位置,则第一线程可以判断该条操作信息所在的位置是否大于所述终止位置,若该条操作信息所在的位置大于所述终止位置,则可以按照该条操作信息对预设数据库执行逆向操作。进一步地,在对预设数据库逆向操作完成后,获取该条操作信息的上一条操作信息,判断上一条操作信息所在的位置是否大于所述终止位置,若上一条操作信息所在的位置小于或等于所述终止位置,则可以确定回滚完成;相应地,若上一条操作信息所在的位置大于所述终止位置,则可以按照上一条操作信息对预设数据库执行逆向操作,并重复执行该过程直至操作信息所在的位置小于或等于所述终止位置。
步骤213,第一线程执行回调函数,释放第一日志空间所占用的资源,并退出。
在步骤207中,由于日志空间管理器向第一线程注册了回调函数,使得回调函数时刻监听第一进程的状态,因此,当第一线程对应的交易全部执行完成后,第一线程可以触发回调函数,使得回调函数释放第一进程对应的第一日志空间所占用的资源。如此,可以保证在第一进程退出的同时释放了第一进程对应的第一日志空间所占用的资源,降低资源占用率,提高系统处理效率。
本发明的上述实施例中,区块链系统中的任一节点在第一进程处理的第一交易异常时,确定第一进程对应的第一日志空间;其中,第一日志空间用于记录第一进程在处理交易的过程中对预设数据库的操作信息;节点为并行的各进程分配的日志空间不同;进一步地,节点从第一日志空间获取第一交易的各操作信息,并基于第一交易的各操作信息对预设数据库进行回滚操作。本发明实施例中,通过为并行的各进程分配不同的日志空间,使得每个进程对应一个日志空间,由于进程是基于串行方式来处理多个交易,因此,在进程对应的日志空间中,交易的操作信息是按照交易的处理顺序依次进行存储的;如此,若进程当前处理的交易发生异常,则节点可以通过查询进程对应的日志空间快速地获取到异常交易的各操作信息,从而可以基于该异常交易的各操作信息准确地对预设数据库进行回滚,提高交易处理的准确性。
针对上述方法流程,本发明实施例还提供一种基于区块链系统的交易处理装置,该装置的具体内容可以参照上述方法实施。
图3为本发明实施例提供的一种基于区块链系统地交易处理装置的结构示意图,包括:
确定模块301,用于在第一进程处理的第一交易异常时,确定所述第一进程对应的第一日志空间;其中,所述第一日志空间用于记录所述第一进程在处理交易的过程中对预设数据库的操作信息;所述装置为并行的各进程分配的日志空间不同;
获取模块302,用于从所述第一日志空间获取所述第一交易的各操作信息;
处理模块303,用于基于所述第一交易的各操作信息对所述预设数据库进行回滚操作。
可选地,所述确定模块301在第一进程处理的第一交易异常之前,所述获取模块302还用于:从预设映射表获取所述第一进程对应的所述第一日志空间;
所述处理模块303还用于:使用所述第一日志空间记录所述第一进程在处理所述第一交易的过程中对预设数据库的操作信息;
若所述获取模块302从所述预设映射表未获取到所述第一进程对应的所述第一日志空间,则所述处理模块303还用于:为所述第一进程分配所述第一日志空间,并将所述第一进程与所述第一日志空间的对应关系添加在所述预设映射表中。
可选地,所述获取模块302从预设映射表获取所述第一进程对应的所述第一日志空间之前,所述确定模块301还用于:
确定所述预设映射表处于未锁定状态;所述未锁定状态用于指示当前不存在进程使用所述预设映射表。
可选地,所述处理模块303具体用于:记录所述第一交易在所述第一日志空间中的第一条操作信息所在的初始位置或记录第二交易在所述第一日志空间中的最后一条操作信息所在的终止位置;所述第二交易为处理所述第一交易之前所述第一进程处理的交易;
所述获取模块302具体用于:根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述初始位置确定所述第一交易的各操作信息;或,所述节点根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述终止位置确定所述第一交易的各操作信息。
可选地,所述处理模块303还用于:
若确定所述第一进程处理完对应的所有交易,则释放所述第一日志空间占用的资源。
从上述内容可以看出:本发明的上述实施例中,区块链系统中的任一节点在第一进程处理的第一交易异常时,确定第一进程对应的第一日志空间;其中,第一日志空间用于记录第一进程在处理交易的过程中对预设数据库的操作信息;节点为并行的各进程分配的日志空间不同;进一步地,节点从第一日志空间获取第一交易的各操作信息,并基于第一交易的各操作信息对预设数据库进行回滚操作。本发明实施例中,通过为并行的各进程分配不同的日志空间,使得每个进程对应一个日志空间,由于进程是基于串行方式来处理多个交易,因此,在进程对应的日志空间中,交易的操作信息是按照交易的处理顺序依次进行存储的;如此,若进程当前处理的交易发生异常,则节点可以通过查询进程对应的日志空间快速地获取到异常交易的各操作信息,从而可以基于该异常交易的各操作信息准确地对预设数据库进行回滚,提高交易处理的准确性。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行如上述图1或图2任意所述的方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行如上述图1或图2任意所述的方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种基于区块链系统的交易处理方法,其特征在于,所述方法应用于所述区块链系统中的任一节点,所述方法包括:
所述节点在第一进程处理的第一交易异常时,确定所述第一进程对应的第一日志空间;其中,所述第一日志空间用于记录所述第一进程在处理交易的过程中对预设数据库的操作信息;所述节点为并行的各进程分配的日志空间不同;
所述节点从所述第一日志空间获取所述第一交易的各操作信息;
所述节点基于所述第一交易的各操作信息对所述预设数据库进行回滚操作。
2.根据权利要求1所述的方法,其特征在于,所述节点在第一进程处理的第一交易异常之前,所述方法还包括:
所述节点从预设映射表获取所述第一进程对应的所述第一日志空间,并使用所述第一日志空间记录所述第一进程在处理所述第一交易的过程中对预设数据库的操作信息;
所述节点若从所述预设映射表未获取到所述第一进程对应的所述第一日志空间,则为所述第一进程分配所述第一日志空间,并将所述第一进程与所述第一日志空间的对应关系添加在所述预设映射表中。
3.根据权利要求2所述的方法,其特征在于,所述节点从预设映射表获取所述第一进程对应的所述第一日志空间之前,还包括:
所述节点确定所述预设映射表处于未锁定状态;所述未锁定状态用于指示当前不存在进程使用所述预设映射表。
4.根据权利要求2所述的方法,其特征在于,所述节点使用所述第一日志空间记录所述第一进程在处理所述第一交易的过程中对预设数据库的操作信息,包括:
所述节点记录所述第一交易在所述第一日志空间中的第一条操作信息所在的初始位置或记录第二交易在所述第一日志空间中的最后一条操作信息所在的终止位置;所述第二交易为处理所述第一交易之前所述第一进程处理的交易;
所述节点从所述第一日志空间获取所述第一交易的各操作信息,包括:
所述节点根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述初始位置确定所述第一交易的各操作信息;或,所述节点根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述终止位置确定所述第一交易的各操作信息。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
所述节点若确定所述第一进程处理完对应的所有交易,则释放所述第一日志空间占用的资源。
6.一种基于区块链系统的交易处理装置,其特征在于,所述装置包括:
确定模块,用于在第一进程处理的第一交易异常时,确定所述第一进程对应的第一日志空间;其中,所述第一日志空间用于记录所述第一进程在处理交易的过程中对预设数据库的操作信息;所述装置为并行的各进程分配的日志空间不同;
获取模块,用于从所述第一日志空间获取所述第一交易的各操作信息;
处理模块,用于基于所述第一交易的各操作信息对所述预设数据库进行回滚操作。
7.根据权利要求6所述的装置,其特征在于,所述确定模块在第一进程处理的第一交易异常之前,所述获取模块还用于:从预设映射表获取所述第一进程对应的所述第一日志空间;
所述处理模块还用于:使用所述第一日志空间记录所述第一进程在处理所述第一交易的过程中对预设数据库的操作信息;
若所述获取模块从所述预设映射表未获取到所述第一进程对应的所述第一日志空间,则所述处理模块还用于:为所述第一进程分配所述第一日志空间,并将所述第一进程与所述第一日志空间的对应关系添加在所述预设映射表中。
8.根据权利要求7所述的装置,其特征在于,所述获取模块从预设映射表获取所述第一进程对应的所述第一日志空间之前,所述确定模块还用于:
确定所述预设映射表处于未锁定状态;所述未锁定状态用于指示当前不存在进程使用所述预设映射表。
9.根据权利要求7所述的装置,其特征在于,
所述处理模块具体用于:记录所述第一交易在所述第一日志空间中的第一条操作信息所在的初始位置或记录第二交易在所述第一日志空间中的最后一条操作信息所在的终止位置;所述第二交易为处理所述第一交易之前所述第一进程处理的交易;
所述获取模块具体用于:根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述初始位置确定所述第一交易的各操作信息;或,根据所述第一交易异常时所述第一日志空间中的最新一条操作信息所在的位置和所述终止位置确定所述第一交易的各操作信息。
10.根据权利要求6至9任一项所述的装置,其特征在于,所述处理模块还用于:
若确定所述第一进程处理完对应的所有交易,则释放所述第一日志空间占用的资源。
11.一种计算设备,其特征在于,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行权利要求1~5任一权利要求所述的方法。
12.一种计算机可读存储介质,其特征在于,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行权利要求1~5任一权利要求所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910752822.8A CN110473100B (zh) | 2019-08-15 | 2019-08-15 | 一种基于区块链系统的交易处理方法及装置 |
PCT/CN2020/109570 WO2021027956A1 (zh) | 2019-08-15 | 2020-08-17 | 一种基于区块链系统的交易处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910752822.8A CN110473100B (zh) | 2019-08-15 | 2019-08-15 | 一种基于区块链系统的交易处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110473100A CN110473100A (zh) | 2019-11-19 |
CN110473100B true CN110473100B (zh) | 2023-07-11 |
Family
ID=68511415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910752822.8A Active CN110473100B (zh) | 2019-08-15 | 2019-08-15 | 一种基于区块链系统的交易处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110473100B (zh) |
WO (1) | WO2021027956A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110473100B (zh) * | 2019-08-15 | 2023-07-11 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易处理方法及装置 |
CN111046109B (zh) * | 2019-12-27 | 2023-09-15 | 深圳市迅雷网络技术有限公司 | 一种跨链任务处理方法、装置、设备及可读存储介质 |
CN111210350A (zh) * | 2020-01-03 | 2020-05-29 | 平安科技(深圳)有限公司 | 区块链的交易方法、装置、计算机设备及存储介质 |
CN111324425B (zh) * | 2020-02-28 | 2023-03-31 | 百度在线网络技术(北京)有限公司 | 一种数据访问方法、装置、设备及存储介质 |
CN110992038B (zh) * | 2020-03-03 | 2020-08-21 | 支付宝(杭州)信息技术有限公司 | 交易处理方法、装置及设备 |
CN112433885B (zh) * | 2020-11-19 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 区块链共识处理方法及装置、电子设备、存储介质 |
CN112835687B (zh) * | 2021-01-22 | 2023-05-26 | 恒生电子股份有限公司 | 一种计算机事务处理方法及系统 |
CN114363162B (zh) * | 2021-12-31 | 2024-05-03 | 支付宝(杭州)信息技术有限公司 | 区块链日志的生成方法及装置、电子设备、存储介质 |
CN115357664B (zh) * | 2022-10-21 | 2023-03-21 | 北京航空航天大学 | 一种基于区块链的多向可信系统及数据查询方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902764A (zh) * | 2012-09-25 | 2013-01-30 | 北京奇虎科技有限公司 | 一种日志记录的方法和装置 |
US9183200B1 (en) * | 2012-08-02 | 2015-11-10 | Symantec Corporation | Scale up deduplication engine via efficient partitioning |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63307551A (ja) * | 1987-06-08 | 1988-12-15 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 先書きロギング型のトランザクシヨン向けシステム中のロールバツク方法 |
US8296271B1 (en) * | 2005-03-28 | 2012-10-23 | Federal Home Loan Mortgage Corporation | System and method for optimizing data recovery in a parallel database |
CN105278922A (zh) * | 2015-09-29 | 2016-01-27 | 新浪网技术(中国)有限公司 | 一种数据分发方法、系统及装置 |
EP3285248B1 (en) * | 2016-08-16 | 2019-07-03 | Alcatel Lucent | Blockchain-based security threat detection method and system |
CN107391628B (zh) * | 2017-06-30 | 2021-04-09 | 北京奇虎科技有限公司 | 数据同步方法及装置 |
CN110019050A (zh) * | 2017-10-19 | 2019-07-16 | 中兴通讯股份有限公司 | 一种数据回滚方法、系统、设备及计算机可读存储介质 |
CN108537543B (zh) * | 2018-03-30 | 2023-07-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN108804112B (zh) * | 2018-05-22 | 2022-02-11 | 上海分布信息科技有限公司 | 一种区块链落账处理方法及系统 |
CN110111147A (zh) * | 2019-05-07 | 2019-08-09 | 上海哈蜂信息科技有限公司 | 一种基于信任评估机制与回滚交易的商场积分方法及实现所述方法的系统 |
CN110473100B (zh) * | 2019-08-15 | 2023-07-11 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易处理方法及装置 |
-
2019
- 2019-08-15 CN CN201910752822.8A patent/CN110473100B/zh active Active
-
2020
- 2020-08-17 WO PCT/CN2020/109570 patent/WO2021027956A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9183200B1 (en) * | 2012-08-02 | 2015-11-10 | Symantec Corporation | Scale up deduplication engine via efficient partitioning |
CN102902764A (zh) * | 2012-09-25 | 2013-01-30 | 北京奇虎科技有限公司 | 一种日志记录的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110473100A (zh) | 2019-11-19 |
WO2021027956A1 (zh) | 2021-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110473100B (zh) | 一种基于区块链系统的交易处理方法及装置 | |
CN108363806B (zh) | 数据库的多版本并发控制方法、装置、服务器及存储介质 | |
CN107608773B (zh) | 任务并发处理方法、装置及计算设备 | |
CN108337911B (zh) | 在分布式计算系统中处理数据库事务 | |
US6678802B2 (en) | Method and apparatus for controlling access by a plurality of concurrently operating processes to a resource | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN107919977B (zh) | 一种基于Paxos协议的在线扩容、在线缩容的方法和装置 | |
CN110188110B (zh) | 一种构建分布式锁的方法及装置 | |
CN103558992A (zh) | 堆外直接内存数据存储器,创建和/或管理堆外直接内存数据存储器的方法,和/或包括堆外直接内存数据存储器的系统 | |
CN107533474B (zh) | 一种事务处理方法及装置 | |
JP2015514248A (ja) | 2フェーズコミットコールの厳密な順序付けに基づいたトランザクションリカバリをサポートするためのシステムおよび方法 | |
TWI733390B (zh) | 在區塊鏈中同時執行交易的方法和裝置及電腦可讀儲存媒體與計算設備 | |
US20130117526A1 (en) | Shared temporary storage management in a shared disk database cluster | |
CN107832159A (zh) | 管理分布式锁的方法和计算机可读存储介质 | |
CN110806942B (zh) | 数据处理的方法和装置 | |
CN114936188A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115599300A (zh) | 一种任务分配方法、装置、设备及介质 | |
CN114217979A (zh) | 单据处理方法、装置、计算机设备和存储介质 | |
CN104115127B (zh) | 存储系统和数据管理方法 | |
CN113157600A (zh) | 一种叠瓦式硬盘的空间分配方法、文件存储系统及服务器 | |
CN111930528A (zh) | 消息中间件的消息写入方法、装置、设备及可读存储介质 | |
CN112765151A (zh) | 基于分布式存储系统随机写方法、装置及分布式存储系统 | |
CN113918654B (zh) | 一种区块数据提交的方法及装置 | |
CN113032292B (zh) | 存储空间回收方法、数据读取方法及装置 | |
CN112068948B (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 |