CN108681565B - 区块链数据并行处理方法、装置、设备和存储介质 - Google Patents
区块链数据并行处理方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN108681565B CN108681565B CN201810403581.1A CN201810403581A CN108681565B CN 108681565 B CN108681565 B CN 108681565B CN 201810403581 A CN201810403581 A CN 201810403581A CN 108681565 B CN108681565 B CN 108681565B
- Authority
- CN
- China
- Prior art keywords
- processing request
- logic processing
- processed
- processing
- logic
- 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
- 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
Abstract
本发明实施例提供了一种区块链数据并行处理方法、装置、设备及存储介质。其中,该方法包括:从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求;识别所述下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间的依赖关系;如果不存在依赖关系,则启动所述下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理;如果存在依赖关系,则等待所述依赖关系消除后启动对所述下一个待处理逻辑处理请求的处理。本发明实施例,在兼顾逻辑处理请求的依赖关系的同时,实现了部分逻辑处理请求的并行处理,提高了处理效率。
Description
技术领域
本发明实施例涉及区块链数据处理技术,尤其涉及一种区块链数据并行处理方法、装置、设备和存储介质。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
区块链技术的一个典型应用场景是交易,主要解决的交易的信任和安全问题,所以其中一个显著特点是分布式账本。具体是,在区块链系统中的节点,将一定时间内的交易请求或者一定数量的交易请求,交付给当前具有记账权的节点;记账节点对交易请求进行诸如信息转换、格式调整、或代码运行等处理,形成账本数据,而后将多个账本数据打包形成区块;记账节点将区块发送给区块链系统中的其他节点,其他节点进行同样的处理过程,以验证处理结果得到的区块是否与接收到的区块一致,若一致则认可该区块并存储,否则不认可该区块并丢弃。当然,区块链技术不限于处理交易请求,还可以处理其他逻辑处理请求,形成事务数据,打包到区块中。
现有技术中,节点对大量逻辑处理请求进行处理形成区块或进行验证时,会存在部分逻辑处理请求之间存在依赖关系的情况,若存在依赖关系的逻辑处理请求被同时处理或处理顺序错误,则可能导致最终产生的事务数据和区块错误。
现有技术为了避免因依赖关系而导致的处理中止或错误,可采用按逻辑处理请求的接收顺序、时间顺序等对逻辑处理请求逐一进行串行处理。显然,该方案串行处理所需时间长,若节点具有多核处理器时也无法发挥出处理能力的优势,会浪费资源。
发明内容
本发明实施例提供一种区块链数据并行处理方法、装置、设备和存储介质,实现了逻辑处理请求的并行处理,提高了处理效率。
第一方面,本发明实施例提供了一种区块链数据并行处理方法,该方法包括:
从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求;
识别所述下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间的依赖关系;
如果不存在依赖关系,则启动所述下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理;
如果存在依赖关系,则等待所述依赖关系消除后启动对所述下一个待处理逻辑处理请求的处理。
第二方面,本发明实施例还提供了一种区块链数据并行处理装置,该装置包括:
逻辑处理请求确定模块,用于从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求;
依赖关系识别模块,用于识别所述下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间的依赖关系;
处理模块,用于如果不存在依赖关系,则启动所述下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理;
所述处理模块还用于如果存在依赖关系,则等待所述依赖关系消除后启动对所述下一个待处理逻辑处理请求的处理。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现第一方面中任意所述的区块链数据并行处理方法。
第四方面,本发明实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任意所述的区块链数据并行处理方法。
本发明实施例提供的区块链数据并行处理方法、装置、设备及存储介质,通过将待处理逻辑处理请求与处理中逻辑处理请求的依赖性进行精准识别,为逻辑处理请求之间依赖关系识别提供了新思路,解决了现有技术中因依赖关系识别错误导致的处理中止或错误的问题,在兼顾逻辑处理请求的依赖关系的同时,实现了部分逻辑处理请求的并行处理,提高了处理效率。
附图说明
图1是本发明实施例一中提供的一种区块链数据并行处理方法的流程图;
图2是本发明实施例二中提供的一种区块链数据并行处理方法的流程图;
图3是本发明实施例三中提供的一种区块链数据并行处理方法的流程图;
图4是本发明实施例四中提供的一种区块链数据并行处理方法的流程图;
图5是本发明实施例五中提供的一种区块链数据并行处理装置的结构示意图;
图6是本发明实施例六中提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种区块链数据的并行处理方法的流程图。该方法应用于区块链系统中的节点,区块链可以是公有链、联盟链或私有链,区块链系统通常都会包括多个节点,各个节点按照设定规则会竞争取得区块生成权,成为区块生成节点。本发明实施例的方案可以适用于区块生成节点进行区块生成过程的逻辑处理请求并行处理,也可以适用于其他的区块记录节点对区块进行验证过程中并行处理逻辑处理请求。该方法可以由本发明实施例提供的区块链数据并行处理装置来执行,该装置可采用软件和/或硬件的方式实现,并可集成于承载区块链系统节点的计算设备中。参见图1,该方法具体包括:
S110,从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求。
其中,待处理逻辑处理请求为区块链系统中的一段时间内待处理的交易请求或其他待处理事物请求如待版权登记信息处理请求等。
任务队列是指将区块链系统中当前待处理逻辑处理请求按照一定顺序确定的队列。即,在S110之前,还包括将当前待处理逻辑处理请求按请求发生顺序、接收时间顺序、或转账金额手续费顺序进行排列,得到当前待处理逻辑处理请求的任务队列。
队列顺序具体可以按照节点接收到逻辑处理请求的接收时间顺序,或按照逻辑处理请求中记录的请求产生的时间顺序,也可以按照转账金额手续费的数额大小顺序进行排序。当然,实际应用中也可采用其他顺序,例如随机顺序,只要最终能够确定具有一定顺序的任务队列即可。
示例性的,节点处理器中配置有任务分配游标,该任务分配游标设置于当前待处理逻辑处理请求的任务处理队列上,沿任务队列顺序移动。当任务分配游标当前指向的逻辑处理请求被处理时,任务分配游标移动至下一个逻辑处理请求处。需要说明的是,节点启动记账处理时,控制任务分配游标首先定位于第一个逻辑处理请求处。
S120,识别下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间是否存在依赖关系。如果不存在依赖关系,则执行步骤S130;如果存在依赖关系,则执行步骤S140。
其中,当前处理中的逻辑处理请求是指当前处于处理状态的逻辑处理请求,该逻辑处理请求可以是一个或多个。
对于交易请求,按照交易请求的数据展现方式和记账处理方式,可分为比特币形式或以太坊方式等。可以通过对交易请求数据本身的分析来确定交易请求之间的依赖关系,也可以识别或估测交易请求的特点,从而估测交易请求之间的依赖性关系。
例如,对于比特币方式的交易请求,以比特币的流入和流出体现每笔交易请求,字段内容的可读性比较强,可根据每笔交易请求的数据字段和内容识别出各交易请求之间的依赖关系,例如通过流出账户地址来识别。示例性的,从各待处理交易请求中识别设定字段内容,根据各设定字段内容确定下一个待处理交易请求,与当前处理中交易请求之间的依赖关系。其中,设定字段内容为流出账户地址,且流出账户地址相同的两个交易请求之间确定为存在依赖关系。
再例如,对于以太坊方式的交易请求,可以通过解析代码段中的特定内容,获取交易请求的某个交易属性,如交易货币的类型。若货币类型不相同,则可判断是无依赖的,否则判断是有依赖的。可选的,对于代码段形成的逻辑处理请求,代码段中通常涉及要运行的函数,函数的运行过程中会对某个或某些变量进行调整,即新的赋值等操作。可以通过统计或估计逻辑处理请求中的函数及其会被调整的变量,而后识别两个逻辑处理请求之间是否存在重叠的调整变量,若是,则说明这两个逻辑处理请求的运行过程会对相同的变量进行调整,这样将造成变量数据错误,所以是有依赖关系不能并行处理的情况。对于逻辑处理请求中的调整变量,优选可通过历史逻辑处理请求来训练神经网络模型,从而确定每个逻辑处理请求中的调整变量,以及该变量可能被调整的概率。将概率大于设定阈值的变量确定为最终调整变量,用于识别逻辑处理请求之间的依赖关系。
S130,启动下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理。
其中,若下一个待处理逻辑处理请求与当前处理中的一个或多个逻辑处理请求之间无依赖关系,则将下一个待处理逻辑处理请求分配给处理器进行处理,同时记录其当前处于处理中的状态,并且可以控制任务分配游标按顺序移动至下一个逻辑处理请求处。
S140,等待依赖关系消除后启动对下一个待处理逻辑处理请求的处理。
其中,依赖关系消除是指与下一个待处理逻辑处理请求存在依赖关系的当前处理中的逻辑处理请求已处理完成。
如果下一个待处理逻辑处理请求与当前处理中的一个或多个逻辑处理请求之间存在依赖关系,则控制任务分配游标停止移动,且不将该任务分配游标所指向的下一个待处理逻辑处理请求分配给处理器进行处理,进行等待,直到被依赖的逻辑处理请求处理完成,即依赖关系消除后,启动对下一待处理逻辑处理请求的处理。
本发明实施例提供的区块链数据并行处理方法,通过将待处理逻辑处理请求与处理中逻辑处理请求的依赖性进行精准识别,为逻辑处理请求之间依赖关系识别提供了新思路,解决了现有技术中因依赖关系识别错误导致的处理中止或错误的问题,在兼顾逻辑处理请求的依赖关系的同时,实现了部分逻辑处理请求的并行处理,提高了处理效率。
实施例二
图2为本发明实施例二提供的一种区块链数据并行处理方法的流程图。本实施例以上述实施例一为基础,进一步对识别下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间的依赖关系及存在依赖关系是如何处理进行解释说明。参见图2,该方法具体包括:
S210,从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求。
S220、根据下一个待处理逻辑处理请求的调整变量,在状态哈希表中查找相同的变量;
S230、将相同变量所对应的逻辑处理请求确定为存在依赖关系的逻辑处理请求。如果存在依赖关系,则执行步骤S240;如果不存在依赖关系,则执行S270。
其中,所述状态哈希表中包括当前处理中逻辑处理请求的至少一个键值对(Key-Value),每个所述键值对包括逻辑处理请求的哈希值和一个调整变量。
具体的,本实施例中的状态哈希表中,记录了所有当前处理中的逻辑处理请求的信息,每个处理中逻辑处理请求包括至少一个键值对,该键值对记录的是该逻辑处理请求的哈希值和一个调整变量。哈希值是基于逻辑处理请求的基本信息进行哈希运算得到的,相当于逻辑处理请求的标识,可进行唯一签名,比如通过SHA256计算得到的。调整变量是运行代码类逻辑处理请求中大概率会调整的变量。每个逻辑处理请求的调整变量可以为一个或多个,则有一个或多个键值对。
采用下一个待处理逻辑处理请求的调整变量,分别与状态哈希表中的键值对内的调整变量进行比较,如果有相同的变量,则说明下一个待处理逻辑处理请求与当前处理中逻辑处理请求有依赖关系。
本领域技术人员可以理解,键值对中存储的可不限于是调整变量,也可以增加或替代为其他的能够影响逻辑处理请求依赖关系的参数。例如,对于比特币形式的逻辑处理请求,键值对可以存储交易请求的输出账户名称,若输出账户名称存在相同情况,也说明两个交易请求是存在依赖关系。
在本发明实施例的技术方案中,状态哈希表的使用方式不限于上述情况,例如还可以是:根据状态哈希表中记录的当前处理中逻辑处理请求的哈希值查找对应的至少一个逻辑处理请求;识别下一个待处理逻辑处理请求与当前处理中逻辑处理请求之间是否存在依赖关系。
上述方案中,哈希表中存储有处理中状态的逻辑处理请求,且具体存储的是逻辑处理请求的哈希值,例如将逻辑处理请求的账号等基础信息,或者全部信息计算出哈希值,哈希值与逻辑处理请求一一对应。例如,可以将逻辑处理请求的数据映射为整数值即为逻辑处理请求的哈希值。或,将逻辑处理请求的地址数据映射为较小的整数值作为哈希值。将分配处理的逻辑处理请求的哈希值存储至状态哈希表中,当该逻辑处理请求处理完成时,将其哈希值从状态哈希表中清除。示例性的,为了快速响应逻辑处理请求的处理,可预先计算任务队列中待处理的逻辑处理请求对应的哈希值,并存储在预先设置的待处理数据表中。当确定了待处理逻辑处理请求后,直接从该表中获取。通过状态哈希表中的哈希值,可以对应查找到当前处理中的逻辑处理请求。
S240,将下一个待处理逻辑处理请求添加至监听队列。
其中,监听队列是指专门用于存储与当前处理中逻辑处理请求存在依赖关系的逻辑处理请求。需要说明的是,监听队列在不同语言中有不同的实现方式,如在C/C++,Java等语言里面有类似pthread_cond_wait之类的条件锁的API解决,在go语言里面直接通过channel支持。
S250,当前处理中逻辑处理请求处理完毕时,将对应的键值对从状态哈希表中清除,并激活监听队列。
需要说明的是,当把下一个待处理逻辑处理请求添加至监听队列后,监测队列就启动监听与下一个待处理逻辑处理请求存在依赖关系的当前处理中的逻辑处理请求的处理状态,且下一个待处理逻辑处理请求处于等待状态。激活监听队列是用于激活监听队列的设定功能,具体到本案,即激活对监听队列中的逻辑处理请求再次识别依赖关系。
当节点监测到与下一个待处理逻辑处理请求存在依赖关系的当前处于处理中的一个或多个逻辑处理请求的状态变为处理完时,将处理完的逻辑处理请求对应的哈希值或键值对从哈希状态表中清除。同时,激活监听队列。
S260,从监听队列中提取下一个待处理逻辑处理请求,返回执行下一个待处理逻辑处理请求与当前处理中逻辑处理请求的依赖关系识别操作。
具体的,由于逻辑处理请求可能与多个处理中的逻辑处理请求存在依赖关系,所以当一个逻辑处理请求处理完成时,需要再次将下一个待处理逻辑处理请求与当前处理中逻辑处理请求进行依赖关系识别,直至确定无依赖关系,以避免出现错误。一直重复至所有的逻辑处理请求处理完。
S270,启动下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理。
下面进行举例说明,当前待处理逻辑处理请求的任务队列中存在逻辑处理请求1,2,3和4。
具体的操作过程如下:当节点启动区块生成处理或验证处理时,任务分配游标指向逻辑处理请求1,状态机中暂无处理中逻辑处理请求,所以判断逻辑处理请求1所依赖的逻辑处理请求为无;将逻辑处理请求1分配给处理器进行处理,并在状态机中记录逻辑处理请求1的状态为处理中;控制任务分配游标移动至逻辑处理请求2处,判断逻辑处理请求2与当前处理中逻辑处理请求1是否存在依赖关系;若不存在依赖关系,则将逻辑处理请求2分配给其他处理器进行并行处理,并在状态机中记录逻辑处理请求2的状态为处理中;控制任务分配游标移动至逻辑处理请求3处,判断逻辑处理请求3与当前处理中的逻辑处理请求1和2是否存在依赖关系;若逻辑处理请求3依赖于当前处理中逻辑处理请求1,则控制任务分配游标停止移动,且不分配处理器处理逻辑处理请求3,将逻辑处理请求3添加至监听队列中;当被依赖的逻辑处理请求1的状态变更为处理完时,从状态哈希表中清空其哈希值,激活监听队列,再次识别逻辑处理请求3与处理中的逻辑处理请求2是否存在依赖关系,若无依赖关系,则将逻辑处理请求3分配给其他处理器进行处理,并在状态机中记录逻辑处理请求3的状态为处理中。直至所有逻辑处理请求处理完成。
需要说明的是,在上述过程中,在逻辑处理请求3等待处理时,后续逻辑处理请求也可选的处于等待状态中。
本发明实施例提供的区块链数据并行处理方法,基于状态机来监控逻辑处理请求的处理状态,从而实现部分逻辑处理请求的并行处理。同时采用监听的方式对依赖于处理中逻辑处理请求进行实时监听,最终提高了处理效率。
实施例三
图3为本发明实施例三提供的一种区块链数据并行处理方法的流程图。本实施例以上述实施例为基础,进一步对如果本地节点为区块生成节点,则在进行区块链数据并行处理的过程中的步骤进行解释说明。具体的,参见图3,该方法可以包括:
S310,从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求。
S320,识别下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间是否存在依赖关系。如果不存在依赖关系,则执行步骤S330;如果存在依赖关系,则执行步骤S360。
S330,启动下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理。
S340,记录逻辑处理请求的处理顺序,形成顺序图谱。
其中,顺序图谱为记录处理逻辑处理请求顺序的图谱。当本地节点为有区块生成权的区块生成节点时,为了便于区块链系统中其他节点快速的处理逻辑处理请求,当区块生成节点对逻辑处理请求进行并行处理的同时,将其处理逻辑处理请求的顺序记录下来,形成顺序图谱。
S350,将处理完的逻辑处理请求形成的区块,在区块链系统中发送给其他节点时,发送顺序图谱,以指示其他节点根据顺序图谱进行逻辑处理请求的并行处理。
具体的,由于其他区块记录节点接收到区块生成节点发送的区块后,也会进行与区块生成节点相同的处理过程,因此为了使其他节点能快速的处理逻辑处理请求,以便区块生成节点处理得到的区块能够快速被验证是否正确,当区块生成节点将区块发送给区块链系统中其他节点时,将其记录处理逻辑处理请求的顺序即顺序图谱一并发送。
此外,需要说明的是,本实施例中的步骤S330与S340和步骤S350可同时执行。
S360,等待依赖关系消除后启动对下一个待处理逻辑处理请求的处理。
本发明实施例提供的逻辑处理请求处理方法,基于区块生成节点对逻辑处理请求的并行处理情况,确定区块链系统中其他节点并行处理顺序,加快了其他节点进行逻辑处理请求的处理速度,使得区块生成节点处理得到的区块能够快速被验证。
实施例四
图4为本发明实施例四提供的一种区块链数据并行处理方法的流程图,该方法在上述实施例的基础上,对并行处理结果进行验证。具体的,参见图4,该方法可以包括:
S410,从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求。
S420,识别下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间是否存在依赖关系。如果不存在依赖关系,则执行步骤S430;如果存在依赖关系,则执行步骤S450。
S430,启动下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理。
S440,若监测到逻辑处理请求的数据处理错误,则对已处理和/或处理中的逻辑处理请求进行回滚处理。
其中,数据处理错误可以是由于对各逻辑处理请求之间的依赖关系识别错误所至,也可能是进行某一逻辑处理请求处理时,数据出现异常所至。回滚操作可以是全部逻辑处理请求完成重新执行,且串行处理,以避免依赖;也可以是局部回滚。
示例性的,若监测到逻辑处理请求的数据处理错误,则对已处理和/或处理中的逻辑处理请求进行回滚处理可以包括:若监测到当前处理中的至少两个逻辑处理请求存在依赖关系,则将存在依赖关系的至少两个逻辑处理请求进行串行处理;或者若监测到当前处理中逻辑处理请求对已处理逻辑处理请求的数据存在影响,则回滚处理所有逻辑处理请求或被影响的已处理逻辑处理请求。
当监测到数据处理错误时,存在已完成处理的逻辑处理请求、当前处理中的逻辑处理请求以及未进行处理的逻辑处理请求三个状态。若当前处理中的至少两个逻辑处理请求存在依赖关系,则说明逻辑处理请求的哈希值计算出错导致依赖关系识别错误,或者调度出错,将本不该同时处理的逻辑处理请求同时处理了。此时,需将具有依赖关系的逻辑处理请求按照依赖关系和接收逻辑处理请求时间进行串行处理。
若监测到当前处理中逻辑处理请求对已处理逻辑处理请求的数据存在影响,则需要回滚至第一个逻辑处理请求处重新串行处理全部逻辑处理请求。若在执行到错误的逻辑处理请求时,发现错误数据得到更正,则后续的逻辑处理请求仍然可采用前述基于状态机的方式来并行处理。若执行到错误逻辑处理请求时,发现错误数据没有得到更正,则按照当前串行处理方法直至所有逻辑处理请求处理完为止。
此外,需要说明的是,本实施例中的步骤S430和步骤S440可同时执行,上述只是给出了一种情况。
S450,等待依赖关系消除后启动对下一个待处理逻辑处理请求的处理。
本发明实施例提供的区块链数据并行处理方法,通过将待处理逻辑处理请求与处理中逻辑处理请求的依赖性进行精准识别,在兼顾逻辑处理请求的依赖关系的同时,实现了部分逻辑处理请求的并行处理。之后,为了保障数据处理的正确性,对逻辑处理处理结果进行了验证。
实施例五
图5为本发明实施例五提供的一种区块链数据并行处理装置的结构框图,该装置可执行本发明任意实施例所提供的区块链数据并行处理方法,具备执行方法相应的功能模块和有益效果。如图5所示,该装置可以包括:
逻辑处理请求确定模块510,用于从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求;
依赖关系识别模块520,用于识别下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间的依赖关系;
处理模块530,用于如果不存在依赖关系,则启动下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理;
处理模块530还用于如果存在依赖关系,则等待依赖关系消除后启动对下一个待处理逻辑处理请求的处理。
本发明实施例提供的区块链数据并行处理装置,通过将待处理逻辑处理请求与处理中逻辑处理请求的依赖性进行精准识别,为逻辑处理请求之间依赖关系识别提供了新思路,解决了现有技术中因依赖关系识别错误导致的处理中止或错误的问题,在兼顾逻辑处理请求的依赖关系的同时,实现了部分逻辑处理请求的并行处理,提高了处理效率。
示例性的,上述装置还可以包括:
任务队列确定模块,用于将当前待处理逻辑处理请求按请求发生顺序、接收时间顺序、或转账金额手续费顺序进行排列,得到当前待处理逻辑处理请求的任务队列。
可选的,依赖关系识别模块520具体用于:
根据状态哈希表中记录的当前处理中逻辑处理请求的哈希值查找对应的至少一个逻辑处理请求;识别下一个待处理逻辑处理请求与当前处理中逻辑处理请求之间的依赖关系。
或者,依赖关系识别模块520具体用于:根据下一个待处理逻辑处理请求的调整变量,在状态哈希表中查找相同的变量;将相同变量所对应的逻辑处理请求确定为存在依赖关系的逻辑处理请求;其中,状态哈希表中包括当前处理中逻辑处理请求的至少一个键值对,每个键值对包括逻辑处理请求的哈希值和一个调整变量。
可选的,处理模块530还可用于:
如果存在依赖关系,则将下一个待处理逻辑处理请求添加至监听队列;当前处理中逻辑处理请求处理完毕时,将对应的哈希值或键值对从状态哈希表中清除,并激活监听队列;从监听队列中提取下一个待处理逻辑处理请求,返回执行下一个待处理逻辑处理请求与当前处理中逻辑处理请求的依赖关系识别操作。
示例性的,上述装置还可以包括:
顺序图谱确定模块,用于如果本地节点为区块生成节点,则在进行逻辑处理请求并行处理的过程中,记录逻辑处理请求的处理顺序,形成顺序图谱;
发送模块,用于将处理完的逻辑处理请求形成的区块,在区块链系统中发送给其他节点时,发送顺序图谱,以指示其他节点根据所述顺序图谱进行逻辑处理请求的并行处理。
示例性的,上述装置还可以包括:
回滚处理模块,用于对逻辑处理请求进行并行处理的同时或之后,若监测到逻辑处理请求的数据处理错误,则对已处理和/或处理中的逻辑处理请求进行回滚处理。
可选的,回滚模块具体可以用于:
若监测到当前处理中的至少两个逻辑处理请求存在依赖关系,则将存在依赖关系的至少两个逻辑处理请求进行串行处理;或
若监测到当前处理中逻辑处理请求对已处理逻辑处理请求的数据存在影响,则回滚处理所有逻辑处理请求或被影响的已处理逻辑处理请求。
实施例六
图6为本发明实施例六提供的一种设备的结构示意图。图6示出了适于用来实现本发明实施方式的示例性设备12的框图。图6显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型的是承担区块链系统节点功能的计算设备。
如图6所示,该设备12以通用计算设备的形式表现,可以是区块链系统中的节点。该设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网
(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的区块链数据并行处理方法。
实施例七
本发明实施例七还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述实施例中任意的区块链数据并行处理方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上述实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间的相同或相似的部分互相参见即可。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种区块链数据并行处理方法,应用于区块链系统中的节点,其特征在于,包括:
从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求;
对于代码段形式的逻辑处理请求,通过是否存在交叠的调整变量,识别所述下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间的依赖关系,其中,所述逻辑处理请求中的调整变量是代码段中运行函数所调整的变量,是通过历史逻辑处理请求训练神经网络模型,从而确定每个逻辑处理请求中的调整变量以及被调整的概率,将概率大于设定阈值的变量确定为最终的调整变量;
如果不存在依赖关系,则启动所述下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理;
如果存在依赖关系,则等待所述依赖关系消除后启动对所述下一个待处理逻辑处理请求的处理。
2.根据权利要求1所述的方法,其特征在于,从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求之前,还包括:
将当前待处理逻辑处理请求按请求发生顺序、接收时间顺序、或转账金额手续费顺序进行排列,得到当前待处理逻辑处理请求的任务队列。
3.根据权利要求1所述的方法,其特征在于,对于代码段形式的逻辑处理请求,通过是否存在交叠的调整变量,识别所述下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间的依赖关系,包括:
根据状态哈希表中记录的当前处理中逻辑处理请求的哈希值查找对应的至少一个逻辑处理请求;
对于代码段形式的逻辑处理请求,通过是否存在交叠的调整变量,识别所述下一个待处理逻辑处理请求与当前处理中逻辑处理请求之间的依赖关系。
4.根据权利要求1所述的方法,其特征在于,对于代码段形式的逻辑处理请求,通过是否存在交叠的调整变量,识别所述下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间的依赖关系,包括:
根据所述下一个待处理逻辑处理请求的调整变量,在状态哈希表中查找相同的变量;
将相同变量所对应的逻辑处理请求确定为存在依赖关系的逻辑处理请求;
其中,所述状态哈希表中包括当前处理中逻辑处理请求的至少一个键值对,每个所述键值对包括逻辑处理请求的哈希值和一个调整变量。
5.根据权利要求3或4所述的方法,其特征在于,如果存在依赖关系,则等待所述依赖关系消除后启动对所述下一个待处理逻辑处理请求的处理,包括:
如果存在依赖关系,则将所述下一个待处理逻辑处理请求添加至监听队列;
当前处理中逻辑处理请求处理完毕时,将对应的哈希值或键值对从状态哈希表中清除,并激活监听队列;
从监听队列中提取所述下一个待处理逻辑处理请求,返回执行所述下一个待处理逻辑处理请求与当前处理中逻辑处理请求的依赖关系识别操作。
6.根据权利要求1-4任一所述的方法,其特征在于,如果本地节点为区块生成节点,则在进行逻辑处理请求并行处理的过程中,还包括:
记录逻辑处理请求的处理顺序,形成顺序图谱;
相应的,将处理完的逻辑处理请求形成的区块,在区块链系统中发送给其他节点时,还包括:发送所述顺序图谱,以指示其他节点根据所述顺序图谱进行逻辑处理请求的并行处理。
7.根据权利要求1-4任一所述的方法,其特征在于,对逻辑处理请求进行并行处理的同时或之后,还包括:
若监测到逻辑处理请求的数据处理错误,则对已处理和/或处理中的逻辑处理请求进行回滚处理。
8.根据权利要求7所述的方法,其特征在于,若监测到逻辑处理请求的数据处理错误,则对已处理和/或处理中的逻辑处理请求进行回滚处理,包括:
若监测到当前处理中的至少两个逻辑处理请求存在依赖关系,则将存在依赖关系的至少两个逻辑处理请求进行串行处理;或
若监测到当前处理中逻辑处理请求对已处理逻辑处理请求的数据存在影响,则回滚处理所有逻辑处理请求或被影响的已处理逻辑处理请求。
9.一种区块链数据并行处理装置,其特征在于,包括:
逻辑处理请求确定模块,用于从当前待处理逻辑处理请求的任务队列中,确定下一个待处理逻辑处理请求;
依赖关系识别模块,用于对于代码段形式的逻辑处理请求,通过是否存在交叠的调整变量,识别所述下一个待处理逻辑处理请求,与当前处理中逻辑处理请求之间的依赖关系,其中,所述逻辑处理请求中的调整变量是代码段中运行函数所调整的变量,是通过历史逻辑处理请求训练神经网络模型,从而确定每个逻辑处理请求中的调整变量以及被调整的概率,将概率大于设定阈值的变量确定为最终的调整变量;
处理模块,用于如果不存在依赖关系,则启动所述下一个待处理逻辑处理请求与当前处理中逻辑处理请求的并行处理;
所述处理模块还用于如果存在依赖关系,则等待所述依赖关系消除后启动对所述下一个待处理逻辑处理请求的处理。
10.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的区块链数据并行处理方法。
11.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一所述的区块链数据并行处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810403581.1A CN108681565B (zh) | 2018-04-28 | 2018-04-28 | 区块链数据并行处理方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810403581.1A CN108681565B (zh) | 2018-04-28 | 2018-04-28 | 区块链数据并行处理方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108681565A CN108681565A (zh) | 2018-10-19 |
CN108681565B true CN108681565B (zh) | 2020-11-10 |
Family
ID=63801953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810403581.1A Active CN108681565B (zh) | 2018-04-28 | 2018-04-28 | 区块链数据并行处理方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108681565B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019072303A2 (en) * | 2018-12-28 | 2019-04-18 | Alibaba Group Holding Limited | EXECUTING PARALLEL TRANSACTIONS IN A BLOCK CHAINS NETWORK |
PL3566391T3 (pl) | 2018-12-28 | 2021-10-18 | Advanced New Technologies Co., Ltd. | Równoległe wykonywanie transakcji w sieci łańcucha bloków na podstawie białych list inteligentnych umów |
CN110163609B (zh) * | 2019-05-28 | 2024-02-27 | 深圳前海微众银行股份有限公司 | 一种区块链中数据处理方法及装置 |
CN110490742B (zh) * | 2019-08-13 | 2024-04-12 | 深圳前海微众银行股份有限公司 | 一种区块链中的交易执行方法及装置 |
CN110704112B (zh) * | 2019-08-30 | 2021-04-02 | 创新先进技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN110689344B (zh) * | 2019-08-30 | 2021-04-09 | 创新先进技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN110706101B (zh) * | 2019-08-30 | 2021-06-29 | 创新先进技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN110516463B (zh) * | 2019-09-02 | 2021-03-05 | 北京海益同展信息科技有限公司 | 用于生成信息的方法和装置 |
CN110806923B (zh) * | 2019-10-29 | 2023-02-24 | 百度在线网络技术(北京)有限公司 | 一种区块链任务的并行处理方法、装置、电子设备和介质 |
CN111061485A (zh) * | 2019-12-03 | 2020-04-24 | 华控清交信息科技(北京)有限公司 | 任务处理方法、编译器、调度服务器和介质 |
CN111190862B (zh) * | 2019-12-28 | 2023-06-30 | 广州创想云科技有限公司 | 区块链的实现方法 |
CN112286828B (zh) * | 2020-12-24 | 2021-07-06 | 支付宝(杭州)信息技术有限公司 | 一种区块链智能合约的测试方法和系统 |
CN113760400A (zh) * | 2021-01-13 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种请求处理方法和装置 |
CN114244536A (zh) * | 2022-02-24 | 2022-03-25 | 恒生电子股份有限公司 | 一种区块链的业务处理方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018100456A1 (en) * | 2016-12-01 | 2018-06-07 | Centipede Semi Ltd. | Memory access control for parallelized processing |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8549265B2 (en) * | 2008-08-15 | 2013-10-01 | Apple Inc. | Processing vectors using wrapping shift instructions in the macroscalar architecture |
CN107358420B (zh) * | 2017-06-09 | 2020-08-11 | 北京博晨技术有限公司 | 用于实现热点账户的区块链系统以及实现热点账户的方法 |
CN107392608B (zh) * | 2017-07-11 | 2020-07-07 | 北京博晨技术有限公司 | 基于区块链系统的数字资产交易方法及区块链系统 |
CN107578338B (zh) * | 2017-07-26 | 2021-06-04 | 创新先进技术有限公司 | 一种业务发布方法、装置及设备 |
CN107688500B (zh) * | 2017-07-26 | 2021-12-24 | 创新先进技术有限公司 | 一种分布式任务处理方法、装置、系统及设备 |
CN107688999B (zh) * | 2017-08-11 | 2020-11-13 | 杭州溪塔科技有限公司 | 一种基于区块链的并行交易执行方法 |
US20190079972A1 (en) * | 2017-09-13 | 2019-03-14 | Electronics And Telecommunications Research Institute | System and method for parallel query processing based on jit compilation |
-
2018
- 2018-04-28 CN CN201810403581.1A patent/CN108681565B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018100456A1 (en) * | 2016-12-01 | 2018-06-07 | Centipede Semi Ltd. | Memory access control for parallelized processing |
Also Published As
Publication number | Publication date |
---|---|
CN108681565A (zh) | 2018-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108681565B (zh) | 区块链数据并行处理方法、装置、设备和存储介质 | |
CN108537543B (zh) | 区块链数据的并行处理方法、装置、设备和存储介质 | |
CN108595157B (zh) | 区块链数据的处理方法、装置、设备和存储介质 | |
CN109144696B (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
CN108958787B (zh) | 区块链系统升级方法、装置、设备及存储介质 | |
EP3373543A1 (en) | Service processing method and apparatus | |
CN108696589B (zh) | 区块链数据传输方法、装置、设备和存储介质 | |
CN111275438B (zh) | 区块链网络的共识方法、装置、设备和存储介质 | |
CN112953981A (zh) | 节点选择方法、区块链共识方法及装置、系统、设备 | |
CN109144697B (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN109995523B (zh) | 激活码管理方法及装置、激活码生成方法及装置 | |
CN110581887B (zh) | 数据处理方法、装置、区块链节点及存储介质 | |
US11210003B2 (en) | Method, device and computer program product for restoring data based on replacing child node identifiers with parent node identifier | |
CN111880967A (zh) | 云场景下的文件备份方法、装置、介质和电子设备 | |
CN108665272A (zh) | 区块链数据处理方法、装置、设备和存储介质 | |
CN110830234A (zh) | 一种用户流量分配方法及装置 | |
CN111625592A (zh) | 分布式数据库的负载均衡方法和装置 | |
US8719622B2 (en) | Recording and preventing crash in an appliance | |
CN111930489A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN109858285B (zh) | 区块链数据的处理方法、装置、设备和介质 | |
CN109919768B (zh) | 区块生成方法、装置、介质和计算设备 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN113448770A (zh) | 用于恢复数据的方法、电子设备和计算机程序产品 | |
CN111708812A (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 |