发明内容
本申请实施例的目的在于提供一种数据的上传方法、系统、装置、电子设备和计算机可读介质,以解决区块链的多个节点占用磁盘较大空间的问题。具体技术方案如下:
第一方面,提供了一种数据的上传方法,其特征在于,包括:
接收目标节点的从属服务器发送的区块上传请求;
判断所述区块上传请求所对应的区块数据是否已上传至区块数据存储系统;
若所述区块上传请求所对应的区块数据未上传至所述区块数据存储系统,则获取所述区块数据,并将所述区块数据上传至所述区块数据存储系统中的存储空间;
若上传成功,则发送上传成功指令至所述从属服务器,以便于指示所述从属服务器删除所述目标节点中的轻量peer上储存的所述区块数据。
可选的,所述方法还包括:
若所述区块上传请求所对应的区块数据已上传至所述区块数据存储系统,则向所述从属服务器发送已上传响应,以便于所述从属服务器删除所述轻量peer的区块数据。
可选的,所述获取所述区块数据包括:
从全量peer获取所述区块数据,其中所述全量peer与所述区块数据存储系统处于同一局域网。
可选的,所述获取所述区块数据包括:
从所述轻量peer获取所述区块数据,其中所述轻量peer与所述从属服务器处于同一局域网。
可选的,所述方法还包括:
从所述区块上传请求中解析出所述区块数据的标识信息;
基于所述标识信息,确定所述区块上传请求对应的所述区块数据。
可选的,所述判断所述区块上传请求所对应的区块数据是否已上传至区块数据存储系统包括:
记录历史区块上传请求;
判断所述区块上传请求中包含的所述标识信息与所述历史区块上传请求中包含的历史标识信息是否一致;
若一致,则判定所述区块上传请求所对应的区块数据已上传至所述区块数据存储系统。
可选的,所述方法还包括:
接收所述从属服务器发送的数据查询请求,其中,所述数据查询请求用于请求查询所述轻量peer的区块数据;
将所述数据查询请求发送至所述区块数据存储系统,以便于所述区块数据存储系统根据所述数据查询请求,查找包含所述区块数据的区块存储数据;
接收所述区块数据存储系统发送的所述区块存储数据;
将所述区块存储数据发送至所述从属服务器,以便于所述从属服务器将所述区块存储数据发送至所述轻量peer,通过所述轻量peer从所述区块存储数据中查询所述区块数据。
第二方面,一种数据上传系统,其特征在于,包括:
轻量peer,用于存储区块数据;
服务器,用于接收区块上传请求并将所述区块数据发送至区块数据存储系统,以及在上传结束后发送上传成功指令至从属服务器;
区块数据存储系统,用于接收所述服务器发送的所述区块数据,并将上传结束信息发送至所述服务器;
从属服务器,用于从所述服务器接收所述上传成功指令并删除所述轻量peer的区块数据。
第三方面,一种数据的上传装置,其特征在于,包括:
接收模块,用于接收目标节点的从属服务器发送的区块上传请求;
判断模块,用于判断所述区块上传请求所对应的区块数据是否已上传至区块数据存储系统;
获取模块,用于若所述区块上传请求所对应的区块数据未上传至所述区块数据存储系统,则获取所述区块数据,并将所述区块数据上传至所述区块数据存储系统中的存储空间;
发送模块,用于若上传成功,则发送上传成功指令至所述从属服务器,以便于指示所述从属服务器删除所述目标节点中的轻量peer上储存的所述区块数据。
第四方面,提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求任一项所述的方法的步骤。
第五方面,提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所任一所述方法。
本发明实施例提供的上述技术方案与现有技术相比具有如下优点:本发明采用区块数据存储系统集中存储各节点的历史账本,使各节点仅保存最新的信息数据,可以减少磁盘占有量,也减少了磁盘的冗余信息。当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供了一种数据的上传方法,可以应用于数据上传系统中的服务器。如图1所示,为本发明实施例提供了一种数据上传框架示意图,包括从属服务器、服务器、轻量peer、全量peer和区块数据存储系统。其中,轻量peer为区块链中存储最新区块数据的节点,全量peer为区块链中存储全部区块数据的节点,当区块链中节点数量较多时,会占用磁盘的大量空间。从属服务器与轻量peer位于同一个局域网中,可以根据轻量peer的区块数据存储量上传区块数据至服务器,并可删除轻量peer中的区块数据。服务器与区块数据存储系统存在于同一局域网中,服务器与从属服务器之间互相传输通信信息,服务器接收从属服务器发送的区块上传请求并判断是否将该请求上传至区块数据存储系统,如服务器将该请求上传至区块数据存储系统,则将区块数据存储系统返回的上传成功指令发送至从属服务器,以使从属服务器删除轻量peer中的区块数据;如服务器判断无需将该请求上传至区块数据存储系统,则发送已上传指令至从属服务器,以使从属服务器删除轻量peer中的区块数据。
下面将结合具体实施方式,对本申请实施例提供的一种数据的上传方法进行详细的说明,如图2所示,具体步骤如下:
步骤201,接收目标节点的从属服务器发送的区块上传请求。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,区块链技术生态中的交易会将每笔转账分发到各个目标节点并得到它们的确认,才可完成该笔交易,由于区块链中的各个目标节点都保存了相同的区块数据,占据了磁盘的较大空间,不利于系统的长期稳定运行,因此需要将目标节点中的相同区块数据上传。
目标节点包括轻量peer和从属服务器,在目标节点将轻量peer的区块数据上传之前,从属服务器生成与区块数据对应的区块上传请求并发送至服务器,服务器接收该区块上传请求。
步骤202:判断区块上传请求所对应的区块数据是否已上传至区块数据存储系统。
区块链中存在含有相同区块数据的多个轻量peer,为了防止多个区块数据重复上传至区块数据存储系统,服务器要对接收到的区块上传请求进行分析,判断区块上传请求所对应的区块数据是否已上传至区块数据存储系统,具体来说,服务器通过对区块上传请求所对应的标识信息进行判断,判断该区块上传请求所对应的标识信息与历史区块上传请求包含的历史标识信息是否一致,以此来判定区块上传请求所对应的区块数据是否已上传至区块数据存储系统。其中,标识信息指与区块上传请求对应的区块数据的特征,例如:英文或数字代码、符号、图案等,本发明实施例不做具体限制。
其中,区块数据存储系统是是一个高度容错性的系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。本发明实施例以区块数据存储系统是HDFS(HadoopDistributed System,Hadoop分布式文件系统)为例来进行描述,HDFS文件大小是GB到TB的级别,所以,HDFS被调整成支持大文件,它应该提供很高的聚合数据带宽,一个集群中支持数百个节点,一个集群中还应该支持千万级别的文件,HDFS对外开放文件命名空间并允许用户数据以文件形式存储。
步骤203:若区块上传请求所对应的区块数据未上传至区块数据存储系统,则获取区块数据,并将区块数据上传至区块数据存储系统中的存储空间。
若服务器判定区块上传请求中包含的标识信息与历史区块上传请求中包含的历史标识信息不一致,表明该标识信息对应的区块数据未曾上传过区块数据存储系统,因此,服务器获取该区块数据,并将区块数据上传至区块数据存储系统中。
步骤204:若上传成功,则发送上传成功指令至从属服务器,以便于指示从属服务器删除目标节点中的轻量peer上储存的区块数据。
如果服务器成功将区块数据上传至区块数据存储系统,则区块链中轻量peer和区块数据存储系统中含有相同的区块数据,为了减少磁盘占有量,服务器在上传成功后,会发送上传成功指令返回至从属服务器,并将与此次上传成功指令对应的区块上传请求记录为历史区块上传请求,以便于和新的区块上传请求做对比。从属服务器在接收到上传成功指令后,删除该轻量peer上存储的区块数据。
由于各轻量peer存储的区块数据相同,在其中一个轻量peer将区块数据至区块数据存储系统后,该已上传区块数据的轻量peer的区块上传请求为历史区块上传请求。在这种情形下,如果服务器接收到其他轻量peer区块上传请求,由于其他轻量peer的区块上传请求所包含区块数据的标识信息与历史区块上传请求所包含区块数据的标识信息一致,服务器会判定其他轻量peer的区块数据已上传至区块数据存储系统,则服务器会向从属服务器发送给已上传响应,表示该区块数据无需重新上传,并指示从属服务器将发送区块上传请求的轻量peer的区块数据删除。
可选的,本发明实施例还可以为,服务器成功将一个轻量peer的区块数据上传至区块数据存储系统后,由于该轻量peer和其他目标节点中轻量peer包含的区块数据相同,服务器自动发送删除指令至各从属服务器,以方便各从属服务器及时将各自目标节点中轻量peer的区块数据删除,避免了服务器重复接收其他目标节点的轻量peer的区块上传请求,减少服务器的数据计算量,并减少其他目标节点的轻量peer分别对应的区块上传请求所占的数据通讯量。
在本发明实施例中,区块链中存在从属服务器,该从属服务器与轻量peer处于相同局域网,从属服务器监测轻量peer的区域数据存储量,在轻量peer的区域数据存储量超过设定阈值的情形下,从属服务器发送区块上传请求至服务器,其中,区块上传请求用于请求将区块数据上传至区块数据存储系统。
从属服务器在轻量peer的区域数据存储量超过设定阈值的情形下,发送区块上传请求至服务器,以便于将区块数据通过服务器上传至区块数据存储系统,并删除轻量peer中的区块数据,减少磁盘空间占有量。
可选的,从属服务器也可以定时发送区块上传请求至服务器,避免轻量peer中存储的区块数据过多,浪费磁盘空间占有量。
在本发明实施例中,服务器获取该区块数据,并将区块数据上传至区块数据存储系统中,包括两种获取方式:
获取方式一:服务器从轻量peer获取该区块数据,并将区块数据上传至区块数据存储系统中,其中轻量peer与从属服务器处于同一局域网。
获取方式二:服务器从全量peer获取该区块数据,并将区块数据上传至区块数据存储系统中。全量peer、服务器和区块数据存储系统处于同一个局域网中,分量peer和从属服务器处于另外的局域网中,因此,服务器从处于同一个局域网中的全量peer获取区块数据,可以加快区块数据获取速度。
在本发明实施例中,获取区块数据的具体方式为:服务器根据从从属服务器接收到区块上传请求,从该区块上传请求中解析出区块数据的标识信息,基于标识信息,从区块链的轻量peer获取与标识信息对应的区块数据。
可选的,从区块上传请求中解析出区块数据的标识信息;基于标识信息,确定区块上传请求对应的区块数据。
在本发明实施例中,每个要上传的区块数据都对应着一个区块上传请求,服务器可以从区块上传请求中解析出对应的区块数据的标识信息,其中,该标识信息为指与区块上传请求对应的区块数据的特征,例如:英文或数字代码、符号、图案等,本发明实施例不做具体限制。基于该标识信息,服务器确定区块上传请求对应的区块数据。
可选的,记录历史区块上传请求;判断区块上传请求中包含的标识信息与历史区块上传请求中包含的历史标识信息是否一致;若一致,则判定区块上传请求所对应的区块数据已上传至区块数据存储系统。
对于轻量peer的区块数据,每条区块上传请求中都含有对应该区块数据的标识信息,服务器在每次将区块数据上传至区块数据存储系统结束后,都会记录与上传的区块数据的标识信息对应的历史区块上传请求。当服务器接收新的区块上传请求时,会判断该新的区块上传请求中包含的标识信息与历史区块上传请求中包含的历史标识信息是否一致,以此来判定该标识信息对应的区块数据是否曾经上传过区块数据存储系统,若判断一致,则判定区块上传请求所对应的区块数据已上传至区块数据存储系统。
为了达到减少磁盘空间占有量的目的,对于本发明实施例,区块数据存储系统的数量要少于磁盘内各轻量peer的总数量,这种情况下,将各轻量peer的区块数据上传至区块数据存储系统才会减少重复的区块数据,减少磁盘占有空间。举例来说,磁盘内含有包含相同区块数据的十个轻量peer,区块数据存储系统数量为三个,那么在所有轻量peer将区块数据分别上传至三个区块数据存储系统后,十个轻量peer中的区块数据全部删除,则磁盘中只包含三个相同的区块数据,分别存在于三个区块数据存储系统中,既可以减少磁盘空间占有量,节省开支,也可以达到备份的目的,防止区块数据丢失。
本发明实施例还提供了一种数据查询方法,如图4所示,包括以下步骤:
步骤401:接收从属服务器发送的数据查询请求,其中,数据查询请求用于请求查询轻量peer的区块数据。
由于各轻量peer将区块数据已上传至区块数据存储系统,因此各轻量peer只含有最新的区块数据,如果用户想要查询已上传至区块数据存储系统中的目标区块数据,则从属服务器会发送与目标区块数据对应的数据查询请求至服务器,其中,数据查询请求用于请求查询轻量peer的区块数据。
步骤402:将数据查询请求发送至区块数据存储系统,以便于区块数据存储系统根据数据查询请求,查找包含区块数据的区块存储数据。
服务器接收到从属服务器发送的数据查询请求后,将该数据查询请求发送至区块数据存储系统,区块数据存储系统根据与该数据查询请求对应的区块数据,查找包含区块数据的区块存储数据,并将该区块存储数据发送至服务器。
本发明实施例以HDFS为例,HDFS内部机制是将一个文件分割成一个或多个块,这些块被存储在一组数据节点中,名字节点用来操作文件命名空间的文件或目录操作,如打开,关闭,重命名等等。它同时确定块与数据节点的映射,数据节点负责来自文件系统客户的读写请求。HDFS事先将多个服务器上传的区块数据存储在同一组数据节点中,服务器接收到从属服务器发送的数据查询请求后,将该数据查询请求发送至HDFS,HDFS根据与该数据查询请求对应的区块数据,查询包含区块数据的区块存储数据,并将区块存储数据发送至服务器。
步骤403:接收区块数据存储系统发送的区块存储数据。
区块数据存储系统将该区块存储数据发送至服务器,服务器接收区块数据存储系统发送的区块存储数据。
步骤404:将区块存储数据发送至从属服务器,以便于从属服务器将区块存储数据发送至轻量peer,通过轻量peer从区块存储数据中查询区块数据。
服务器区块存储数据发送至从属服务器,以便于从属服务器将区块存储数据发送至轻量peer,由于区块存储数据中包含多个区块数据,轻量peer可以从多个区块数据中查询到与数据查询请求对应的区块数据,完成对区块数据的查询。
基于相同的技术构思,本申请实施例还提供了一种数据上传的时序图,如图3所示:
步骤S301:上传区块数据请求;
分量peer的区块数据存储量超过预设存储量后,从属服务器将区块上传请求发送至服务器。
步骤S302:获取对应的区块数据;
服务器在接收到区块上传请求后,解析区块上传请求包含的区块数据的标识信息,若服务器判定区块上传请求中包含的标识信息与历史区块上传请求中包含的历史标识信息不一致,则服务器从全量peer中获取与区块上传请求对应的区块数据。
步骤S303:上传区块数据;
服务器将该区块数据上传至区块数据存储系统,区块数据存储系统接收到该区块数据后,会发送上传成功指令至服务器。
步骤S304:记录区块上传请求;
服务器接收到上传成功指令,会记录与该上传成功指令对应的区块上传请求。
步骤S305:发送上传成功指令;
服务器将该上传成功指令返还至从属服务器。
步骤S306:删除分量节点区块数据;
从属服务器接收到上传成功指令后,会删除轻量peer上的区块数据。
基于相同的技术构思,本申请实施例还提供了一种数据上传的装置,如图5所示,该装置包括:
第一接收模块501,用于接收目标节点的从属服务器发送的区块上传请求;
判断模块502,用于判断区块上传请求所对应的区块数据是否已上传至区块数据存储系统;
获取模块503,用于区块上传请求所对应的区块数据未上传至区块数据存储系统,则获取区块数据,并将区块数据上传至区块数据存储系统中的存储空间;
第一发送模块504,用于若上传成功,则发送上传成功指令至从属服务器,以便于指示从属服务器删除目标节点中的轻量peer上储存的区块数据。
可选的,第一发送模块504还可以用于:
若区块上传请求所对应的区块数据已上传至区块数据存储系统,则向从属服务器发送已上传响应,以便于从属服务器删除轻量peer的区块数据。
可选的,获取模块503还可以用于:
从全量peer获取区块数据,其中全量peer与区块数据存储系统处于同一局域网。
可选的,获取模块503还可以用于:
从轻量peer获取区块数据,其中轻量peer与从属服务器处于同一局域网。
可选的,获取模块503包括:
解析单元,用于从区块上传请求中解析出区块数据的标识信息;
获取单元,用于基于标识信息,确定区块上传请求对应的区块数据。
可选的,判断模块502包括:
记录单元,用于记录历史区块上传请求;
判断单元,用于判断区块上传请求中包含的标识信息与历史区块上传请求中包含的历史标识信息是否一致。
判定单元,用于若判断一致,则判定区块上传请求所对应的区块数据已上传至区块数据存储系统。
可选的,装置还包括:
第二接收模块,用于接收从属服务器发送的数据查询请求,其中,数据查询请求用于请求查询轻量peer的区块数据;
第二发送模块,用于将数据查询请求发送至区块数据存储系统,以便于区块数据存储系统根据数据查询请求,查找包含区块数据的区块存储数据;
第三接收模块,用于接收区块数据存储系统发送的区块存储数据;
第三发送模块,用于将区块存储数据发送至从属服务器,以便于从属服务器将区块存储数据发送至轻量peer,通过轻量peer从区块存储数据中查询区块数据。
本发明实施例提供的上述技术方案与现有技术相比具有如下优点:本发明采用区块数据存储系统集中存储各节点的历史账本,使各节点仅保存最新的信息数据,可以减少磁盘占有量,也减少了磁盘的冗余信息。
基于相同技术构思,本申请实施例还提供了一种数据上传系统,该数据上传系统包括轻量peer、从属服务器、服务器和区块数据存储系统,其中,
轻量peer,用于存储区块数据;
服务器,用于接收区块上传请求并将区块数据发送至区块数据存储系统,以及在上传结束后发送上传成功指令至从属服务器;
区块数据存储系统,用于接收服务器发送的区块数据,并将上传结束信息发送至服务器;
从属服务器,用于从服务器接收上传成功指令并删除轻量peer的区块数据。
基于相同的技术构思,本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现数据的上传方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据上传的方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据上传的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。