CN114880717A - 数据归档方法及装置 - Google Patents
数据归档方法及装置 Download PDFInfo
- Publication number
- CN114880717A CN114880717A CN202210473919.7A CN202210473919A CN114880717A CN 114880717 A CN114880717 A CN 114880717A CN 202210473919 A CN202210473919 A CN 202210473919A CN 114880717 A CN114880717 A CN 114880717A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- archived
- blockchain
- archiving
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 138
- 230000008569 process Effects 0.000 claims description 61
- 238000003860 storage Methods 0.000 claims description 56
- 238000012545 processing Methods 0.000 claims description 51
- 230000004044 response Effects 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 8
- 230000036961 partial effect Effects 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 230000006855 networking Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 11
- 238000012423 maintenance Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000000737 periodic effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书一个或多个实施例提供一种数据归档方法和装置。该方法应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有第二区块链网络中的第二区块链节点,第一区块链网络由第二区块链网络所管理,该方法包括:获取第二区块链节点执行数据归档交易生成的数据归档事件,所述数据归档事件包含节点指示信息和数据指示信息;在所述节点指示信息表明第一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种数据归档方法及装置。
背景技术
区块链(Blockchain)技术构建在传输网络(例如点对点网络)之上,是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链网络中的节点按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。
区块链网络中的各个节点分别维护有相应的区块链数据。随着区块链网络不断运行,使得网络规模日益增大,因而存在对上述区块链数据进行归档处理的需求。
在相关技术中,通常由运维人员分别在各个区块链节点所处的节点设备上,对节点设备本地保存的区块链数据进行归档操作。但是采用该方案,不仅运维人员的归档操作效率较低,而且上述归档操作无法追溯,即无法实现对归档过程的记录,存在较大的安全隐患。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据归档方法和装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种数据归档方法,应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有第二区块链网络中的第二区块链节点,第一区块链网络由第二区块链网络所管理,所述方法包括:
获取第二区块链节点执行数据归档交易生成的数据归档事件,所述数据归档事件包含节点指示信息和数据指示信息;
在所述节点指示信息表明第一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
根据本说明书一个或多个实施例的第二方面,提出了一种数据归档方法,应用于区块链网络中的任一区块链节点,所述方法包括:
执行数据归档交易,以获取节点指示信息和数据指示信息;
在所述节点指示信息表明所述任一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
根据本说明书一个或多个实施例的第三方面,提出了一种数据归档装置,应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有第二区块链网络中的第二区块链节点,第一区块链网络由第二区块链网络所管理,所述装置包括:
事件获取单元,用于获取第二区块链节点执行数据归档交易生成的数据归档事件,所述数据归档事件包含节点指示信息和数据指示信息;
数据归档单元,用于在所述节点指示信息表明第一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
路径更新单元,用于将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
根据本说明书一个或多个实施例的第四方面,提出了一种数据归档装置,应用于区块链网络中的任一区块链节点,所述装置包括:
交易执行单元,用于执行数据归档交易,以获取节点指示信息和数据指示信息;
数据归档单元,用于在所述节点指示信息表明所述任一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
路径更新单元,用于将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面中任一项所述的方法。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面中任一项所述方法的步骤。
在上述实施例中,由第二区块链网络中的第二区块链节点执行数据归档交易生成包含节点指示信息和数据指示信息的数据归档事件,第一区块链网络中的第一区块链节点响应于该事件,在所述节点指示信息表明第一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据,并将本地维护的用于访问所述待归档数据第一访问路径更新为用于访问所述归档后数据的第二访问路径。
可以理解的是,因为第一区块链网络由第二区块链网络所管理,所以第一区块链网络为区块链子网,其中的第一区块链网络为子网节点;相应地,第二区块链网络为区块链主网,其中的第二区块链网络为主网节点。通过上述方式,主网节点通过执行数据归档交易可以控制相应的子网节点对自身所维护的待归档数据进行归档处理,换言之,区块链主网可以控制区块链子网中的特定区块链节点,对特定的区块链数据进行针对性的归档处理。另外,将待归档数据的访问地址更新为归档后数据的访问地址,也有助于子网节点对归档后数据的正常访问,从而保证归档处理后的区块链子网的正常运行。在该方式中,通过主网节点执行交易的方式实现对子网数据归档的集中控制。一方面,无需运维人员对各个子网节点所处的节点设备分别进行链下形式的归档操作,大大提升了区块链数据的归档效率;另一方面,上述数据归档交易的运行记录会被存证在区块链主网中,所以数据归档过程是可追溯的,实现了对归档过程的准确记录和可靠存证,有效提升了区块链数据归档过程的安全性。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一示例性实施例提供的一种区块链网络的示意图。
图2是一示例性实施例提供的一种数据归档方法的流程图。
图3是一示例性实施例提供的一种数据归档过程的示意图。
图4是一示例性实施例提供的另一种数据归档过程的示意图。
图5是一示例性实施例提供的另一种数据归档方法的流程图。
图6是一示例性实施例提供的一种设备的结构示意图。
图7是一示例性实施例提供的一种数据归档装置的框图。
图8是一示例性实施例提供的另一种数据归档装置的框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
人员或机构等可以作为节点成员参与到区块链网络中,如可以参与组建区块链网络或者加入已经组建完成的区块链网络。其中,任一人员或机构可以仅参与一个区块链网络,或者也可以参与到多个区块链网络。
由于区块链网络的去中心化特性,区块链网络中的所有区块链节点通常会维护相同的区块数据,难以满足部分节点的特殊需求。以联盟链为例,所有联盟成员(即联盟内的节点成员)可以组成一区块链网络,所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区块链节点获得该区块链网络上发生的所有交易和相关数据。但在一些情况下,可能存在部分联盟成员希望完成一些具有保密需求的交易,这些联盟成员既希望这些交易能够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些交易和相关数据。虽然这些联盟成员可以额外组建一新的区块链网络,其建立方式与上述包含所有联盟成员的区块链网络类似,但是从头开始建立一条新的区块链网络需要消耗大量的资源,且无论是该区块链网络的建立过程或是建成后的配置过程都非常耗时。联盟成员之间的需求往往是临时的或者具有一定的时效性,使得新建的区块链网络很快就会由于需求消失而失去存在的意义,从而进一步增加了上述区块链网络的建链成本。而联盟成员之间的需求经常会变化,而每一需求所对应的联盟成员也往往不同,因而每当联盟成员发生变化时就可能需要组建一新的区块链网络,从而造成资源和时间的大量浪费。
为此,可以将已组建的区块链网络作为区块链主网,并在该区块链主网的基础上组建区块链子网。那么,在诸如上述的联盟链场景下,联盟成员可以在已经参与区块链主网的情况下,基于自身需求而在区块链主网的基础上组建所需的区块链子网。由于区块链子网是在区块链主网的基础上所建立,使得区块链子网的组建过程相比于完全独立地组建一条区块链网络,所消耗的资源和所需的耗时等都极大地降低,灵活性较高。
基于区块链主网快捷组建区块链子网的过程如下:区块链主网中的各区块链节点分别获取组建区块链子网的交易,所述交易包含所述区块链子网的配置信息,所述配置信息包括参与组建所述区块链子网的节点成员的身份信息,所述区块链主网中的各区块链节点分别执行所述交易以透出所述配置信息,当所述配置信息包含第一区块链节点对应的节点成员的身份信息时,部署第一区块链节点的节点设备基于所述包含所述配置信息的创世块启动属于所述区块链子网的第二区块链节点。
以图1为例,区块链主网为mainnet0,该网络包含的区块链节点为nodeA、nodeB、nodeC、nodeD和nodeE等。假定nodeA、nodeB、nodeC和nodeD希望组建一区块链子网:如果nodeA为管理员且仅允许管理员发起组建区块链子网的交易,那么可由nodeA向mainnet0发起上述组建区块链子网的交易;如果nodeE为管理员且仅允许管理员发起组建区块链子网的交易,那么nodeA~nodeD需要向nodeE进行请求,使得nodeE向mainnet0发起上述组建区块链子网的交易;如果nodeE为管理员但允许普通用户发起组建区块链子网的交易,那么nodeA~nodeE均可以向mainnet0发起上述组建区块链子网的交易。当然,不论是管理员或者普通用户,发起组建区块链子网的交易的区块链节点并不一定参与所组建的区块链子网,比如虽然最终由nodeA、nodeB、nodeC和nodeD组建区块链子网,但可由nodeE向mainnet0发起上述组建区块链子网的交易,而并不一定由nodeA~nodeD来发起该组建区块链子网的交易。
容易理解的是,在区块链主网的基础上组建区块链子网时,会使得该区块链子网与区块链主网之间存在逻辑上的层次关系。比如在图1所示的mainnet0上组建区块链子网subnet1时,可以认为mainnet0处于第一层、subnet1处于第二层。一种情况下,本说明书中的区块链主网可以为底层区块链网络,即区块链主网并非在其他区块链网络的基础上组建的区块链子网,比如图1中的mainnet0可以认为属于底层区块链网络类型的区块链主网。另一种情况下,本说明书中的区块链主网也可以为其他区块链网络的子网,比如可以在图1中subnet1的基础上进一步组建另一区块链子网subnet1.1,此时可以认为subnet1为subnet1.1对应的区块链主网,而这并不影响该subnet1同时属于mainnet0上创建的区块链子网。可见,区块链主网与区块链子网实际上是相对概念,同一区块链网络在一些情况下可以为区块链主网、另一些情况下可以为区块链子网。
上述组建区块链子网的交易在被发送至区块链主网后,由区块链主网内的共识节点进行共识,并在通过共识后由各主网节点执行该交易,以完成区块链子网的组建。共识过程取决于所采用的共识机制,本说明书并不对此进行限制。
通过在上述组建区块链子网的交易中包含配置信息,该配置信息可以用于对所组建的区块链子网进行配置,使得组建的区块链子网符合组网需求。例如,通过在配置信息中包含节点成员的身份信息,可以指定组建的区块链子网包含哪些区块链节点。
节点成员的身份信息可以包括节点的公钥,或者采用节点ID等其他能够表征节点身份的信息,本说明书并不对此进行限制。以公钥为例,每个区块链节点都存在对应的一组或多组公私钥对,由区块链节点持有私钥而公钥被公开且唯一对应于该私钥,因而可以通过公钥来表征相应区块链节点的身份。因此,对于希望作为区块链子网的节点成员的区块链节点,可以将这些区块链节点的公钥添加至上述组建区块链子网的交易中,以作为上述节点成员的身份信息。上述的公私钥对可以用于签名验证的过程。例如,在采用有签名的共识算法中,譬如subnet1中的nodeA1采用自身维护的私钥对消息进行签名后,将经过签名的消息在subnet1中广播,而nodeB1、nodeC1和nodeD1可以用nodeA1的公钥对收到的消息进行签名验证,以确认自身收到的消息确实来自nodeA1且没有经过篡改。
所述配置信息可以用于指示区块链主网中的任一主网节点所对应的节点成员。在组建区块链子网时,并非由该主网节点直接参与组建区块链子网、成为其节点成员,而是需要由用于部署该主网节点的节点设备生成子网节点,并由该子网节点成为区块链子网中的节点成员。可见,所述主网节点和所述子网节点对应于同一个区块链成员,比如在联盟链场景下对应于同一联盟链成员,但所述主网节点属于区块链主网、所述子网节点属于区块链子网,使得该区块链成员可以分别参与到区块链主网和区块链子网的交易中。并且,由于区块链主网和区块链子网属于相互独立的两个区块链网络,使得所述主网节点生成的区块与所述子网节点生成的区块分别存入所述节点设备上的不同存储(采用的存储譬如可以为数据库),实现了该主网节点与子网节点分别使用的存储之间的相互隔离,因而区块链子网所产生的数据仅会在区块链子网的节点成员之间同步,使得仅参与了区块链主网的区块链成员无法获得区块链子网上产生的数据,实现了区块链主网与区块链子网之间的数据隔离,满足了部分区块链成员(即参与区块链子网的区块链成员)之间的小范围交易需求。
另外,所述主网节点和所述子网节点是在逻辑上划分出来的区块链节点,而从物理设备的角度来说,相当于两节点所处的节点设备同时参与了区块链主网和区块链子网。由于区块链主网与区块链子网之间相互独立,使得这两个区块链网络的身份体系也相互独立,因而即便所述主网节点和子网节点可以采用完全相同的公钥,仍然应当将两者视为不同的区块链节点。譬如在图1中,mainnet0中的nodeA相当于上述主网节点,而部署该nodeA的节点设备(即节点设备1)生成了属于subnet1的nodeA1,该nodeA1即相当于上述子网节点。可见,由于身份体系相互独立,所以无论子网节点所采用的公钥是否区别于主网节点,都并不影响本说明书方案的实施。
当然,区块链子网的节点成员并不一定只是区块链主网的部分节点成员。在一些情况下,区块链子网的节点成员可以与区块链主网的节点成员完全一致,此时所有的区块链成员都可以获得区块链主网和区块链子网上的数据,但是区块链主网与区块链子网所产生的数据依然可以相互隔离。比如可以通过在区块链主网上实现一类业务、在区块链子网上实现另一类业务,从而可以使得这两类业务分别产生的业务数据之间相互隔离。
除了上述的节点成员的身份信息之外,配置信息还可以包括下述至少之一:所述区块链子网的网络标识、所述区块链子网的管理员的身份信息、针对区块链平台代码的属性配置等,本说明书并不对此进行限制。网络标识用于唯一表征该区块链子网,因而该区块链子网的网络标识应当区别于区块链主网和该区块链主网上组建的其他区块链子网。区块链子网的管理员的身份信息,譬如可以为作为管理员的节点成员的公钥;其中,区块链主网与区块链子网的管理员可以相同,也可以不同。
通过区块链主网来组建区块链子网的优势之一,就是由于生成所述子网节点的节点设备上已经部署了主网节点,因而可以将主网节点所使用的区块链平台代码复用在子网节点上,免去了区块链平台代码的重复部署,极大地提高了区块链子网的组建效率。那么,如果配置信息中未包含针对区块链平台代码的属性配置,上述子网节点即可以复用主网节点上采用的属性配置;如果配置信息中包含了针对区块链平台代码的属性配置,子网节点则可以采用该属性配置,使得子网节点所采用的属性配置不受限于主网节点的属性配置、与主网节点无关。针对区块链平台代码的属性配置可以包括下述至少之一:代码版本号、是否需要共识、共识算法类型、区块大小等,本说明书并不对此进行限制。
组建区块链子网的交易包括调用合约的交易。该交易中可以指明被调用的智能合约的地址、调用的方法和传入的参数。例如,调用的合约可以为前述的创世合约或系统合约,调用的方法可以为组建区块链子网的方法,传入的参数可以包括上述的配置信息。在一实施例中,该交易可以包含如下信息:
from:Administrator
to:Subnet
method:AddSubnet(string)
string:genesis
其中,from字段为该交易的发起方的信息,譬如Administrator表明该发起方为管理员;to字段为被调用的智能合约的地址,譬如该智能合约可以为Subnet合约,则to字段具体为该Subnet合约的地址;method字段为调用的方法,譬如在Subnet合约中用于组建区块链子网的方法可以为AddSubnet(string),而string为AddSubnet()方法中的参数,上述示例中通过genesis表征该参数的取值,该genesis具体为前述的配置信息。
以mainnet0上的节点nodeA~nodeE执行调用Subnet合约中AddSubnet()方法的交易为例。在交易通过共识后,nodeA~nodeE分别执行AddSubnet()方法并传入配置信息,得到相应的执行结果。
区块链网络中的节点在执行调用智能合约的交易后,会生成相应的收据(receipt),以用于记录与执行该智能合约相关的信息。这样,可以通过查询交易的收据来获得合约执行结果的相关信息。合约执行结果可以表现为收据中的事件(event)。消息机制可以通过收据中的事件实现消息传递,以触发区块链节点执行相应的处理。事件的结构譬如可以为:
Event:
[topic][data]
[topic][data]
......
在上述示例中,事件的数量可以为一个或多个;其中,每个事件分别包括主题(topic)和数据(data)等字段。区块链节点可以通过监听事件的topic,从而在监听到预定义的topic的情况下,执行预设处理,或者从相应事件的data字段读取相关内容,以及可以基于读取的内容执行预设处理。
上述的事件机制中,相当于在监听方(比如存在监听需求的用户)处存在具有监听功能的客户端,譬如该客户端上运行了用于实现监听功能的SDK(Software DevelopmentKit,软件开发工具包)等,由该客户端对区块链节点产生的事件进行监听,而区块链节点只需要正常生成收据即可。除了上述的事件机制之外,还可以通过其他方式实现交易信息的透出。例如,可以通过在区块链节点运行的区块链平台代码中嵌入监听代码,使得该监听代码可以监听区块链交易的交易内容、智能合约的合约状态、合约产生的收据等其中的一种或多种数据,并将监听到的数据发送至预定义的监听方。由于监听代码部署于区块链平台代码中,而非监听方的客户端处,因而相比于事件机制而言,这种基于监听代码的实现方式相对更加的主动。其中,上述的监听代码可以由区块链平台的开发人员在开发过程中加入区块链平台代码,也可以由监听方基于自身的需求而嵌入,本说明书并不对此进行限制。
可见,上述Subnet合约的执行结果可以包括所述配置信息,该执行结果可以处于前文所述的收据中,该收据中可以包含与执行AddSubnet()方法相关的event,即组网事件。组网事件的topic可以包含预定义的组网事件标识,以区别于其他的事件。譬如在与执行AddSubnet()方法相关的event中,topic的内容为关键词subnet,且该关键词区别于其他方法所产生event中的topic。那么,nodeA~nodeE通过监听生成的收据中各个event所含的topic,可以在监听到包含关键词subnet的topic的情况下,确定监听到与执行AddSubnet()方法相关的event,即组网事件。例如,收据中的event如下:
Event:
[topic:other][data]
[topic:subnet][data]
......
那么,nodeA~nodeE在监听到第1条event时,由于所含topic的内容为other,确定该event与AddSubnet()方法无关;以及,nodeA~nodeE在监听到第2条event时,由于所含topic的内容为subnet,确定该event与AddSubnet()方法相关,进而读取该event对应的data字段,该data字段包含上述的配置信息。以配置信息包括区块链子网的节点成员的公钥为例,data字段的内容例如可以包括:
{subnet1;
nodeA的公钥,nodeA的IP、nodeA的端口号…;
nodeB的公钥,nodeB的IP、nodeB的端口号…;
nodeC的公钥,nodeC的IP、nodeC的端口号…;
nodeD的公钥,nodeD的IP、nodeD的端口号…;
}
其中,subnet1为希望创建的区块链子网的网络标识。区块链主网中的各个区块链节点可以记录该区块链主网上已创建的所有区块链子网的网络标识,或者与这些区块链子网相关的其他信息,这些信息譬如可以维护在上述的Subnet合约中,具体可以对应于该Subnet合约所含的一个或多个合约状态的取值。那么,nodeA~nodeE可以根据记录的已创建的所有区块链子网的网络标识,确定上述的subnet1是否已经存在;如果不存在,说明subnet1是当前需要创建的新区块链子网,如果存在则说明subnet1已经存在。
除了采用希望创建的新的区块链子网的网络标识之外,还可以采用预定义的新建网络标识,该新建网络标识表明相应的组网事件用于组建新的区块链子网。例如,可以将上述的subnet1替换为newsubnet,该newsubnet为预定义的新建网络标识,nodeA~nodeE在识别到data字段包含newsubnet时,即可确定包含该newsubnet的event为组网事件,需要创建新的区块链子网。
除了网络标识subnet1之外,上述data字段中还包含各个节点成员的身份信息等内容。部署主网节点的节点设备可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明该主网节点属于所述节点成员的情况下,由部署该主网节点的节点设备获取所述组网事件包含的配置信息或创世块。或者,主网节点可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明该主网节点自身属于所述节点成员的情况下,触发部署该主网节点的节点设备获取所述组网事件包含的所述配置信息或所述创世块。
如前所述,节点设备可以直接监听收据。假定nodeA~nodeE分别部署在节点设备1~5上,节点设备1~5可以监听nodeA~nodeE分别生成的收据,那么在监听到subnet1是需要新组建的区块链子网的情况下,节点设备1~5可以进一步识别data字段中包含的节点成员的身份信息,以确定自身的处理方式。以nodeA和节点设备1为例:如果节点设备1发现data字段包含nodeA的公钥、IP地址和端口号等身份信息,那么节点设备1在基于上述的消息机制从data字段获得配置信息的情况下,可以生成包含该配置信息的创世块,进而在本地部署nodeA1,并由nodeA1加载生成的创世块以成为subnet1的子网节点。类似地,节点设备2可以生成nodeB1、节点设备3可以生成nodeC1、节点设备4可以生成nodeD1。以及,节点设备5会发现data字段包含的身份信息与自身均不匹配,则节点设备5不会根据data字段中的配置信息生成创世块,也不会生成subnet1中的区块链节点。
如前所述,区块链主网中的区块链节点可以监听收据,并根据监听结果触发节点设备执行相关处理。例如,nodeA~nodeE在确定subnet1是需要新组建的区块链子网的情况下,会进一步识别data字段中包含的节点成员的身份信息,以确定自身的处理方式。比如,nodeA~nodeD会发现在data字段包含自身的公钥、IP地址和端口号等身份信息,假定nodeA~nodeD分别部署在节点设备1~4上,以nodeA和节点设备1为例:nodeA会触发节点设备1,使得节点设备1基于上述的消息机制从data字段获得配置信息并生成包含该配置信息的创世块,且节点设备1会在本地部署nodeA1,该nodeA1加载生成的创世块,从而成为subnet1中的1个子网节点。类似地,nodeB会触发节点设备2生成nodeB1、nodeC会触发节点设备3生成nodeC1、nodeD会触发节点设备4生成nodeD1。以及,nodeE会发现data字段包含的身份信息与自身均不匹配,假定nodeE部署在节点设备5上,那么该节点设备5不会根据data字段中的配置信息生成创世块,也不会生成subnet1中的节点。
如前所述,第一主网节点与第一子网节点并不一定采用相同的身份信息。因此,在上述实施例中,data字段中可以包含预先为nodeA1~nodeD1生成的身份信息,且区别于nodeA~nodeD的身份信息。仍以nodeA和节点设备1为例:节点设备1如果在data字段中发现了nodeA1的身份信息,可以生成创世块、部署nodeA1,并由nodeA1加载该创世块;或者,nodeA如果在data字段中发现了nodeA1的身份信息,那么nodeA会触发节点设备1生成创世块、部署nodeA1,并由nodeA1加载该创世块。其他区块链节点或节点设备的处理方式类似,此处不再一一赘述。
除了配置信息之外,合约的执行结果可以包括创世块。换言之,除了可以在data字段中包含配置信息,还可以直接在执行合约调用的过程中生成包含配置信息的创世块,从而将创世块包含于data字段中,那么对于上述的nodeA~nodeD而言,相应的节点设备1~4可以通过消息机制直接从data字段获得创世块,而无需自行生成,可以提升对nodeA1~nodeD1的部署效率。
节点设备通过在一进程中创建一个运行区块链平台代码的实例,实现在该节点设备上部署一区块链节点。对于主网节点而言,由节点设备在上述进程中创建第一实例,并由该第一实例运行区块链平台代码而形成。类似地,对于子网节点而言,由节点设备在上述进程中创建区别于第一实例的第二实例,并由该第二实例运行区块链平台代码而形成。例如,节点设备可以首先在进程中创建第一实例,以形成区块链主网中的主网节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以在上述进程中创建第二实例,该第二实例区别于上述的第一实例,并由该第二实例形成区块链子网中的子网节点。当第一实例与第二实例位于同一进程时,由于不涉及跨进程交互,可以降低对该子网节点的部署难度、提高部署效率;当然,第二实例也可能与第一实例分别处于节点设备上的不同进程中,本说明书并不对此进行限制;例如,节点设备可以在第一进程中创建第一实例,以形成区块链主网中的主网节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以启动区别于第一进程的第二进程,并在该第二进程中创建第二实例,该第二实例区别于上述的第一实例,进而由该第二实例形成区块链子网中的子网节点。事实上,本说明书实施例中涉及的任一节点设备上部署的各区块链节点均为运行在节点设备上的不同的区块链实例,节点设备上部署的各区块链节点生成的区块可以分别存入该节点设备上的不同存储(例如数据库),且任一节点设备部署的各区块链节点分别使用的存储之间相互隔离。
通过上述方式,可以在区块链主网上创建出由区块链主网所管理的区块链子网。以图1为例,对于包含nodeA~nodeE的mainnet0,可以在mainnet0的基础上可以创建出subnet1,该subnet1包含nodeA1~nodeD1,且subnet1中的任一子网节点与其在mainnet0中对应的主网节点被部署于同一节点设备,例如,nodeA与nodeA1被部署于节点设备1、nodeB与nodeB1被部署于节点设备2、nodeC与nodeC1被部署于节点设备3、nodeD与nodeD1被部署于节点设备4。类似地,还可以在mainnet0上创建出subnet2或更多的区块链子网,其中subnet2包含nodeA2、nodeB2、nodeC2和nodeE2,且nodeA与nodeA1、nodeA2,nodeB与nodeB1、nodeB2,nodeC与nodeC1,nodeD与nodeD1,nodeE与nodeE2分别部署在同一节点设备上。以及,还可以将subnet1、subnet2等作为区块链主网,并在此基础上进一步创建出区块链子网,例如在subnet1的基础上创建出区块链子网subnet1.1,其过程与subnet1或subnet2的创建相似,仅仅是将区块链主网替换为区块链子网subnet1,此处不再赘述。如图所示,节点设备1中部署有主网节点nodeA以及子网节点nodeA1和nodeA2;节点设备2和节点设备3与节点设备1类似,不再赘述;节点设备4中部署有主网节点nodeD以及子网节点nodeD1;节点设备5中部署有主网节点nodeE和子网节点nodeE2。
除了通过上述在区块链主网上发起交易选取节点成员以创建区块链子网的方式,还可以通过其他手段创建区块链子网,并使得其受到区块链主网的管理。例如,可以通过注册方式在区块链主网上组建区块链子网(后续简称注册组网方式),将现有区块链网络直接注册至区块链主网,使新注册的区块链网络受到区块链主网的管理,从而使得新注册的区块链网络成为区块链主网的区块链子网。通过注册组网方式,待组建区块链子网的子网信息被直接注册至区块链主网,使得区块链主网获取待组建区块链子网的相关信息(通过接收并执行待组建区块链网络发出的、用于将其身份信息与分配至该待组建区块链网络的子网标识进行关联存证的交易),例如待组建区块链子网的子网标识和运行状态,其中各节点成员的公钥和插件配置信息、各节点设备的IP地址和端口信息等,这些信息会被写入区块链主网对应的系统合约的合约状态中,由此区块链主网将获取该待组建区块链子网的管理权,在完成注册后,便意味着区块链子网组建完成。由于注册组网方式并不需要通过交易在区块链主网上指定节点成员构成区块链子网,因此通过注册组网方式组建的区块链子网中的子网节点可以与部署在区块链主网中各节点的节点设备完全不同或部分不同。例如图1中mainnet0以注册组网方式创建了一个subnet3(图1中未示出),假设mainnet0自身所包含的主网节点nodeA~nodeE分别部署于节点设备1~5,那么subnet3对应的子网节点可以部署于除节点设备1~5外的其他任意节点设备上,或者,subnet3中的其中一个或多个子网节点分别部署于节点设备1~5内的任意节点设备(但仍需要保证一个节点设备上仅部署subnet4中的一个子网节点),而subnet3中的其他的子网节点部署于除节点设备1~5外的其他任意节点设备上,当然,subnet4中的子网节点也可以均部署于节点设备1~5之中,不再赘述。
通过上述方式创建的区块链主网和区块链子网中的任意两个区块链网络之间可以实现跨链交互。以属于mainnet0的nodeC和属于subnet1的nodeC1为例,由图1可见,二者部署于节点设备3中,nodeC和nodeC1具体为节点设备3在本地部署的虚拟机中运行区块链平台代码所形成的区块链节点实例(下称区块链节点),而nodeC作为区块链节点在运行过程中的相关数据保存在nodeC对应的主网数据库中,nodeC1作为另一区块链节点在运行过程中的相关数据则保存在nodeC1对应的子网数据库中,上述主网数据库和子网数据库均属于节点设备3的存储空间。另外,节点设备3中可以部署区块链共识代码,通过运行该共识代码,节点设备3可以在本地形成共识组件实例;以及,节点设备中还可以部署有以插件形式管理的P2P组件代码,通过运行该P2P组件代码,节点设备可以在本地形成P2P组件实例,也即P2P插件。任一节点设备中部署的P2P插件可以被该节点设备上的不同区块链节点所共享使用,例如节点设备3中nodeC与nodeC1可以调用节点设备3上运行的同一个P2P插件,以共享其功能和数据。节点设备3中还可以部署有区块链业务代码,通过运行该区块链业务代码,节点设备3可以在本地形成业务实例,其中,节点设备3中可以实现至少一个业务实例,如用于实现数据读/写功能的存储实例、用于实现隐私计算等计算功能的计算实例、用于实现数据加密功能的加密实例等,不再赘述。
在本说明书实施例中,同一节点设备上的主网节点和子网节点共享该节点设备上运行的区块链通讯插件,例如前述的P2P插件。上述形成mainnet0时所实现的网络连接链路,具体可以是通过nodeC和nodeE分别采用节点设备3和节点设备5上的P2P插件所建立。由于节点设备上的P2P插件可以被该节点设备上各个区块链节点所共享,因此subnet1中的nodeC1可以通过调用节点设备3本地运行的P2P插件,借助形成mainnet0时所实现的节点设备3与节点设备5之间基于P2P插件的网络连接,建立与nodeE2所属节点设备5上运行的P2P插件之间的网络连接,由此将跨链消息发送至节点设备5,从而进一步实现与nodeE2之间的网络通讯。该方式使得源区块链网络与目的区块链网络之间无需建立新的网络连接链路,而是通过底层区块链主网预先建立的网络连接链路,即可实现源区块链网络中源节点与目的区块链网络中目的节点之间的网络通讯。
为了实现对区块链数据进行归档处理的需求,在相关技术中,通常由运维人员分别在各个区块链节点所处的节点设备上,对节点设备本地保存的区块链数据进行归档操作。但是采用该方案,需要运维人员采用手动方式对各个节点设备分别进行链下形式的归档操作,因此,不仅运维人员的归档操作效率较低,而且上述归档操作无法追溯,即无法实现对归档过程的记录,存在较大的安全隐患。
为了解决相关技术中存在的上述技术问题,本说明书提出一种数据归档方法,通过执行区块链交易的方式实现对区块链数据的链上归档。下面结合附图对本方案进行详细说明。
图2是本说明书实施例提出的一种数据归档方法的流程图。由图2可见,该方法应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有第二区块链网络中的第二区块链节点,第一区块链网络由第二区块链网络所管理,该方法包括步骤202-206。
步骤202,获取第二区块链节点执行数据归档交易生成的数据归档事件,所述数据归档事件包含节点指示信息和数据指示信息。
本方案所述第一区块链网络中的第一区块链节点和第二区块链网络中的第二区块链节点被部署于同一节点设备中,该所述第一区块链网络由第二区块链网络所管理,可见,第一区块链网络为区块链子网、第一区块链节点为该子网中的子网节点;第二区块链网络为区块链主网,第二区块链节点为该主网中的主网节点。本方案即可以应用于上述第一区块链节点,实际上,第一区块链节点可以为第一区块链网络中的任一子网节点。为描述清晰起见,下文实施例以第一区块链网络为图1所述的subent1、第一区块链节点为nodeA1以及第二区块链网络为图1所述的mainent0、第二区块链节点为nodeA为例进行说明。
在本方案中,所述数据归档交易可以由第二区块链网络的管理员或者运维人员发起,或者,也可以由第二区块链网络中的任一区块链节点所对应的普通用户发起。具体的,可以通过第二区块链网络中的任一主网节点发起所述数据归档交易。
第二区块链网络中的各个区块链节点分别执行所述数据归档交易可以生成所述数据归档事件,该事件中包含节点指示信息和数据指示信息,这些数据用于确定需要进行归档处理的区块链子网(下称待归档子网)、该区块链子网中需要进行归档处理的子网节点(下称待归档节点)和需要进行归档处理的待归档数据。所述节点指示信息可以为待归档子网的子网标识和待归档节点的节点标识,以用于指示具体由哪个区块链子网中的哪些子网节点进行归档操作;所述数据指示信息可以为待归档数据的数据标识,以用于指示具体对哪些区块链数据进行归档处理。其中,所述子网标识和节点标识可以为具体标识,也可以为标识范围,例如,在子网标识字段的取值为“all”的情况下,表明区块链主网所管理的各个区块链子网均为所述待归档子网,而在某一区块链子网对应的节点标识字段的取值为“all”的情况下,表明该区块链子网中的全部子网节点均为所述待归档节点。所述数据标识所指示的待归档数据为第一区块链节点自身所维护的区块链数据,该数据由第一区块链节点在参与第一区块链网络的区块链事务过程中产生,并可以被保存在第一区块链节点所处节点设备的本地存储空间。具体的,节点标识可以为待归档节点的节点公钥等节点身份信息,上述数据标识可以为区块高度范围、存储地址范围、数据索引信息等,不再赘述。另外,数据归档事件中还可以包括归档后数据的存储地址(即对应于下文第二访问路径的存储地址),以便将归档完成的归档后数据按照该存储地址存储在相应的存储空间处。
在一实施例中,数据归档事件中的所述节点指示信息和数据指示信息可以指示固定对象,用于实现针对待归档数据的一次性归档处理。以图1为例,mainent0中的各个主网节点执行数据归档交易产生的数据归档事件中,可以包含subnet1的子网标识、subnet1中的nodeA1和nodeB1的节点标识以及区块高度区间0~10000,上述信息用于指示需要由subnet1中的nodeA1和nodeB1分别对区块高度处于1~10000范围内的区块进行归档处理。显然,响应于上述数据归档事件,nodeA1和nodeB1可以分别对上述区块进行归档处理。
在另一实施例中,数据归档事件中的所述节点指示信息和数据指示信息也可以指示非固定对象,并且该事件中还可以包含周期性的归档时刻,以便实现对待归档数据的周期性多次归档。仍以图1为例,mainent0中的各个主网节点执行数据归档交易产生的数据归档事件中,其子网标识字段和节点标识字段的取值可以均为“all”,数据标识字段的取值可以为“black_new_all”,另外,归档时刻间隔可以为7天。此时,响应于上述数据归档事件,subnet1和subnet2中的各个子网节点可以按照7天的时间间隔对自身所维护的区块进行周期性归档处理。如在对区块高度在0~1000的区块进行首次归档处理后,7天后若区块高度达1200,则7天后可以对区块高度在1001~1200的新增区块进行第二次归档处理。当然,在mainnet0中新增其他区块链子网后,该子网中的各个子网节点也可以按照上述信息对自身维护的区块进行周期性的归档处理,不再赘述。通过该方式,区块链主网可以通过数据归档事件控制第一区块链网络中的第一区块链节点实现对新增区块的周期性归档,而无需多次执行所述数据归档交易,有助于进步提升对归档处理的管理效率。
可以理解的是,数据归档交易中包含的节点指示信息和节点指示信息可以被记录在所述数据归档交易中。基于此,第二区块链节点在执行该交易时,可以根据所述节点指示信息所指示的数据归档事件节点的状态确定是否生成所述数据归档事件。例如,第二区块链节点在执行所述数据归档交易的过程中,可以根据所述节点指示信息确定待归档子网中的待归档节点,并在确定第一区块链节点处于运行状态的情况下再生成所述数据归档事件。如前所述,区块链主网用于管理相应的区块链子网,而该主网的主网节点中可以维护各个子网的子网状态信息以及各个子网中相应子网节点的节点状态信息。据此,第二区块链节点可以先根据本地维护的子网状态信息查询所述待归档子网的状态:若确定待归档子网处于运行状态,则可以进一步在该子网对应的节点状态信息中查询待归档节点的状态,若确定待归档节点处于运行状态,则可以生成所述数据归档事件。当然,在所述节点指示信息指示多个待归档节点的情况下,若通过上述方式确定部分待归档节点处于运行状态,也可以正常生成所述数据归档事件,以便这部分待归档节点对自身维护的待归档数据进行归档处理。而在通过上述方式确定各个待归档节点均处于非运行状态的情况下,第二区块链节点可以拒绝生成数据归档事件——各个待归档节点均无法进行归档处理,此时生成所述数据归档事件已无意义。可见,第一区块链节点处于运行状态,表明第一区块链节点及其所处的第一区块链网络均处于运行状态。通过上述方式,第二区块链节点在生成所述数据归档事件时可以确定第一区块链节点处于运行状态,即确定第一区块链节点可以正常响应该事件,此时生成该事件可以一定程度上保证事件的生产是有意义的,生成的该事件可以被第一区块链节点顺利执行响应。
在一实施例中,第一区块链节点可以通过多种方式获取第二区块链节点执行数据归档交易生成的所述数据归档事件。如前所述,区块链网络通常支持事件监听机制,因此第一区块链节点可以利用该机制监听所述数据归档事件。可以理解的是,因为第二区块链网络中的各个区块链节点执行同一数据归档交易可以产生相同的数据归档事件,因此第一区块链节点实际监听到的所述数据归档事件可以由第二区块链网络中的任一区块链节点执行数据归档交易所生成,而并不仅限于与第一区块链节点部署于同一节点设备的第二区块链节点,本说明书实施例并不对此进行限制。通过前述事件监听机制,可以异步实现数据归档事件的生成过程与响应过程,有助于提升第一区块链网络和第二区块链网络对区块链事务的整体处理效率。或者,为了尽量节省第一区块链节点获取到数据归档事件消耗的时间,也可以由第二区块链节点将自身生成的所述数据归档事件主动发送至第一区块链节点。例如,第二区块链节点在生成所述数据归档事件之后,可以根据其中包含的节点指示信息确定自身所处节点设备中部署的第一区块链节点是否为前述待归档节点,并在第一区块链节点确实为待归档节点的情况下将数据归档事件发送至该节点。通过该方式,第二区块链节点在生成所述数据归档事件的情况下即可将该事件针对性地发送至第一区块链节点,以便后者尽快响应于该事件进行归档处理。其中,第二区块链节点也可以在确定第一区块链网络处于运行状态的情况下发送该事件,以尽量保证该事件可以被第一区块链节点顺利执行响应。
步骤204,在所述节点指示信息表明第一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据。
如前所述,上述节点指示信息可以为待归档节点的身份信息,因而,第一区块链节点可以在所述节点指示信息包括自身身份信息的情况下,确定自身为所述待归档节点,即确定需要对自身维护的待归档数据进行归档处理。其中,第一区块链节点的节点身份信息可以为该节点的节点公钥或在第一区块链网络中的节点标识等信息,不再赘述。
步骤206,将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
在上述实施例中,由第二区块链网络中的第二区块链节点执行数据归档交易生成包含节点指示信息和数据指示信息的数据归档事件,第一区块链网络中的第一区块链节点响应于该事件,在所述节点指示信息表明第一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据,并将本地维护的用于访问所述待归档数据第一访问路径更新为用于访问所述归档后数据的第二访问路径。
可以理解的是,因为第一区块链网络由第二区块链网络所管理,所以第一区块链网络为区块链子网,其中的第一区块链网络为子网节点;相应地,第二区块链网络为区块链主网,其中的第二区块链网络为主网节点。通过上述方式,主网节点通过执行数据归档交易可以控制相应的子网节点对自身所维护的待归档数据进行归档处理,换言之,区块链主网可以控制区块链子网中的特定区块链节点,对特定的区块链数据进行针对性的归档处理。另外,将待归档数据的访问地址更新为归档后数据的访问地址,也有助于子网节点对归档后数据的正常访问,从而保证归档处理后的区块链子网的正常运行。在该方式中,通过主网节点执行交易的方式实现对子网数据归档的集中控制。一方面,无需运维人员对各个子网节点所处的节点设备分别进行链下形式的归档操作,大大提升了区块链数据的归档效率;另一方面,上述数据归档交易的运行记录会被存证在区块链主网中,所以数据归档过程是可追溯的,实现了对归档过程的准确记录和可靠存证,有效提升了区块链数据归档过程的安全性。
在获取到所述数据归档事件的情况下,第一区块链节点可以根据其中包含的节点指示信息确定待归档节点,并在确定自身为待归档节点的情况下,响应于该事件对所述数据指示信息指示的待归档数据进行归档操作以得到归档后数据。如前所述,第一区块链节点和第二区块链节点本质上是运行节点代码的节点实例,两实例可以运行于节点设备所创建的同一进程或者不同进程中。可以理解的是,两节点实例由不同的线程分别运行。在该场景下,若第一区块链节点由自身所处进程中的第一线程所运行,则第一区块链节点可以在该进程中创建区别于第一线程的第二线程,并触发该第二线程对所述数据执行信息所指示的待归档数据进行归档处理。通过该方式,在第一区块链节点所处进程中由第二线程实现归档处理,并由第一线程实现第一区块链节点的原有节点功能(如执行区块链交易、交易共识等),将第一区块链节点的归档处理过程与原有节点功能相分离,有效避免了本方案所述归档处理对第一区块链节点的原有节点功能可能产生的干扰,保证第一区块链节点在归档处理过程中具有较高的运行稳定性。
在本说明书实施例中,所述待归档数据可以为第一区块链节点维护的区块,任一区块中可以包含区块链交易和交易收据;或者,所述待归档数据也可以包含第一区块链节点所维护的状态数据或其他类型的数据,不再赘述。以区块为例,所述数据指示信息可以包括区块高度范围,显然,区块高度处于该区块高度范围内的各个区块即为待归档数据。此时,第一区块链节点可以对上述各个区块进行归档处理。其中,对上述各个区块进行归档处理的过程,可以包括将各个区块打包、压缩并生成归档后数据。
需要说明的是,本说明书实施例所述的数据指示信息可以针对各个待归档节点分别指示相应的待归档数据。如前所述,数据指示信息可以针对各个待归档节点指示相同的待归档数据,如各个待归档节点均可以按照上述区块高度范围,对自身维护的相应区块进行归档处理。或者,数据指示信息也可以针对各个待归档节点分别指示不同的待归档数据。仍以图1为例,在第一区块链网络为subnet1、待归档节点为subnet0中的nodeA1和nodeB1的情况下,数据归档事件中的数据指示信息可以指示nodeA1对应的区块高度范围为H1~H2、并指示nodeB1对应的区块高度范围为H3~H4。针对上述信息,nodeA1可以对自身所维护的区块高度处于H1~H2的各个区块进行归档处理以得到相应的归档后数据、nodeB1可以对自身所维护的区块高度处于H3~H4的各个区块进行归档处理以得到相应的归档后数据。通过上述方式,数据归档交易可以为各个待归档节点针对性地指定相应的待归档数据,以便实现各个待归档节点的差异化归档处理,有助于满足不同子网节点的个性化归档需求。
在一实施例中,第一区块链节点可以通过快照的方式进行上述归档处理以生成归档后数据。例如,第一区块链节点可以根据所述数据指示信息在本地维护的历史数据中确定待归档数据,然后在快照时刻对所述待归档数据生成数据快照,并基于所述数据快照生成归档后数据。其中,第一区块链节点本地维护的历史数据可以为第一区块链节点在参与第一区块链网络的区块链事务过程中产生的全部区块链数据。考虑到第一区块链节点产生的历史数据通常数据量较大,因此先在其中确定待归档数据再针对性地生成数据快照,有助于避免无效处理提升快照效率。如在数据指示信息指示的待归档数据为区块的情况下,第一区块链节点可以针对当前区块生成数据快照,而不必对自身维护的状态数据生成数据快照。另外,可以采用多种技术生成数据快照,如克隆(Clone)快照、镜像分离(Splitmirror)快照、写时拷贝(COW)快照、写时重定向(ROW)快照等,具体可参见相关技术中的记载,此处不再赘述。
以历史数据为区块为例,如图3所示,随着时间的流逝,第一区块链节点依次生成各个区块(沿图中时间轴方向)。在快照时刻(对应于当前区块),第一区块链节点可以对当前时刻已经生成的各个历史区块生成数据快照,并根据该数据快照生成相应的归档后数据。当然,在快照时刻之后,第一区块链节点可能会产生新的区块(即最新区块)。
实际上,之所以对第一区块链节点自身维护的待归档数据进行归档处理,主要是因为第一区块链节点对待归档数据的使用需求较弱,而待归档数据占用第一区块链节点所处节点设备中较多的高效存储空间,导致节点设备的存储空间利用率较低。可见,应当对第一区块链节点所维护的数据中访问频率较低的数据进行归档(即待归档数据应当是访问频率较低的数据),而对于访问较高的数据则应当尽量避免归档。但是由于数据归档交易的发起方可能并不清楚第一区块链节点中哪些是热点数据、哪些是非热点数据,所以数据归档事件中的数据指示信息所指示的待归档数据中可能存在被第一区块链节点频繁访问的数据,此时第一区块链节点应当避免归档这部分数据。例如,第一区块链节点可以根据所述待归档数据的访问记录确定所述数据快照中的热点数据(对应于上述访问频率较高的数据),并基于所述数据快照中除所述热点数据之外的非热点数据(对应于上述访问频率较低的数据)生成归档后数据。通过该方式,第一区块链节点可以仅对访问频率较低的非热点数据进行归档,而避免对访问频率较高的热点数据进行归档,从而有效避免了对热点数据归档可能产生的归档后数据被频繁访问的问题,有效实现了归档处理的实际意义。
在上述归档处理完成后,除了对上述访问路径进行更新之外,第一区块链节点还可以删除所述待归档数据,以便回收待归档数据占用的存储空间。另外,由于上述数据快照属于归档处理的中间步骤,因此在上述归档处理完成后,也可以删除上述数据快照。当然,上述待归档数据和数据快照均可以删除。但是,由于第一区块链节点需要频繁访问所述热点数据对应的部分历史数据,所以第一区块链节点可以保留所述历史数据中对应于所述热点数据的部分数据,以便第一区块链节点此后继续访。
仍以历史数据为区块为例,结合图4对上述归档过程进行说明。如图4所示,第一区块链节点可以根据所述数据指示信息,在当前区块之前的全部历史区块中确定待归档数据。例如,若数据指示信息指定的区块高度范围为H(1)~H(n),则第一区块链节点可以确定区块链高度为H(1)、H(2)、…、H(n)的各个区块为待归档数据,从而第一区块链节点可以针对上述待归档数据生成数据快照。以采用克隆快照技术为例,针对待归档数据生成的数据快照相当于待归档数据的拷贝,此时第一区块链节点可以根据上述待归档数据的访问记录确定数据快照中的热点数据和非热点数据。不妨假设热点数据的区块高度为H(n-1)~H(n),非热点数据的区块高度为H(1)~H(n-2)。此时,第一区块链节点可以针对上述信息非热点数据生成归档后数据。其中,第一区块链节点对所述热点数据进行的归档处理可以包括压缩和归档,其中,压缩可以采用剪枝(为了减少参数量和运算量)和量化(为了压缩数据的占用量)技术;归档可以通过dump(如mongodump)的方式将各个非热点数据进行混合,并将其输出到一个文件中,该文件即可作为所述归档后数据。
在上述归档处理完成后,第一区块链节点可以将本地维护的用于访问待归档数据的第一访问路径更新为用户访问归档后数据的第二访问路径。可以理解的是,在针对非热点数据进行前述归档处理的情况下,所述第一访问路径用于访问所述历史数据中对应于非热点数据的部分数据,而所述历史数据中对应于所述热点数据的部分数据自身的存储空间和访问路径则不受影响。如图4所示,在路径更新之前,第一区块链节点可以通过第一访问路径读取区块高度为H(1)~H(n-2)的各个区块;而在更新路径后,第一区块链节点可以通过第二访问路径读取归档后数据,而上述各个区块则被从第一访问路径对应的存储空间删除,第一区块链节点自然无法继续访问。而对于区块高度为H(n-1)~H(n)的区块,所述路径更新并不影响这部分区块,因此在路径更新前后,第一区块链节点均可以通过相应的访问地址读取这部分区块。
在一实施例中,第一区块链节点可以通过重启的方式更新所述路径。例如,第一区块链节点可以暂停正在处理的区块链事务,并重启第一区块链节点,以将本地维护的第一访问路径更新为第二访问路径。其中,第一区块链节点可以响应于接收到的重启指令而触发自身重启,该指令可以由第一区块链网络或者第二区块链网络的管理员发出,也可以由第一区块链节点对应的普通用户发出,还可以第一区块链节点所处节点设备的运维人员发出,本说明书实施例并不对此进行限制。通过该方式,上述人员可以在第一区块链节点的归档处理完成后,选择合适的时机(如凌晨等第一区块链网络中的区块链事务较少的时间段)触发第一区块链节点完成重启,以避免应当第一区块链节点对第一区块链网络中的区块链事务的正常处理。
考虑到第一区块链节点在进行所述归档处理得到归档后数据之后,还需要将待归档数据的访问路径更新为归档后数据的访问路径,而在上述访问路径更新(如上述重启)过程中,第一区块链节点可能无法正常参与处理第一区块链网络的区块链事务。特别是在第一区块链网络中的待归档节点占比较大甚至全部子网节点均为待归档节点的情况下,若全部待归档节点同时或在短时间内分别进行归档和路径更新处理,则可能导致第一区块链网络一段时间内无法正常处理区块链事务,甚至产生运行事故。为避免上述意外情况的出现,所述数据归档事件可以为各个待归档节点分别指定相应的处理时间,以控制各个待归档节点分别在自身对应的处理时间内完成上述归档处理和路径更新。例如,所述数据归档事件还包含归档时刻,接收到所述数据归档事件的第一区块链节点可以按照所述归档时刻,对所述数据指示信息指示的待归档数据进行归档处理。其中,不同待归档的归档时刻应尽量不同,而且上述归档时刻可以考虑归档处理所需消耗的时长。通过该方式,可以通过所述数据归档交易控制第一区块链网络中的各个待归档节点在相应的归档时刻分别进行归档处理,从而尽量避免大量待归档节点同时或在短时间内集中进行归档处理可能对第一区块链网络的性能造成的不良影响。
另外,可以理解的是,第一区块链网络中的各个节点可能具有不同的类型,以用于实现不同的功能,如用于数据共识的共识节点、用于执行区块链交易的交易执行节点等。对此,所述数据归档事件还可以尽量将同一类型不同待归档节点的归档时刻设置地较为分散,以避免属于同一类型的大量待归档节点同时或者在短时间内分别进行归档处理,即尽量保证在任一时刻都有足够多的同一类型的待归档节点可以正常参与处理相应类型的区块链事务,提升第一区块链网络的运行稳定性。
在本说明书实施例中,上述第一访问路径指向第一区块链节点所处节点设备中的第一本地存储空间;而第二访问路径指向第一区块链节点所处节点设备中区别于第一本地存储空间的第二本地存储空间,其中,所述第二本地存储空间可以为节点设备中读写性能较高的存储空间,如第一区块链节点对应的本地数据库。通过该方式,可以将保存在高性能存储空间的待归档数据转移至低性能存储空间(作为归档后数据)保存,从而在保证第一区块链节点正常运行(即第一区块链节点仍然可以根据更新后的第二访问地址正常访问归档后数据)的同时,节省节点设备中的高性能存储空间。或者,所述第二访问路径也可以指向第一区块链节点所处节点设备之外的其他存储空间。通过该方式,可以将保存在节点设备本地存储空间的待归档数据转移至节点设备之外的存储空间保存,从而在保证第一区块链节点正常运行的同时,节省节点设备的本地存储空间。
另外,考虑到第一区块链节点在路径更新过程中可能无法参与第一区块链网络的区块链事务,而在路径更新(如重启)的过程中,第一区块链网络中的其他节点可能会生成最新数据,所以为保证路径更新后的第一区块链节点能够继续参与第一区块链网络的区块链事务,第一区块链节点可以从第一区块链网络中的其他节点处同步在所述快照时刻之后生成的最新数据。
至此,对本方案所述的一种数据归档方案说明完毕。由前述实施例可见,该数据归档方案是基于区块链主网和区块链子网这一场景实现的。实际上,本说明书还提出一种基于任一区块链网络实现的数据归档方案,下面结合附图对该方案进行描述。
图5是一示例性实施例提供的另一种数据归档方法的流程图。如图5所示,该方法应用于区块链网络中的任一区块链节点,该方法可以包括以下步骤:
步骤502,执行数据归档交易,以获取节点指示信息和数据指示信息。
步骤504,在所述节点指示信息表明所述任一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据。
步骤506,将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
首先需要说明的是,本方案所述的区块链网络可以为任一区块链网络。例如,该区块链网络可以为独立区块链网络,该网络既不管理其他区块链网络,也不被其他区块链网络所管理,如图1所示的mainnet1。再例如,该区块链网络也可以为非独立区块链网络,该网络可以管理有其他区块链网络,如图1所示的mainnet0;也可以被其他区块链网络所管理,如图1所示的subnet1或subnet2。
与图1所述方案不同的是,该方案中的数据归档交易由区块链网络自身所包含的区块链节点执行,并由该区块链网络自身所包含的区块链节点中的待归档节点响应于数据归档事件对自身维护的待归档数据进行归档处理。例如,在所述区块链网络为mainnet1的情况下,该网络中的nodeF~H可以执行所述数据归档交易产生数据归档事件,其中的nodeE、nodeF和/或nodeG可以作为待归档节点响应于该事件进行归档处理。再例如,在所述区块链网络为mainnet0的情况下,该网络中的nodeA~E可以执行所述数据归档交易产生数据归档事件,其中至少一个节点可以作为待归档节点响应于该事件进行归档处理。又例如,在所述区块链网络为subnet1的情况下,该网络中的nodeA1~D1可以执行所述数据归档交易产生数据归档事件,其中至少一个节点可以作为待归档节点响应于该事件进行归档处理,不再赘述。
在一实施例中,所述任一区块链节点可以在所述节点指示信息包括第一区块链节点的身份信息的情况下,确定自身为待归档节点。
在一实施例中,所述数据归档交易中包含归档时刻,此时所述任一区块链节点可以按照所述归档时刻,对所述数据指示信息指示的待归档数据进行归档处理。
在一实施例中,所述任一区块链节点由第一线程所运行,此时所述任一区块链节点可以在自身所处进程中创建第二线程,并触发第二线程对所述数据指示信息所指示的待归档数据进行归档处理。
在一实施例中,所述数据指示信息包括区块高度范围,此时所述任一区块链节点可以对区块高度处于所述区块高度范围内的各个区块进行归档处理。
所述任一可以根据所述数据指示信息在本地维护的历史数据中确定待归档数据,然后在快照时刻对所述待归档数据生成数据快照,并基于所述数据快照生成归档后数据。
在一实施例中,所述任一区块链节点可以根据所述待归档数据的访问记录确定所述数据快照中的热点数据,并基于所述数据快照中除所述热点数据之外的非热点数据生成归档后数据,此后还可以保留所述历史数据中对应于所述热点数据的部分数据。
在一实施例中,所述任一区块链节点还可以删除所述待归档数据和/或所述数据快照。
在一实施例中,所述任一区块链节点在将本地维护的第一访问路径更新为第二访问路径完成后,还可以从所述区块链网络中的其他节点处同步在所述快照时刻之后生成的最新数据。
在一实施例中,所述任一区块链节点可由通过重启的方式更新路径。例如,所述任一区块链节点可以暂停正在处理的区块链事务,然后重启该节点,以将本地维护的第一访问路径更新为第二访问路径。
在一实施例中,所述第一访问路径指向所述任一区块链节点所处节点设备中的第一本地存储空间;所述第二访问路径指向该节点设备中区别于第一本地存储空间的第二本地存储空间;或者,第二访问路径指向该节点设备之外的其他存储空间。
上述各个实施例的具体实施方式可以参见图1所对应前述实施例的记载,此处不再赘述。
在该方案中,由区块链网络中的任一区块链节点执行数据归档交易获取包含节点指示信息和数据指示信息,进而在所述节点指示信息表明所述任一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据,并将本地维护的用于访问所述待归档数据第一访问路径更新为用于访问所述归档后数据的第二访问路径。
可以理解的是,区块链网络中的任一区块链节点可以通过执行数据归档交易的方式实现对待归档数据的归档处理,能够实现对数据归档的集中控制。而且将待归档数据的访问地址更新为归档后数据的访问地址,也有助于所述任一区块链节点实现对归档后数据的正常访问,从而保证归档处理后的区块链网络的正常运行。可见,一方面,无需运维人员对各个待归档节点所处的节点设备分别进行链下形式的归档操作,大大提升了区块链数据的归档效率;另一方面,上述数据归档交易的运行记录会被存证在区块链网络中,所以数据归档过程是可追溯的,实现了对归档过程的准确记录和可靠存证,有效提升了区块链数据归档过程的安全性。
图6是一示例性实施例提供的一种设备的示意结构图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
如图7所示,图7是本说明书根据一示例性实施例提供的一种数据归档装置的框图,该装置可以应用于如图6所示的设备中,以实现本说明书的技术方案。该装置应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有第二区块链网络中的第二区块链节点,第一区块链网络由第二区块链网络所管理,所述装置包括:
事件获取单元701,用于获取第二区块链节点执行数据归档交易生成的数据归档事件,所述数据归档事件包含节点指示信息和数据指示信息;
数据归档单元702,用于在所述节点指示信息表明第一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
路径更新单元703,用于将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
可选的,所述数据归档单元702还用于:
监听第二区块链节点执行数据归档交易生成的数据归档事件;或者,
接收第二区块链节点发送的所述数据归档事件,所述数据归档事件由第二区块链节点响应于所述节点指示信息表明第一区块链节点为待归档节点而发送。
可选的,所述数据归档事件由第二区块链节点在确定第一区块链网络处于运行状态的情况下发送。
可选的,所述节点指示信息表明第一区块链节点为待归档节点,包括:
所述节点指示信息包括第一区块链节点的身份信息。
可选的,所述数据归档事件还包含归档时刻,所述数据归档单元702还用于:
按照所述归档时刻,对所述数据指示信息指示的待归档数据进行归档处理。
可选的,第一区块链节点由第一线程所运行,所述数据归档单元702还用于:
在第一区块链节点所处进程中创建第二线程,并触发第二线程对所述数据指示信息所指示的待归档数据进行归档处理。
可选的,所述数据指示信息包括区块高度范围,所述数据归档单元702还用于:
对区块高度处于所述区块高度范围内的各个区块进行归档处理。
可选的,所述数据归档单元702还用于:
根据所述数据指示信息在本地维护的历史数据中确定待归档数据;
在快照时刻对所述待归档数据生成数据快照,并基于所述数据快照生成归档后数据。
可选的,
所述数据归档单元702还用于:根据所述待归档数据的访问记录确定所述数据快照中的热点数据,并基于所述数据快照中除所述热点数据之外的非热点数据生成归档后数据;
所述装置还包括数据保留单元704,用于保留所述历史数据中对应于所述热点数据的部分数据。
可选的,还包括:
数据删除单元705,用于删除所述待归档数据和/或所述数据快照。
可选的,还包括:
数据同步单元706,用于在将本地维护的第一访问路径更新为第二访问路径完成后,从第一区块链网络中的其他节点处同步在所述快照时刻之后生成的最新数据。
可选的,所述路径更新单元703还用于:
暂停正在处理的区块链事务;
重启第一区块链节点,以将本地维护的第一访问路径更新为第二访问路径。
可选的,
第一访问路径指向第一区块链节点所处节点设备中的第一本地存储空间;
第二访问路径指向第一区块链节点所处节点设备中区别于第一本地存储空间的第二本地存储空间;或者,第二访问路径指向第一区块链节点所处节点设备之外的其他存储空间。
如图8所示,图8是本说明书根据一示例性实施例提供的另一种数据归档装置的框图,该装置可以应用于如图6所示的设备中,以实现本说明书的技术方案。该装置应用于区块链网络中的任一区块链节点,所述装置包括:
交易执行单元801,用于执行数据归档交易,以获取节点指示信息和数据指示信息;
数据归档单元802,用于在所述节点指示信息表明所述任一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
路径更新单元803,用于将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
可选的,所述数据指示信息包括区块高度范围,所述数据归档单元802还用于:
对区块高度处于所述区块高度范围内的各个区块进行归档处理。
可选的,所述数据归档单元802还用于:
根据所述数据指示信息在本地维护的历史数据中确定待归档数据;
在快照时刻对所述待归档数据生成数据快照,并基于所述数据快照生成归档后数据。
可选的,还包括:
数据同步单元804,用于在将本地维护的第一访问路径更新为第二访问路径完成后,从所述区块链网络中的其他节点处同步在所述快照时刻之后生成的最新数据。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (21)
1.一种数据归档方法,应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有第二区块链网络中的第二区块链节点,第一区块链网络由第二区块链网络所管理,所述方法包括:
获取第二区块链节点执行数据归档交易生成的数据归档事件,所述数据归档事件包含节点指示信息和数据指示信息;
在所述节点指示信息表明第一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
2.根据权利要求1所述的方法,所述获取第二区块链节点执行数据归档交易生成的数据归档事件,包括:
监听第二区块链节点执行数据归档交易生成的数据归档事件;或者,
接收第二区块链节点发送的所述数据归档事件,所述数据归档事件由第二区块链节点响应于所述节点指示信息表明第一区块链节点为待归档节点而发送。
3.根据权利要求2所述的方法,所述数据归档事件由第二区块链节点在确定第一区块链网络处于运行状态的情况下发送。
4.根据权利要求1所述的方法,所述节点指示信息表明第一区块链节点为待归档节点,包括:
所述节点指示信息包括第一区块链节点的身份信息。
5.根据权利要求1所述的方法,所述数据归档事件还包含归档时刻,所述对所述数据指示信息所指示的待归档数据进行归档处理,包括:
按照所述归档时刻,对所述数据指示信息指示的待归档数据进行归档处理。
6.根据权利要求1所述的方法,第一区块链节点由第一线程所运行,所述对所述数据指示信息所指示的待归档数据进行归档处理,包括:
在第一区块链节点所处进程中创建第二线程,并触发第二线程对所述数据指示信息所指示的待归档数据进行归档处理。
7.根据权利要求1所述的方法,所述数据指示信息包括区块高度范围,所述对所述数据指示信息所指示的待归档数据进行归档处理,包括:
对区块高度处于所述区块高度范围内的各个区块进行归档处理。
8.根据权利要求1所述的方法,所述对所述数据指示信息所指示的待归档数据进行归档处理得到归档后数据,包括:
根据所述数据指示信息在本地维护的历史数据中确定待归档数据;
在快照时刻对所述待归档数据生成数据快照,并基于所述数据快照生成归档后数据。
9.根据权利要求8所述的方法,
所述基于所述数据快照生成归档后数据,包括:根据所述待归档数据的访问记录确定所述数据快照中的热点数据,并基于所述数据快照中除所述热点数据之外的非热点数据生成归档后数据;
所述方法还包括:保留所述历史数据中对应于所述热点数据的部分数据。
10.根据权利要求8所述的方法,还包括:
删除所述待归档数据和/或所述数据快照。
11.根据权利要求8所述的方法,还包括:
在将本地维护的第一访问路径更新为第二访问路径完成后,从第一区块链网络中的其他节点处同步在所述快照时刻之后生成的最新数据。
12.根据权利要求1所述的方法,所述将本地维护的第一访问路径更新为第二访问路径,包括:
暂停正在处理的区块链事务;
重启第一区块链节点,以将本地维护的第一访问路径更新为第二访问路径。
13.根据权利要求1所述的方法,
第一访问路径指向第一区块链节点所处节点设备中的第一本地存储空间;
第二访问路径指向第一区块链节点所处节点设备中区别于第一本地存储空间的第二本地存储空间;或者,第二访问路径指向第一区块链节点所处节点设备之外的其他存储空间。
14.一种数据归档方法,应用于区块链网络中的任一区块链节点,所述方法包括:
执行数据归档交易,以获取节点指示信息和数据指示信息;
在所述节点指示信息表明所述任一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
15.根据权利要求14所述的方法,所述数据指示信息包括区块高度范围,所述对所述数据指示信息所指示的待归档数据进行归档处理得到归档后数据,包括:
对区块高度处于所述区块高度范围内的各个区块进行归档处理。
16.根据权利要求14所述的方法,所述对所述数据指示信息所指示的待归档数据进行归档处理得到归档后数据,包括:
根据所述数据指示信息在本地维护的历史数据中确定待归档数据;
在快照时刻对所述待归档数据生成数据快照,并基于所述数据快照生成归档后数据。
17.根据权利要求16所述的方法,还包括:
在将本地维护的第一访问路径更新为第二访问路径完成后,从所述区块链网络中的其他节点处同步在所述快照时刻之后生成的最新数据。
18.一种数据归档装置,应用于第一区块链网络中的第一区块链节点,第一区块链节点所处的节点设备中还部署有第二区块链网络中的第二区块链节点,第一区块链网络由第二区块链网络所管理,所述装置包括:
事件获取单元,用于获取第二区块链节点执行数据归档交易生成的数据归档事件,所述数据归档事件包含节点指示信息和数据指示信息;
数据归档单元,用于在所述节点指示信息表明第一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
路径更新单元,用于将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
19.一种数据归档装置,应用于区块链网络中的任一区块链节点,所述装置包括:
交易执行单元,用于执行数据归档交易,以获取节点指示信息和数据指示信息;
数据归档单元,用于在所述节点指示信息表明所述任一区块链节点为待归档节点的情况下,对所述数据指示信息指示的待归档数据进行归档处理得到归档后数据;
路径更新单元,用于将本地维护的第一访问路径更新为第二访问路径,第一访问路径和第二访问路径分别用于访问所述待归档数据和所述归档后数据。
20.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-17中任一项所述的方法。
21.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-17中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210473919.7A CN114880717A (zh) | 2022-04-29 | 2022-04-29 | 数据归档方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210473919.7A CN114880717A (zh) | 2022-04-29 | 2022-04-29 | 数据归档方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114880717A true CN114880717A (zh) | 2022-08-09 |
Family
ID=82673642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210473919.7A Pending CN114880717A (zh) | 2022-04-29 | 2022-04-29 | 数据归档方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114880717A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114928622A (zh) * | 2022-05-07 | 2022-08-19 | 杭州复杂美科技有限公司 | 多子网区块链网络及其数据存储方法、设备和存储介质 |
-
2022
- 2022-04-29 CN CN202210473919.7A patent/CN114880717A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114928622A (zh) * | 2022-05-07 | 2022-08-19 | 杭州复杂美科技有限公司 | 多子网区块链网络及其数据存储方法、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107423942B (zh) | 一种业务流转的方法及装置 | |
CN113067897B (zh) | 跨链交互方法及装置 | |
CN113067895B (zh) | 组建区块链子网的方法和区块链系统 | |
CN113259456A (zh) | 跨链交互方法及装置 | |
WO2024001022A1 (zh) | 跨子网调用 | |
WO2023050986A1 (zh) | 维护区块链系统的网络架构信息 | |
CN114301828A (zh) | 一种跨子网交互方法、装置、电子设备和存储介质 | |
CN113849266A (zh) | 多Kubernetes集群的业务部署方法及装置 | |
CN113886495B (zh) | 验证区块链数据的方法、装置、电子设备和存储介质 | |
CN113259457A (zh) | 区块链子网的信息同步方法及装置 | |
CN113259117B (zh) | 同步节点信息列表的方法 | |
CN114880717A (zh) | 数据归档方法及装置 | |
CN114363162A (zh) | 区块链日志的生成方法及装置、电子设备、存储介质 | |
CN113259120A (zh) | 同步节点信息列表的方法 | |
CN114866560B (zh) | 区块链节点迁移的方法、装置、电子设备及可读存储介质 | |
WO2023207076A1 (zh) | 区块链子网的组建方法及装置 | |
WO2023185043A1 (zh) | 一种可调用资源的分配方法和装置 | |
CN113259462B (zh) | 区块链消息的分发方法及装置 | |
CN113259459B (zh) | 区块链子网运行状态的控制方法和区块链系统 | |
CN114363335A (zh) | 跨链交互方法及装置 | |
CN113259466B (zh) | 区块链子网运行状态的控制方法和区块链系统 | |
CN114363349B (zh) | 区块链子网的启动方法及装置 | |
CN114338723B (zh) | 一种区块同步方法、装置、电子设备和存储介质 | |
CN117478299B (zh) | 区块链共识算法切换方法、装置和计算机设备 | |
CN116032924A (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 |