CN110191156A - 一种基于区块链的数据处理方法及装置 - Google Patents
一种基于区块链的数据处理方法及装置 Download PDFInfo
- Publication number
- CN110191156A CN110191156A CN201910379418.0A CN201910379418A CN110191156A CN 110191156 A CN110191156 A CN 110191156A CN 201910379418 A CN201910379418 A CN 201910379418A CN 110191156 A CN110191156 A CN 110191156A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- structural body
- indication information
- length
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
本发明公开了一种基于区块链的数据处理方法及装置,其中,方法包括:第一节点获取第一业务数据,根据第一节点的配置信息,将第一业务数据转换为具有预设数据格式的第一字节流并发送给第二节点,第二节点将第一字节流根据第二节点的配置信息转化为第二业务数据,其中,预设数据格式包括位置指示信息长度、依序设置的各结构体的位置指示信息及用于记录各结构体承载的数据的数据信息,位置指示信息用于指示结构体承载的数据在字节流中的位置。本技术方案用以解决发送方节点的存储数据量大,工作耗能多的问题。
Description
技术领域
本发明实施例涉及金融科技(Fintech)领域,尤其涉及一种基于区块链(BlockChain)的数据处理方法及装置。
背景技术
区块链是由一系列区块组成的一条链,每个区块记录本块的数据及上一块的哈希值,所有区块通过这种方式前后相继组成一条链。区块链所基于的密码学技术和去中心化思想使链上的历史信息无法被篡改。
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,区块链传输技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对技术提出的更高的要求。
SDK(Software Development Kit,软件开发工具包)通过节点进行通信,此场景中序列化和反序列化逻辑在节点层实现,SDK提供业务数据(内含一个或多个结构体)给节点进行序列化处理,并从节点获取反序列化之后的业务数据。若发送方节点和接收方节点的数据格式不同,发送方节点需要根据接收方节点的数据格式,将数据格式转换为接收方节点的数据格式后进行发送,发送方节点需要存储区块链系统中所有接收方节点的配置信息,以获取接收方节点的数据格式,并在发送前完成数据格式的转换。此方案中,发送方节点的存储数据量大,工作耗能多,且在网络动态变化时,对节点的管理要求高。
发明内容
本发明实施例提供一种基于区块链的数据处理方法及装置,用以解决发送方节点的存储数据量大,工作耗能多的问题。
本发明实施例提供的一种基于区块链的数据处理方法,包括:
第一节点获取第一业务数据;所述第一业务数据包括多个第一结构体;
所述第一节点根据所述第一节点的配置信息,将所述第一业务数据转换为具有预设数据格式的第一字节流并发送给第二节点;所述配置信息包括节点的版本号和节点的位置指示信息长度;所述预设数据格式包括位置指示信息长度、依序设置的各结构体的位置指示信息及用于记录各结构体承载的数据的数据信息;所述位置指示信息用于指示结构体承载的数据在字节流中的位置;所述预设数据格式用于所述第二节点将所述第一字节流根据所述第二节点的配置信息转化为第二业务数据;所述第二业务数据包括多个第二结构体。
上述技术方案中,第一节点根据节点的配置信息将第一业务数据转化为第一字节流,第一字节流中包括位置指示信息和数据信息,位置指示信息用于指示结构体承载的数据在字节流中的位置,通过该方式,第一节点可以将第一业务数据中各结构体的变长字段转化为定长字段,以使得第二节点可以处理该数据格式的第一字节流,且可以使用位置指示信息中的索引对变长数据进行查找,从而实现数据的反序列化。也就是说,第一节点只需要将第一业务数据转化为第二节点可处理的数据格式对应的字节流,而无需将第一业务数据转化为第二节点的数据格式对应的字节流,进一步的,该第一字节流可以被预设条件下的其他接收方节点处理,第一节点无需针对每个接收方节点转化为该接收方节点的数据格式对应的字节流,减少了第一节点的工作量。且第一节点中不需要存储区块链系统中所有接收方节点的配置信息,只需要存储自身的配置信息即可,第一节点的存储数据量小。
可选的,所述各结构体的位置指示信息包括所述各结构体的变长数据在所述数据信息中的位置及所述各结构体的定长数据;所述数据信息包括依序设置的所述各结构体的变长数据。
上述技术方案中,位置指示信息中包括各结构体的变长数据在数据信息中的位置及各结构体的定长数据,第一节点可以将第一业务数据中各结构体的变长字段转化为定长字段,以使得第二节点可以处理该数据格式的第一字节流,且可以使用位置指示信息中的索引对变长数据进行查找,从而实现数据的反序列化。
可选的,还包括:
所述第一节点获取第二字节流;所述第二字节流是第三节点根据所述第三节点的配置信息将第三业务数据转换为具有所述预设数据格式的字节流;所述第三业务数据包括多个第三结构体;
所述第一节点根据所述第一节点的位置指示信息长度、所述第三节点的位置指示信息长度、所述第二字节流中各结构体的位置指示信息确定各结构体的定长数据和各结构体的变长数据;
所述第一节点根据所述各结构体的定长数据和所述各结构体的变长数据,确定包含至少一个所述第一结构体的第四业务数据。
上述技术方案中,第一节点作为接收方节点,可以接收第二字节流,并根据第一节点的配置信息,将第二字节流转化为第四业务数据。进一步的,第二字节流中存在多个结构体的位置指示信息,由于各结构体的位置指示信息中记录有各结构体的定长数据和各结构体的变长数据在数据信息中的位置索引,则可以根据各结构体的位置指示信息,并行化提取各结构体的定长数据和变长数据,提高了数据反序列化的效率。
可选的,所述第一节点的位置指示信息长度为M个字节,所述第三节点的位置指示信息长度为N个字节;M和N为正整数;
所述第一节点根据所述第一节点的位置指示信息长度、所述第三节点的位置指示信息长度、所述第二字节流中各结构体的位置指示信息确定各结构体的定长数据和各结构体的变长数据,包括:
所述第一节点若确定M大于N,则在所述第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节;
所述第一节点根据补充后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
上述技术方案中,当M大于N时,将第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节,可以减少第一节点处理字节流的工作量,解释为,当第一节点接收多个发送方节点发送的第二字节流时,若多个发送方节点发送的第二字节流中各结构体的位置指示信息长度不同,则第一节点可以采用补充赋值为零的字节的方式,将各第二字节流中各结构体的位置指示信息的字节长度补充为M,从而第一节点仅需要处理长度为M的位置指示信息,即仅需要生成一个用于处理长度为M的位置指示信息的函数。
可选的,所述第一节点根据所述第一节点的位置指示信息长度、所述第三节点的位置指示信息长度、所述第二字节流中各结构体的位置指示信息确定各结构体的定长数据和各结构体的变长数据,还包括:
所述第一节点若确定M小于N,则舍弃所述第二字节流中各结构体的位置指示信息后的N-M个字节;
所述第一节点根据舍弃后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
上述技术方案中,当M小于N时,将第二字节流中各结构体的位置指示信息后的N-M个字节舍弃,从而第二字节流中的各结构体的位置指示信息长度与第一节点的配置信息中的位置指示信息长度相等,以使得第一节点可以处理该第二字节流。且该技术方案中,第二字节流中的位置指示信息长度大于第一节点的配置信息中的位置指示信息长度,代表第三节点的版本号高于第一节点的版本号,将第二字节流中各结构体的位置指示信息后的N-M个字节舍弃,仅是将高于第一节点的版本逻辑删除,不影响第一节点本身的版本逻辑。
可选的,所述预设数据格式还包括版本号;
在所述第一节点确定各结构体的定长数据和各结构体的变长数据之前,还包括:
所述第一节点从所述第二字节流中提取所述第三节点的版本号;
所述第一节点判断所述第一节点的版本号中的主版本号与所述第三节点的版本号中的主版本号是否一致,若是,则确定对所述第二字节流进行处理。
上述技术方案中,第一节点在接收到第二字节流之后,通过确定发送方节点的主版本号是否与自身节点的主版本号一致,从而判断第一节点是否对第二字节流进行处理,可以预先过滤掉与自身节点的主版本号不一致的节点发送的字节流,从而提高第一节点在对字节流处理时的效率。
相应的,本发明实施例还提供了一种基于区块链的数据序列化装置,包括:
获取单元,用于获取第一业务数据;所述第一业务数据包括多个第一结构体;
处理单元,用于根据第一节点的配置信息,将所述第一业务数据转换为具有预设数据格式的第一字节流并发送给第二节点;所述配置信息包括节点的版本号和节点的位置指示信息长度;所述预设数据格式包括位置指示信息长度、依序设置的各结构体的位置指示信息及用于记录各结构体承载的数据的数据信息;所述位置指示信息用于指示结构体承载的数据在字节流中的位置;所述预设数据格式用于所述第二节点将所述第一字节流根据所述第二节点的配置信息转化为第二业务数据;所述第二业务数据包括多个第二结构体。
可选的,所述各结构体的位置指示信息包括所述各结构体的变长数据在所述数据信息中的位置及所述各结构体的定长数据;所述数据信息包括依序设置的所述各结构体的变长数据。
可选的,所述处理单元还用于:
控制所述获取单元获取第二字节流;所述第二字节流是第三节点根据所述第三节点的配置信息将第三业务数据转换为具有所述预设数据格式的字节流;所述第三业务数据包括多个第三结构体;
根据所述第一节点的位置指示信息长度、所述第三节点的位置指示信息长度、所述第二字节流中各结构体的位置指示信息确定各结构体的定长数据和各结构体的变长数据;
根据所述各结构体的定长数据和所述各结构体的变长数据,确定包含至少一个所述第一结构体的第四业务数据。
可选的,所述第一节点的位置指示信息长度为M个字节,所述第三节点的位置指示信息长度为N个字节;M和N为正整数;
所述处理单元具体用于:
若确定M大于N,则在所述第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节;
根据补充后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
可选的,所述处理单元还用于:
若确定M小于N,则舍弃所述第二字节流中各结构体的位置指示信息后的N-M个字节;
根据舍弃后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
可选的,所述预设数据格式还包括版本号;
所述处理单元还用于:
在所述确定各结构体的定长数据和各结构体的变长数据之前,从所述第二字节流中提取所述第三节点的版本号;
判断所述第一节点的版本号中的主版本号与所述第三节点的版本号中的主版本号是否一致,若是,则确定对所述第二字节流进行处理。
相应的,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述基于区块链的数据处理方法。
相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述基于区块链的数据处理方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构的示意图;
图2为本发明实施例提供的另一种系统架构的示意图;
图3(a)为本发明实施例提供的第一种业务数据格式的示意图;
图3(b)为本发明实施例提供的字节流Data1的示意图;
图3(c)为本发明实施例提供的字节流Data2的示意图;
图4(a)为本发明实施例提供的第二种业务数据格式的示意图;
图4(b)为本发明实施例提供的字节流Data3的示意图;
图4(c)为本发明实施例提供的字节流Data4的示意图;
图4(d)为本发明实施例提供的字节流Data5的示意图;
图5为本发明实施例提供的一种数据处理方法的流程示意图;
图6为本发明实施例提供的另一种数据处理方法的流程示意图;
图7为本发明实施例提供的一种补充结构体的位置指示信息示意图;
图8为本发明实施例提供的一种删除结构体的位置指示信息示意图;
图9(a)为本发明实施例提供的字节流Data6的示意图;
图9(b)为本发明实施例提供的字节流Data7的示意图;
图9(c)为本发明实施例提供的另一种删除结构体的位置指示信息示意图;
图10为本发明实施例提供的一种数据序列化方法的流程示意图;
图11为本发明实施例提供的一种的数据反序列化方法的流程示意图;
图12为本发明实施例提供的一种数据处理装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示例性的示出了本发明实施例提供基于区块链的数据处理方法所适用的系统架构,该系统架构可以为区块链系统,该区块链系统中包括多个节点,每个节点中包括P2P(Peer to Peer,对等网络)模块、数据处理模块、数据存储模块。P2P模块用于节点间通信,可以为点对点定向传输,也可以是广播方式。数据处理模块用于对数据进行序列化或反序列化操作,其中,序列化指的是把业务数据转换为字节流序列的过程,反序列化指的是把字节流序列转换为业务数据的过程。数据存储模块用于存储节点配置信息,如版本号,版本号可以包括节点版本号、数据版本号等,节点版本号对应数据版本号,版本号用于唯一确定数据格式。
对版本号解释如下:
版本号是系统、软件、数据的版本的标识号,能使用户了解所使用的系统、软件、数据是否为最新的版本以及它所提供的功能。
版本号的格式化描述为主版本号.次版本号[.修正版本号[.编译版本号]],由二至四个部分组成:主版本号、次版本号、修正版本号和编译版本号。主版本号和次版本号是必选的,修正版本号和编译版本号是可选的,但是如果定义了编译版本号部分,则修正版本号就是必选的。所有定义的部分都必须是大于或等于0的整数。
版本号的管理策略如下:
(1)项目初版,版本号为1.0或1.0.0;
(2)当项目在进行了局部修改或BUG(程序漏洞)修正时,主版本号和次版本号不变,修正版本号加1;
(3)当项目在原有的基础上增加了部分功能时,主版本号不变,次版本号加1,修正版本号复位为0,因而可以被忽略掉;
(4)当项目在进行了重大修改或局部修正累积较多,而导致项目整体发生全局变化时,主版本号加1,此时版本号复位为0但不可以忽略;
(5)编译版本号一般是编译器在编译过程中自动生成的,我们只定义其格式,并不进行人为控制。
区块链系统中节点接收区块链系统外的服务器SDK生成的业务数据,通过节点的数据处理模块将业务数据序列化为字节流,再将字节流发送至P2P模块,用于节点间传输。进一步说明,SDK可以是区块链系统外的服务器的软件开发工具,也可以是区块链系统中节点的软件开发工具。
为方便描述节点中的数据序列化和反序列化流程、节点间的数据传输流程,如图2所示,将发送方节点定义为第一节点,与发送方节点连接的SDK为第一SDK,发送方节点中包括第一P2P模块、第一数据处理模块和第一数据存储模块;相应的,将接收方节点定义为第二节点,与接收方节点连接的SDK为第二SDK,接收方节点中包括第二P2P模块、第二数据处理模块和第二数据存储模块。
第一SDK生成第一业务数据并发送至第一数据处理模块,第一数据处理模块将第一业务数据进行序列化操作,生成字节流,第一P2P模块将字节流发送至第二P2P模块,第二数据处理模块将字节流反序列化为第二业务数据并发送至第二SDK。
区块链系统中节点间进行数据传输时,若发送方节点的数据格式与接收方节点的数据格式相同,则发送方节点将业务数据转化为发送方节点的数据格式对应的字节流即可以直接被接收方节点处理;若发送方节点的数据格式与接收方节点的数据格式不同,则需要发送方节点将业务数据转化为接收方节点的数据格式对应的字节流或转化为接收方节点可处理的数据格式对应的字节流。
本发明实施例中,节点的数据格式对应的字节流可以包括数据长度、单个结构体长度、定长字节、变长字节等。
示例性的,节点的节点版本号为N1.3、数据版本号为D1.1,节点接收到的业务数据可以为如图3(a)所示,该业务数据中包括3个结构体;数据格式对应的字节流Data1如图3(b)所示,字节流Data1包括如表1所示的信息。
表1
字节长度 | 作用 | 赋值 |
4字节 | 描述字节流数据长度 | 18 |
4字节 | 描述第一个结构体长度 | 2 |
1字节 | 描述第一个结构体中,定长数据x | 2 |
1字节 | 描述第一个结构体中,定长数据y | 5 |
4字节 | 描述第二个结构体长度 | 2 |
1字节 | 描述第二个结构体中,定长数据x | 2 |
1字节 | 描述第二个结构体中,定长数据y | 1 |
4字节 | 描述第三个结构体长度 | 2 |
1字节 | 描述第三个结构体中,定长数据x | 0 |
1字节 | 描述第三个结构体中,定长数据y | 1 |
示例性的,节点的节点版本号为N1.8、数据版本号为D1.2,节点接收到的业务数据可以为如图4(a)所示,该业务数据中包括3个结构体;数据格式对应的字节流Data3如图4(b)所示,字节流Data3包括如表2所示的信息。
表2
字节长度 | 作用 | 赋值 |
4字节 | 描述字节流数据长度 | 34 |
4字节 | 描述第一个结构体长度 | 9 |
1字节 | 描述第一个结构体中,定长数据x | 2 |
1字节 | 描述第一个结构体中,定长数据y | 5 |
7字节 | 描述第一个结构体中,变长数据z | abcdefg |
4字节 | 描述第二个结构体长度 | 6 |
1字节 | 描述第二个结构体中,定长数据x | 2 |
1字节 | 描述第二个结构体中,定长数据y | 1 |
4字节 | 描述第二个结构体中,变长数据z | abcd |
4字节 | 描述第三个结构体长度 | 7 |
1字节 | 描述第三个结构体中,定长数据x | 0 |
1字节 | 描述第三个结构体中,定长数据y | 1 |
5字节 | 描述第三个结构体中,变长数据z | hjikl |
此处,需要说明的是,表1和表2中,“数据长度”所占的字节长度为4字节、“单个结构体长度”所占的字节长度为4字节、“定长数据x”所占的字节长度为1字节、“定长数据y”所占的字节长度为1字节、“变长数据z”所占的字节长度为7字节,……,在本发明实施例中,所有参数在字节流中所占的字节长度可以根据经验进行设定,不限于表格中的字节长度。此说明同样适用于下述表格中的“版本号”所占的字节长度、“位置指示信息个数”所占的字节长度等等。
上述实施例中,数据版本号D1.1低于数据版本号D1.2,也就是说,如图3(a)示出的数据格式相对于如图4(a)示出的数据格式为较低版本的数据格式,若第一节点的数据版本号是D1.1,第二节点的数据版本号是D1.2,当第一节点向第二节点发送字节流时,第一节点需要将业务数据转化为D1.2数据格式对应的字节流或转化为第二节点可处理的数据格式对应的字节流。同理,若第一节点的数据版本号是D1.2,第二节点的数据版本号是D1.1,当第一节点向第二节点发送字节流时,第一节点需要将业务数据转化为D1.1数据格式对应的字节流或转化为第二节点可处理的数据格式对应的字节流。
图5为本发明实施例提供的一种基于区块链的数据处理流程,该数据处理流程详细说明了第一节点向第二节点发送第一字节流的实施方式。
步骤501,第一节点获取第一业务数据。
第一业务数据即第一SDK向第一节点发送的第一业务数据,该第一业务数据中可以包括多个第一结构体。示例性的,第一业务数据可以如图3(a)或如图4(a)所示。
步骤502,第一节点根据第一节点的配置信息,将第一业务数据转换为具有预设数据格式的第一字节流。
步骤503,第一节点发送第一字节流至第二节点。
步骤504,第二节点根据第二节点的配置信息将第一字节流转化为第二业务数据。
第二节点根据第二节点的版本号和位置指示信息长度,将第一字节流转化为第二业务数据,且第二业务数据包括多个第二结构体。
在步骤502中,每个节点本地都存储有该节点的配置信息,配置信息包括节点的版本号和节点的位置指示信息长度。本发明实施中,版本号可以为包括节点版本号和数据版本号,也可以只包括数据版本号,版本号只要可以唯一确定节点的数据格式即可。
第一节点根据第一节点的配置信息,将第一业务数据转换为具有预设数据格式的第一字节流。本发明实施中,预设数据格式可以包括位置指示信息长度、依序设置的各结构体的位置指示信息及用于记录各结构体承载的数据的数据信息,位置指示信息用于指示结构体承载的数据在字节流中的位置。其中,预设数据格式用于第二节点将第一字节流根据第二节点的配置信息转化为第二业务数据。
进一步的,预设数据格式还可以包括版本号和位置指示信息的个数。版本号用于接收方节点在接收到字节流后,根据字节流中的版本号判断是否对该字节流进行处理,具体实现过程在下面实施例中描述。位置指示信息的个数用于表示该字节流中包含的位置指示信息的个数,如图4(c)示出的字节流Data4,位置指示信息的个数为3,在接收方节点接收到字节流Data4后,可以读取到字节流Data4中包括3个位置指示信息,当接收方节点读取完第三个位置指示信息后,即可以确定出字节流Data4中的位置指示信息已经读取完毕。
各结构体的位置指示信息可以包括各结构体的变长数据在数据信息中的位置以及定长数据,可以结合图4(c)示出的字节流Data4解释说明;各结构体的位置指示信息也可以包括各结构体的定长数据在数据信息中的位置以及变长数据在数据信息中的位置,可以结合图4(d)示出的字节流Data5解释说明。
在图4(c)示出的字节流Data4中,第一个位置指示信息对应第一业务数据中的第一个结构体,该位置指示信息包括第一个结构体中的定长数据x、定长数据y和变长数据z在数据信息中的位置信息。在获取变长数据z时,从数据信息中字符串的第0个字节开始,读取数据信息中字符串的7个字节。字节流Data4包括如表3所示的信息。
表3
在图4(d)示出的字节流Data5中,第一个位置指示信息对应第一业务数据中的第一个结构体,该位置指示信息包括第一个结构体中定长数据在数据信息中的位置信息以及变长数据在数据信息中的位置信息。在获取定长数据x、定长数据y和变长数据z时,从数据信息中字符串的第0个字节开始,读取数据信息中字符串的9个字节。字节流Data5包括如表4所示的信息。
表4
第一节点在根据第一节点的配置信息,将第一业务数据转换为第一字节流时,可以将各结构体中的变长数据按照各结构体的顺序置于数据信息中,以及将各结构体中的变长数据在数据信息中的位置记录在各结构体的位置指示信息中,此实现过程中,各结构体的位置指示信息包括各结构体的变长数据在数据信息中的位置及各结构体的定长数据。
需要说明的是,如图3(a)所示的业务数据中,每个结构体只存在定长数据,则在生成第一字节流时,无需生成数据信息,也无需在位置指示信息中记录变长字节在数据信息中的位置。生成的第一字节流Data2可以如图3(c)所示。
此外,位置指示信息用于描述各结构体的变长数据在数据信息中的位置以及定长数据时,可以设置变长数据的起始位置和变长数据的长度,从而将各结构体中的变长数据定位到数据信息中,同样,还可以设置变长数据的起始位置和变长数据的终止位置,将各结构体中的变长数据定位到数据信息中,或者采用其他方式,用于定位各结构体中的变长数据在数据信息中的位置,在此不做限制。且,位置指示信息用于描述各结构体的变长数据在数据信息中的位置以及定长数据在数据信息中的位置时,也适用于上述方式。
本发明实施例中,第一节点将第一业务数据按照第一节点的配置信息将第一业务数据转换为具有预设数据格式的第一字节流,第一字节流中包括位置指示信息和数据信息,位置指示信息中包括各结构体的变长数据在数据信息中的位置及各结构体的定长数据或者包括各结构体的变长数据在数据信息中的位置及各结构体的定长数据在数据信息中的位置,通过该方式,第一节点可以将第一业务数据中各结构体的变长字段转化为定长字段,以使得第二节点可以处理该数据格式的第一字节流,且可以使用位置指示信息中的索引对变长数据进行查找,从而实现数据的反序列化。也就是说,第一节点只需要将第一业务数据转化为第二节点可处理的数据格式对应的字节流,而无需将第一业务数据转化为第二节点的数据格式对应的字节流。进一步的,第一节点针对不同的接收方节点,均可以生成该同一数据格式的字节流,用于不同接收方节点读取该第一字节流,第一节点无需针对每个接收方节点转化为该接收方节点的数据格式对应的字节流,减少了第一节点的工作量。且第一节点中不需要存储区块链系统中所有接收方节点的配置信息,只需要存储自身的配置信息即可,第一节点的存储数据量小。
步骤501至步骤504示出的实施例中,第一节点相当于字节流的发送方节点,第二节点相当于字节流的接收方节点,第二节点在接收到第一字节流后,将第一字节流转换为第二业务数据的实现方式与第一节点作为接收方节点时的实现方式类似,可参照下述实施例。
当第一节点是接收方节点时,可以接收第三节点发送的第二字节流,并根据第一节点的配置信息,将第二字节流转化为第四业务数据。此处,当第一节点的版本号低于第三节点的版本号时,第一节点的版本逻辑支持第三节点的版本生成的数据,相当于第一节点可以实现前向兼容;当第一节点的版本号高于第三节点的版本号时,第一节点的版本逻辑支持第三节点的版本生成的数据,相当于第一节点可以实现后向兼容。
具体的,第一节点实现前向兼容和后向兼容,可以参照图6示出的流程图。
步骤601,第一节点获取第二字节流。
第二字节流是第三节点根据第三节点的配置信息将第三业务数据转换为具有预设数据格式的字节流,第三业务数据包括多个第三结构体。此处,第三节点根据第三节点的配置信息将第三业务数据转换为第二字节流的实现方式与第一节点作为发送方节点的实现方式类似,在此不在赘述。
步骤602,第一节点确定各结构体的定长数据和各结构体的变长数据。
第一节点根据第一节点的位置指示信息长度、第三节点的位置指示信息长度、第二字节流中各结构体的位置指示信息,确定各结构体的定长数据和各结构体的变长数据,也就是确定转化出的业务数据中的各结构体的定长数据和各结构体的变长数据。
步骤603,第一节点根据各结构体的定长数据和各结构体的变长数据,确定包含至少一个第一结构体的第四业务数据。
针对各结构体的位置指示信息,确定出各结构体的定长数据和变长数据,并组成结构体,该结构体即为第一节点根据节点的配置信息确定出的第一结构体,并将至少一个第一结构体组成第四业务数据。
在步骤602中,可以定义第一节点的位置指示信息长度为M个字节,第三节点的位置指示信息长度为N个字节,M和N为正整数。第一节点结合M和N的大小,对接收到的第二字节流进行不同方式的处理,具体如下。
处理方式一:
第一节点若确定M大于N,则在第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节,并根据补充后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从数据信息中提取各结构体的变长数据。
处理方式二:
第一节点若确定M小于N,则舍弃第二字节流中各结构体的位置指示信息后的N-M个字节,并根据舍弃后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从数据信息中提取各结构体的变长数据。
此处,需要说明的是,第一节点若确定M等于N,则表示第一节点接收到的第二字节流对应的数据格式是第一节点的数据格式,即第一节点的版本号和第三节点的版本号一致,第一节点可以对第二字节流直接进行反序列化处理,故在此不做赘述。
结合图3(a)、图3(b)、图3(c)、图4(a)、图4(b)、图4(c),以第三业务数据中的第一个结构体为例,分两种情况进行说明。
情况一:
第一节点的位置指示信息长度为10(M=10),对应的业务数据格式如图4(a)所示,第三节点的位置指示信息长度为2(N=2),对应的业务数据格式如图3(a)所示。第一节点接收到的字节流Data2如图3(c)所示,第一节点读取字节流Data2中的位置指示信息长度为2后,确定M大于N,则在字节流Data2中各结构体的位置指示信息后补充M-N个赋值为零的字节,即在第一个结构体的定长数据x和定长数据y后面补充8个赋值为零的字节,补充后的第一个结构体的位置指示信息可以如图7所示,根据补充后的第一个结构体的位置指示信息,确定出第一个结构体的定长数据为定长数据x和定长数据y,赋值分别为2和5,变长数据长度为0。
情况二:
第一节点的位置指示信息长度为2(M=2),对应的业务数据格式如图3(a)所示。当第三节点的位置指示信息长度为10(N=10),对应的业务数据格式如图4(a)所示。第一节点接收到的字节流Data4如图4(c)所示,第一节点读取字节流Data4中的位置指示信息长度为10后,确定M小于N,则舍弃字节流Data4中各结构体的位置指示信息后的N-M个字节,即删除第一个结构体的位置指示信息中10个字节的后8个字节,删除后的第一个结构体的位置指示信息可以如图8所示,根据舍弃后的第一个结构体的位置指示信息,确定出第一个结构体的定长数据为定长数据x和定长数据y,赋值分别为2和5,变长数据长度为0。
本发明实施例中,当M大于N时,将第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节的目的在于,减少第一节点处理字节流的工作量,示例性的,当第一节点的位置指示信息长度为10(M=10),与第一节点进行第二字节流传输的节点不仅有第三节点,还会有第四节点和第五节点,分别对应的位置指示信息长度为4(N=4)和6(N=6),若第一节点在接收到第二字节流后,不采用在位置指示信息后补充M-N个赋值为零的字节的方式,而是直接处理接收到的第二字节流,则会存在如下情况:
第一节点接收第三节点发送的第二字节流,第二字节流中位置指示信息的长度为2,第一节点在读取到第二字节流中位置指示信息的长度后,会生成用于处理该长度为2的位置指示信息的函数,假设为F(N=2)。第一节点接收第四节点发送的第二字节流,第二字节流中位置指示信息的长度为4,第一节点在读取到第二字节流中位置指示信息的长度后,会生成用于处理该长度为4的位置指示信息的函数,假设为F(N=4)。同理,第一节点会生成用于处理长度为6的位置指示信息的函数F(N=6)。
也就是说,如果第一节点直接读取第二字节流,需要生成针对不同长度的位置指示信息的函数,以适用于处理不同的位置指示信息。而在本发明实施例中,若第一节点将第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节后,则可以仅处理长度为10的位置指示信息。结合上述例子,第一节点接收第三节点发送的第二字节流后,在各结构体的位置指示信息后补充8个赋值为零的字节;第一节点接收第四节点发送的第二字节流后,在各结构体的位置指示信息后补充6个赋值为零的字节;以及第一节点接收第五节点发送的第二字节流后,在各结构体的位置指示信息后补充4个赋值为零的字节。通过该方式,第一节点只需要生成用于处理该长度为10的位置指示信息的函数F(N=10)。
此外,本发明实施例中,第一节点可以在各结构体的位置指示信息后补充M-N个赋值为零的字节,以使得各结构体的位置指示信息的长度为M,也可以在各结构体的位置指示信息后补充其它字节,以实现该相同目的。
需要说明的是,本发明实施例中存在补充后的各结构体的位置指示信息或舍弃后的各结构体的位置指示信息中记录有变长数据的位置信息的情况。以图9(a)、图9(b)为例。
发送方节点的版本号为V2.2,发送方节点根据节点中的配置信息生成如图9(a)的字节流Data6的格式,该字节流Data6中包括2个位置指示信息,位置指示信息的长度为18,位置指示信息中包括定长数据x、定长数据y、第一个变长数据z1的起始位置和长度、第二个变长数据z2的起始位置和长度。字节流Data6包括如表5所示的信息。
表5
接收方节点的版本号为V2.1,接收方节点根据节点中的配置信息生成如图9(b)的字节流Data7的格式,该字节流Data7的中包括2个位置指示信息,位置指示信息的长度为10,位置指示信息中包括定长数据x、定长数据y、变长数据z的起始位置和长度。字节流Data7包括如表6所示的信息。
表6
当接收方节点接收到发送方节点发送的如图9(a)所示的字节流Data6之后,会根据接收方节点的位置指示信息长度(M=10)和发送方节点的位置指示信息长度(N=18),确定从字节流Data6各结构体的位置指示信息中舍弃8个字节,举例来说,字节流Data6的第一个位置指示信息舍弃8个字节,可参照如图9(c)示出的位置指示信息。进而可以根据位置指示信息中变长数据z在数据信息中的起始位置0和变长数据z的长度7从数据信息中获取变长数据z。
上述技术方案中,当M大于N时,将第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节的目的在于,减少第一节点的处理字节流的工作量,解释为,当第一节点接收多个发送方节点发送的第二字节流时,若多个发送方节点发送的第二字节流中各结构体的位置指示信息长度不同,则第一节点可以采用补充赋值为零的字节的方式,将各第二字节流中各结构体的位置指示信息的字节长度补充为M从而第一节点仅需要处理长度为M的位置指示信息,即仅需要生成一个用于处理长度为的M的位置指示信息的函数。
当M小于N时,将第二字节流中各结构体的位置指示信息后的N-M个字节舍弃,从而第二字节流中的各结构体的位置指示信息长度与第一节点的配置信息中的位置指示信息长度相等,以使得第一节点可以处理该第二字节流。且该技术方案中,第二字节流中的位置指示信息长度大于第一节点的配置信息中的位置指示信息长度,代表第三节点的版本号高于第一节点的版本号,将第二字节流中各结构体的位置指示信息后的N-M个字节舍弃,仅是将高于第一节点的版本逻辑删除,不影响第一节点本身的版本逻辑。
进一步的,第二字节流中存在多个结构体的位置指示信息,由于各结构体的位置指示信息中记录有各结构体的定长数据和各结构体的变长数据在数据信息中的位置索引,则可以根据各结构体的位置指示信息,并行化提取各结构体的定长数据和变长数据,提高了数据反序列化的效率。
此外,第一节点在接收到第二字节流之后,可以先从第二字节流中提取第三节点的版本号,并根据第三节点的版本号判断是否对该第二字节流进行处理。可选的,可以判断第一节点的版本号中的主版本号与第三节点的版本号中的主版本号是否一致,若是,则确定对第二字节流进行处理,否则,确定不对第二字节流进行处理。
例如,第一节点的版本号为V1.2(第一节点的版本号的主版本号为V1),若第一节点提取到的第三节点的版本号为V1.1(第三节点的版本号的主版本号为V1),即确定出第一节点的版本号中的主版本号与第三节点的版本号中的主版本号一致,确定对第二字节流进行处理。若第一节点提取到的第三节点的版本号为V2.1(第三节点的版本号的主版本号为V2),即确定出第一节点的版本号中的主版本号与第三节点的版本号中的主版本号不一致,确定不对第二字节流进行处理。
本发明实施例中,第一节点在接收到第二字节流之后,通过确定发送方节点的主版本号是否与自身节点的主版本号一致,从而判断第一节点是否对第二字节流进行处理,可以预先过滤掉与自身节点的主版本号不一致的节点发送的字节流,从而提高第一节点对字节流处理的效率。
为了更好的解释本发明实施例,下面将在具体的实施场景下描述该基于区块链的数据序列化流程(业务数据→字节流)和数据反序列化流程(字节流→业务数据)。
数据序列化流程(业务数据→字节流)如图10所示。
步骤1001,开辟存储空间A。
步骤1002,在A中写入节点配置信息中的版本号。
步骤1003,在A中按序写入位置指示信息的个数和单个位置指示信息的长度。
步骤1004,遍历业务数据,获取业务数据中定义相同的结构体。
步骤1005,判断结构体是否存在变长数据,若否,转向步骤1006,若是,转向步骤1007。
步骤1006,按照字段类型的占位情况将定长数据写入A。
步骤1007,判断是否存在缓存区间B,若否,转向步骤1008,若是,转向步骤1009。
步骤1008,开辟存储空间B。
步骤1009,按照字段类型的占位情况将定长数据写入A,将当前B的大小和变长数据长度这两字段按序写入A。
步骤1010,将变长数据写入B。
步骤1011,业务数据处理完后,将B的数据写在A最后。
序列化操作完成,所生成的字节流可以交由P2P模块进行发送。
数据反序列化流程(字节流→业务数据)如图11所示。
步骤1101,确定版本号。
步骤1102,判断主版本号是否一致,若是,则转向步骤1103,否则,结束。
步骤1103,确定字节流中位置指示信息个数n和位置指示信息长度N。
步骤1104,确定配置信息中的位置指示信息长度M。
步骤1105,判断M是否大于N,若是,转向步骤1106,若否,转向步骤1107。
步骤1106,在字节流中各结构体的位置指示信息后面补0,直至满足单个位置指示信息长度为M。
步骤1107,在字节流中各结构体的位置指示信息中读取前M个字节。
步骤1108,判断是否存在变长数据,若是,转向步骤1109,否则,转向步骤1110。
步骤1109,根据读取数据中变长数据的起始位置和长度,在数据信息中找出对应的字符串进行替换。
步骤1110,处理完成n个位置指示信息。
由于本实施例的数据序列化和数据反序列化流程的具体实现方式已在其他实施例中描述,在此不作赘述。
本发明实施例中,第一节点根据节点的配置信息将第一业务数据转化为第一字节流,第一字节流中包括位置指示信息和数据信息,位置指示信息中包括各结构体的变长数据在数据信息中的位置及各结构体的定长数据或者包括各结构体的变长数据在数据信息中的位置及各结构体的定长数据在数据信息中的位置,通过该方式,第一节点可以将第一业务数据中各结构体的变长字段转化为定长字段,以使得第二节点可以处理该数据格式的第一字节流,且可以使用位置指示信息中的索引对变长数据进行查找,从而实现数据的反序列化。也就是说,第一节点只需要将第一业务数据转化为第二节点可处理的数据格式对应的字节流,而无需将第一业务数据转化为第二节点的数据格式对应的字节流,进一步的,该第一字节流可以被预设条件下的其他接收方节点处理,第一节点无需针对每个接收方节点转化为该接收方节点的数据格式对应的字节流,减少了第一节点的工作量。且第一节点中不需要存储区块链系统中所有接收方节点的配置信息,只需要存储自身的配置信息即可,第一节点的存储数据量小。
基于同一发明构思,图12示例性的示出了本发明实施例提供的一种基于区块链的数据处理装置的结构,该装置可以执行基于区块链的数据处理方法的流程。
获取单元1201,用于获取第一业务数据;所述第一业务数据包括多个第一结构体;
处理单元1202,用于根据第一节点的配置信息,将所述第一业务数据转换为具有预设数据格式的第一字节流并发送给第二节点;所述配置信息包括节点的版本号和节点的位置指示信息长度;所述预设数据格式包括位置指示信息长度、依序设置的各结构体的位置指示信息及用于记录各结构体承载的数据的数据信息;所述位置指示信息用于指示结构体承载的数据在字节流中的位置;所述预设数据格式用于所述第二节点将所述第一字节流根据所述第二节点的配置信息转化为第二业务数据;所述第二业务数据包括多个第二结构体。
可选的,所述各结构体的位置指示信息包括所述各结构体的变长数据在所述数据信息中的位置及所述各结构体的定长数据;所述数据信息包括依序设置的所述各结构体的变长数据。
可选的,所述处理单元1202还用于:
控制所述获取单元1201获取第二字节流;所述第二字节流是第三节点根据所述第三节点的配置信息将第三业务数据转换为具有所述预设数据格式的字节流;所述第三业务数据包括多个第三结构体;
根据所述第一节点的位置指示信息长度、所述第三节点的位置指示信息长度、所述第二字节流中各结构体的位置指示信息确定各结构体的定长数据和各结构体的变长数据;
根据所述各结构体的定长数据和所述各结构体的变长数据,确定包含至少一个所述第一结构体的第四业务数据。
可选的,所述第一节点的位置指示信息长度为M个字节,所述第三节点的位置指示信息长度为N个字节;M和N为正整数;
所述处理单元1202具体用于:
若确定M大于N,则在所述第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节;
根据补充后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
可选的,所述处理单元1202还用于:
若确定M小于N,则舍弃所述第二字节流中各结构体的位置指示信息后的N-M个字节;
根据舍弃后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
可选的,所述预设数据格式还包括版本号;
所述处理单元1202还用于:
在所述确定各结构体的定长数据和各结构体的变长数据之前,从所述第二字节流中提取所述第三节点的版本号;
判断所述第一节点的版本号中的主版本号与所述第三节点的版本号中的主版本号是否一致,若是,则确定对所述第二字节流进行处理。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述基于区块链的数据处理方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述基于区块链的数据处理方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种基于区块链的数据处理方法,其特征在于,包括:
第一节点获取第一业务数据;所述第一业务数据包括多个第一结构体;
所述第一节点根据所述第一节点的配置信息,将所述第一业务数据转换为具有预设数据格式的第一字节流并发送给第二节点;所述配置信息包括节点的版本号和节点的位置指示信息长度;所述预设数据格式包括位置指示信息长度、依序设置的各结构体的位置指示信息及用于记录各结构体承载的数据的数据信息;所述位置指示信息用于指示结构体承载的数据在字节流中的位置;所述预设数据格式用于所述第二节点将所述第一字节流根据所述第二节点的配置信息转化为第二业务数据;所述第二业务数据包括多个第二结构体。
2.如权利要求1所述的方法,其特征在于,所述各结构体的位置指示信息包括所述各结构体的变长数据在所述数据信息中的位置及所述各结构体的定长数据;所述数据信息包括依序设置的所述各结构体的变长数据。
3.如权利要求2所述的方法,其特征在于,还包括:
所述第一节点获取第二字节流;所述第二字节流是第三节点根据所述第三节点的配置信息将第三业务数据转换为具有所述预设数据格式的字节流;所述第三业务数据包括多个第三结构体;
所述第一节点根据所述第一节点的位置指示信息长度、所述第三节点的位置指示信息长度、所述第二字节流中各结构体的位置指示信息确定各结构体的定长数据和各结构体的变长数据;
所述第一节点根据所述各结构体的定长数据和所述各结构体的变长数据,确定包含至少一个所述第一结构体的第四业务数据。
4.如权利要求3所述的方法,其特征在于,所述第一节点的位置指示信息长度为M个字节,所述第三节点的位置指示信息长度为N个字节;M和N为正整数;
所述第一节点根据所述第一节点的位置指示信息长度、所述第三节点的位置指示信息长度、所述第二字节流中各结构体的位置指示信息确定各结构体的定长数据和各结构体的变长数据,包括:
所述第一节点若确定M大于N,则在所述第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节;
所述第一节点根据补充后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
5.如权利要求4所述的方法,其特征在于,所述第一节点根据所述第一节点的位置指示信息长度、所述第三节点的位置指示信息长度、所述第二字节流中各结构体的位置指示信息确定各结构体的定长数据和各结构体的变长数据,还包括:
所述第一节点若确定M小于N,则舍弃所述第二字节流中各结构体的位置指示信息后的N-M个字节;
所述第一节点根据舍弃后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
6.如权利要求3至5任一项所述的方法,其特征在于,所述预设数据格式还包括版本号;
在所述第一节点确定各结构体的定长数据和各结构体的变长数据之前,还包括:
所述第一节点从所述第二字节流中提取所述第三节点的版本号;
所述第一节点判断所述第一节点的版本号中的主版本号与所述第三节点的版本号中的主版本号是否一致,若是,则确定对所述第二字节流进行处理。
7.一种基于区块链的数据处理装置,其特征在于,包括:
获取单元,用于获取第一业务数据;所述第一业务数据包括多个第一结构体;
处理单元,用于根据第一节点的配置信息,将所述第一业务数据转换为具有预设数据格式的第一字节流并发送给第二节点;所述配置信息包括节点的版本号和节点的位置指示信息长度;所述预设数据格式包括位置指示信息长度、依序设置的各结构体的位置指示信息及用于记录各结构体承载的数据的数据信息;所述位置指示信息用于指示结构体承载的数据在字节流中的位置;所述预设数据格式用于所述第二节点将所述第一字节流根据所述第二节点的配置信息转化为第二业务数据;所述第二业务数据包括多个第二结构体。
8.如权利要求7所述的装置,其特征在于,所述各结构体的位置指示信息包括所述各结构体的变长数据在所述数据信息中的位置及所述各结构体的定长数据;所述数据信息包括依序设置的所述各结构体的变长数据。
9.如权利要求8所述的装置,其特征在于,所述处理单元还用于:
控制所述获取单元获取第二字节流;所述第二字节流是第三节点根据所述第三节点的配置信息将第三业务数据转换为具有所述预设数据格式的字节流;所述第三业务数据包括多个第三结构体;
根据所述第一节点的位置指示信息长度、所述第三节点的位置指示信息长度、所述第二字节流中各结构体的位置指示信息确定各结构体的定长数据和各结构体的变长数据;
根据所述各结构体的定长数据和所述各结构体的变长数据,确定包含至少一个所述第一结构体的第四业务数据。
10.如权利要求9所述的装置,其特征在于,所述第一节点的位置指示信息长度为M个字节,所述第三节点的位置指示信息长度为N个字节;M和N为正整数;
所述处理单元具体用于:
若确定M大于N,则在所述第二字节流中各结构体的位置指示信息后补充M-N个赋值为零的字节;
根据补充后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
11.如权利要求10所述的装置,其特征在于,所述处理单元还用于:
若确定M小于N,则舍弃所述第二字节流中各结构体的位置指示信息后的N-M个字节;
根据舍弃后的各结构体的位置指示信息,从各结构体的位置指示信息中提取各结构体的定长数据且从所述数据信息中提取各结构体的变长数据。
12.如权利要求9至11任一项所述的装置,其特征在于,所述预设数据格式还包括版本号;
所述处理单元还用于:
在所述确定各结构体的定长数据和各结构体的变长数据之前,从所述第二字节流中提取所述第三节点的版本号;
判断所述第一节点的版本号中的主版本号与所述第三节点的版本号中的主版本号是否一致,若是,则确定对所述第二字节流进行处理。
13.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至6任一项所述的方法。
14.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至6任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910379418.0A CN110191156B (zh) | 2019-05-08 | 2019-05-08 | 一种基于区块链的数据处理方法及装置 |
PCT/CN2020/084319 WO2020224380A1 (zh) | 2019-05-08 | 2020-04-10 | 一种基于区块链的数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910379418.0A CN110191156B (zh) | 2019-05-08 | 2019-05-08 | 一种基于区块链的数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110191156A true CN110191156A (zh) | 2019-08-30 |
CN110191156B CN110191156B (zh) | 2021-11-09 |
Family
ID=67714246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910379418.0A Active CN110191156B (zh) | 2019-05-08 | 2019-05-08 | 一种基于区块链的数据处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110191156B (zh) |
WO (1) | WO2020224380A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020224380A1 (zh) * | 2019-05-08 | 2020-11-12 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据处理方法及装置 |
CN114553887A (zh) * | 2022-01-24 | 2022-05-27 | 浙江数秦科技有限公司 | 一种区块链网络点对点数据传输方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094125B (zh) * | 2021-04-21 | 2023-12-22 | 上海弹业信息科技有限公司 | 业务流程处理方法、装置、服务器及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848148A (zh) * | 2010-04-21 | 2010-09-29 | 中国工商银行股份有限公司 | 应用于金融报文语言的数据传输处理系统、装置及方法 |
CN102790694A (zh) * | 2011-05-20 | 2012-11-21 | 中兴通讯股份有限公司 | 网元管理层消息组织方法和装置 |
CN103389992A (zh) * | 2012-05-09 | 2013-11-13 | 北京百度网讯科技有限公司 | 一种结构化数据存储方法及装置 |
US20160316045A1 (en) * | 2015-04-24 | 2016-10-27 | Freescale Semiconductor, Inc. | Method for Coding Packet Classification Key Composition Rules Using Variable Length Commands |
CN107657438A (zh) * | 2017-09-18 | 2018-02-02 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
CN108228912A (zh) * | 2018-02-12 | 2018-06-29 | 浙江中控技术股份有限公司 | 一种业务数据的处理方法及相关装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4447036B2 (ja) * | 2005-03-30 | 2010-04-07 | 株式会社エヌ・ティ・ティ・ドコモ | データ伝送方法、データ伝送システム、送信方法、受信方法、送信装置および受信装置 |
CN101163145B (zh) * | 2007-11-13 | 2011-09-14 | 成都市华为赛门铁克科技有限公司 | 一种传输数据包的方法及装置和协商密钥的方法 |
CN105812335B (zh) * | 2014-12-31 | 2019-07-23 | 上海数字电视国家工程研究中心有限公司 | 功能字段的解析方法 |
CN110191156B (zh) * | 2019-05-08 | 2021-11-09 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据处理方法及装置 |
-
2019
- 2019-05-08 CN CN201910379418.0A patent/CN110191156B/zh active Active
-
2020
- 2020-04-10 WO PCT/CN2020/084319 patent/WO2020224380A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848148A (zh) * | 2010-04-21 | 2010-09-29 | 中国工商银行股份有限公司 | 应用于金融报文语言的数据传输处理系统、装置及方法 |
CN102790694A (zh) * | 2011-05-20 | 2012-11-21 | 中兴通讯股份有限公司 | 网元管理层消息组织方法和装置 |
CN103389992A (zh) * | 2012-05-09 | 2013-11-13 | 北京百度网讯科技有限公司 | 一种结构化数据存储方法及装置 |
US20160316045A1 (en) * | 2015-04-24 | 2016-10-27 | Freescale Semiconductor, Inc. | Method for Coding Packet Classification Key Composition Rules Using Variable Length Commands |
CN107657438A (zh) * | 2017-09-18 | 2018-02-02 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
CN108228912A (zh) * | 2018-02-12 | 2018-06-29 | 浙江中控技术股份有限公司 | 一种业务数据的处理方法及相关装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020224380A1 (zh) * | 2019-05-08 | 2020-11-12 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据处理方法及装置 |
CN114553887A (zh) * | 2022-01-24 | 2022-05-27 | 浙江数秦科技有限公司 | 一种区块链网络点对点数据传输方法 |
CN114553887B (zh) * | 2022-01-24 | 2024-04-05 | 浙江数秦科技有限公司 | 一种区块链网络点对点数据传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110191156B (zh) | 2021-11-09 |
WO2020224380A1 (zh) | 2020-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110191156A (zh) | 一种基于区块链的数据处理方法及装置 | |
CN108984744B (zh) | 一种非主链区块自增长方法 | |
CN110413690A (zh) | 数据库的数据同步方法、服务器、电子设备、存储介质 | |
CN109901888B (zh) | 一种配置文件自动生成工具的设计方法 | |
US11599708B2 (en) | Encoding of data formatted in human readable text according to schema into binary | |
CN104216961A (zh) | 一种数据处理方法和装置 | |
CN109344268A (zh) | 图形数据库写入的方法、电子设备及计算机可读存储介质 | |
CN107870814A (zh) | 用于内容管理批处理的方法和设备 | |
CN102611576A (zh) | 一种生成网管配置模型文件的方法及装置 | |
CN102567419B (zh) | 基于树结构的海量数据存储装置及方法 | |
CN113094355A (zh) | 基于国产化通信协议的模型实例化方法、装置、设备及介质 | |
CN105302915A (zh) | 基于内存计算的高性能数据处理系统 | |
CN109274742A (zh) | 一种物联网数据采集与监视控制系统 | |
CN110071968A (zh) | 一种基于区块链的消息存储方法及装置 | |
CN112328607B (zh) | 一种大体积json数据的异步压缩处理方法 | |
CN102946443A (zh) | 一种实现大规模数据传输的多任务调度方法 | |
CN105337617A (zh) | 一种fsn文件高效压缩方法 | |
CN103646015B (zh) | 发送、接收以及传输xml报文的方法和系统 | |
CN105574076A (zh) | 一种基于Bloom Filter的键值对存储结构及方法 | |
CN105681425B (zh) | 基于分布式存储系统的多节点修复方法及其系统 | |
WO2015155846A1 (ja) | データベースのハッシュ結合処理をストレージ装置が実行するシステム | |
CN104636432A (zh) | 一种日志文件压缩和解压的方法及装置 | |
CN103116654B (zh) | 一种xml数据节点编码压缩方法 | |
CN108829930B (zh) | 三维数字化工艺设计mbd模型的轻量化方法 | |
CN116303777A (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 |