CN111049902A - 基于区块链网络的数据存储方法、装置、存储介质和设备 - Google Patents
基于区块链网络的数据存储方法、装置、存储介质和设备 Download PDFInfo
- Publication number
- CN111049902A CN111049902A CN201911268528.6A CN201911268528A CN111049902A CN 111049902 A CN111049902 A CN 111049902A CN 201911268528 A CN201911268528 A CN 201911268528A CN 111049902 A CN111049902 A CN 111049902A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- node
- stored
- target
- 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
Images
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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于区块链网络的数据存储方法、装置、存储介质和设备,所述方法包括:获取由所述区块链网络中的共识节点发送的数据存储指令;所述数据存储指令携带通过共识的待存储数据;确定所述待存储数据对应的数据标识,并对所述数据标识进行哈希运算得到对应的哈希值;根据存储实例对应的总数量,对所述数据标识对应的哈希值进行模余运算,得到与所述数据标识对应的目标序号;将所述目标序号对应的存储实例作为目标存储实例;将所述待存储数据存储至所述目标存储实例。本申请提供的方案可以实现区块链网络中海量数据的存储。
Description
本申请是于2019年09月16日提交中国专利局,申请号为201910872019.8,发明名称为“基于区块链网络的数据存储方法、装置、存储介质和设备”的分案申请,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及区块链技术领域,特别是涉及一种基于区块链网络的数据存储方法、装置、存储介质和设备。
背景技术
随着计算机技术的发展,出现了区块链技术,区块链技术简称BT(BlockchainTechnology),也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据记录。传统的区块链网络虽然是去中心化的,包括很多共识节点,但是具体到每个共识节点,都采用本地单机磁盘来存储区块中的数据。比如比特币系统中,一个节点把比特币账本下载下来本地存储。比特币的系统是定时增加区块,所以数据的增长是可预期的,按照摩尔定律单机是能够解决的。
但是,对于海量数据存储的场景,比如在电子票据的区块链网络中,电子票据的产生速度是非常快的,因此对于存储资源的需求非常高。而传统区块链网络中,通过单机磁盘来保存数据,由于单机存储上限的限制,导致当前的区块链网络无法应对高频交易带来的海量数据存储问题。
发明内容
基于此,有必要针对由于单机存储上限的限制,导致当前的区块链网络无法应对高频交易带来的海量数据存储的技术问题,提供一种基于区块链网络的数据存储方法、装置、计算机可读存储介质和计算机设备。
一种基于区块链网络的数据存储方法,包括:
获取由所述区块链网络中的共识节点发送的数据存储指令;所述数据存储指令携带通过共识的待存储数据;
确定所述待存储数据对应的数据标识,并对所述数据标识进行哈希运算得到对应的哈希值;
根据存储实例对应的总数量,对所述数据标识对应的哈希值进行模余运算,得到与所述数据标识对应的目标序号;
将所述目标序号对应的存储实例作为目标存储实例;
将所述待存储数据存储至所述目标存储实例。
一种基于区块链网络的数据存储装置,所述装置包括:
第一获取模块,用于获取由所述区块链网络中的共识节点发送的数据存储指令;所述数据存储指令携带通过共识的待存储数据;
第一确定模块,用于确定所述待存储数据对应的数据标识,并对所述数据标识进行哈希运算得到对应的哈希值;根据存储实例对应的总数量,对所述数据标识对应的哈希值进行模余运算,得到与所述数据标识对应的目标序号;将所述目标序号对应的存储实例作为目标存储实例;
存储模块,用于将所述待存储数据存储至所述目标存储实例。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
获取由所述区块链网络中的共识节点发送的数据存储指令;所述数据存储指令携带通过共识的待存储数据;
确定所述待存储数据对应的数据标识,并对所述数据标识进行哈希运算得到对应的哈希值;
根据存储实例对应的总数量,对所述数据标识对应的哈希值进行模余运算,得到与所述数据标识对应的目标序号;
将所述目标序号对应的存储实例作为目标存储实例;
将所述待存储数据存储至所述目标存储实例。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
获取由所述区块链网络中的共识节点发送的数据存储指令;所述数据存储指令携带通过共识的待存储数据;
确定所述待存储数据对应的数据标识,并对所述数据标识进行哈希运算得到对应的哈希值;
根据存储实例对应的总数量,对所述数据标识对应的哈希值进行模余运算,得到与所述数据标识对应的目标序号;
将所述目标序号对应的存储实例作为目标存储实例;
将所述待存储数据存储至所述目标存储实例。
上述基于区块链网络的数据存储方法、装置、计算机可读存储介质和计算机设备,在区块链网络中部署代理节点,从而共识节点可仅执行对待存储数据的共识操作,当共识通过后,可通过代理节点将待存储数据路由至与数据标识对应的目标存储实例中以进行存储。这样,可将共识节点从存储功能方面解放出来,通过分布式的存储集群对通过共识的数据进行存储,解决了共识节点单机存储空间受限的问题。这样,通过分布式存储技术来构建出一个逻辑存储节点来保存数据,从而实现单个共识节点的存储容量可以根据业务需求无限扩容,缓解了交易频率高交易数量大、或单笔交易占用空间大而带来的存储空间压力,为区块链技术在海量数据存储的场景落地提供了可能。
一种基于区块链网络的数据存储方法,包括:
获取待存储数据;
通过共识模块对所述待存储数据执行共识操作;
当共识通过后,从多于一个的代理节点中确定目标代理节点;
向所述目标代理节点发送数据存储指令;所述数据存储指令携带通过共识的待存储数据;所述数据存储指令用于指示所述目标代理节点根据存储实例对应的总数量,对所述待存储数据对应的数据标识的哈希值进行模余运算,以得到对应的目标序号,并将所述待存储数据存储至所述目标序号所对应的目标存储实例。
一种基于区块链网络的数据存储装置,包括:
第二获取模块,用于获取待存储数据;
共识模块,用于对所述待存储数据执行共识操作;
第二确定模块,用于当共识通过后,从多于一个的代理节点中确定目标代理节点;
发送模块,用于向所述目标代理节点发送数据存储指令;所述数据存储指令携带通过共识的待存储数据;所述数据存储指令用于指示所述目标代理节点根据存储实例对应的总数量,对所述待存储数据对应的数据标识的哈希值进行模余运算,以得到对应的目标序号,并将所述待存储数据存储至所述目标序号所对应的目标存储实例。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
获取待存储数据;
通过共识模块对所述待存储数据执行共识操作;
当共识通过后,从多于一个的代理节点中确定目标代理节点;
向所述目标代理节点发送数据存储指令;所述数据存储指令携带通过共识的待存储数据;所述数据存储指令用于指示所述目标代理节点根据存储实例对应的总数量,对所述待存储数据对应的数据标识的哈希值进行模余运算,以得到对应的目标序号,并将所述待存储数据存储至所述目标序号所对应的目标存储实例。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
获取待存储数据;
通过共识模块对所述待存储数据执行共识操作;
当共识通过后,从多于一个的代理节点中确定目标代理节点;
向所述目标代理节点发送数据存储指令;所述数据存储指令携带通过共识的待存储数据;所述数据存储指令用于指示所述目标代理节点根据存储实例对应的总数量,对所述待存储数据对应的数据标识的哈希值进行模余运算,以得到对应的目标序号,并将所述待存储数据存储至所述目标序号所对应的目标存储实例。
上述基于区块链网络的数据存储方法、装置、计算机可读存储介质和计算机设备,在区块链网络中部署代理节点,从而共识节点可仅执行对待存储数据的共识操作,当共识通过后,可通过代理节点将待存储数据路由至与数据标识对应的目标存储实例中以进行存储。这样,可将共识节点从存储功能方面解放出来,通过分布式的存储集群对通过共识的数据进行存储,解决了共识节点单机存储空间受限的问题。这样,通过分布式存储技术来构建出一个逻辑存储节点来保存数据,从而实现单个共识节点的存储容量可以根据业务需求无限扩容,缓解了交易频率高交易数量大、或单笔交易占用空间大而带来的存储空间压力,为区块链技术在海量数据存储的场景落地提供了可能。
附图说明
图1为一个实施例中基于区块链网络的数据存储方法的应用环境图;
图2为一个实施例中基于区块链网络的数据存储方法的流程示意图;
图3为一个实施例中基于区块链网络的数据存储方法的时序图;
图4为一个具体实施例中基于区块链网络的数据存储方法的流程示意图;
图5为一个实施例中基于区块链网络的数据存储方法的流程示意图;
图6A为一个实施例中传统方案中基于区块链网络的数据存储系统的架构图;
图6B为本申请一个实施例中基于区块链网络的数据存储系统的架构图;
图7为一个实施例中基于区块链网络的数据存储的时序图;
图8为一个实施例中基于区块链网络的数据存储装置的结构框图;
图9为另一个实施例中基于区块链网络的数据存储装置的结构框图;
图10为又一个实施例中基于区块链网络的数据存储装置的结构框图;
图11为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中基于区块链网络的数据存储方法的应用环境图。参照图1,该基于区块链网络的数据存储方法应用于数据存储系统。该基于区块链网络的数据存储系统包括共识节点110、代理节点120和存储集群130,其中存储集群130包括多于一组的存储实例。共识节点110和代理节点120通过网络连接。代理节点120和存储集群130通过网络连接。共识节点110、代理节点120和存储集群130中的各组存储实例均可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
其中,区块链网络是运行区块链技术的载体和组织方式。区块链技术,简称BT(Blockchain technology),也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据记录。区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
共识节点是区块链网络中的一个数据处理节点,共识节点是参与记账共识的节点,通常来说,共识节点中拥有全量账本信息。但在本申请实施例中所提及的共识节点是指仅参与共识操作的节点。代理节点是区块链网络中新部署的节点设备,用于对待存储数据进行分片路由、以及主存储节点和备用存储节点间的切换。
可以理解,在区块链网络中,通常包括三个或三个以上的共识节点,当多数的共识节点打成共识时,则可认为待存储数据通过共识。本申请中在区块链网络中还部署有代理节点和存储实例。其中,代理节点的数量可以是一个或多于一个,通常情况下,为避免代理节点成为存储瓶颈,会部署至少两个代理节点,以保证当有一个代理节点出现故障时,该基于区块链网络的数据存储方式依然能够执行。存储实例具体可包括主存储节点和备用存储节点,可以理解,主存储节点和备用存储节点中存储的数据是一样的,备用存储节点是主存储节点的备用节点。该区块链网络在部署存储实例时,可依据实际业务场景的需求,部署多于一组的存储实例。
如图2所示,在一个实施例中,提供了一种基于区块链网络的数据存储方法。本实施例主要以该方法应用于上述图1中的代理节点120来举例说明。参照图2,该基于区块链网络的数据存储方法具体包括如下步骤:
S202,获取由区块链网络中的共识节点发送的数据存储指令;数据存储指令携带通过共识的待存储数据。
其中,待存储数据具体可以是交易数据或其他待写入区块的数据。对于不同的业务场景,待存储数据也会不同。比如,对于电子发票的区块链系统中,待存储数据就是预设时间段内所生产的电子发票。
具体地,当区块链网络中的共识节点接收到其他设备发送的待存储数据时,会通过共识节点中的共识模块对该对存储数据进行共识操作。当该区块链网络中的大部分共识节点均对该待存储数据打成共识时,可认为该待存储数据通过区块链网络的共识。进而,共识节点向代理节点发送数据存储指令,该数据存储指令携带通过共识的待存储数据。
在一个实施例中,共识节点包括共识模块和存储层。其中,共识模块中包括共识协议,用于执行共识操作;存储层中包括存储接口,用于与代理节点进行通信。当待存储数据通过区块链网络的共识后,共识节点中可通过部署于存储层的存储接口,向代理节点发送数据存储指令,该数据存储指令携带通过共识的待存储数据。其中,该存储接口具体可以是存储API(Application Programming Interface,应用程序编程接口)。
在一个实施例中,代理节点的数量有多个,共识节点可从多个代理节点中确定目标代理节点,并将数据存储指令发送至目标代理节点,目标代理节点执行本申请实施例所提及的基于区块链网络的数据存储方法。其中,共识节点确定目标代理节点的方式可以有多种,比如随机确定;或对多个代理节点进行轮询以确定当前的目标代理节点;还或者,对各代理节点配置相应的权重,按权重的百分比来确定当前的目标代理节点。当然也可以是其他的确定方式,对此,本申请实施例并不做具体限定。
可以理解,在本申请实施例中,共识节点并不同于通常意义中的共识节点。传统的共识节点除了参与共识操作外,还会将通过共识的数据写入区块并存储在共识节点的单机磁盘中。而本申请实施例中所提及的共识节点同样参与到共识操作中,但本地不存储数据。通过在该共识节点外挂的存储集群来存储已经通过共识的数据,也就是将区块写入到存储集群中。
S204,根据待存储数据对应的数据标识,从多于一组的存储实例中确定与数据标识对应的目标存储实例。
其中,数据标识用于唯一标识一组数据,可以是包括数字、字母和符号中至少一种字符的字符串。存储实例是存储区块中数据的设备,具体可包括主存储节点和备用存储节点。其中,主存储节点和备用存储节点中存储的数据是一样的,备用存储节点是主存储节点的备用节点。在部署区块链网络中的存储实例时,可依据实际业务场景的需求,部署多于一组的存储实例。
具体地,代理节点中可预先存储数据标识与存储实例的序号之间的对应关系,进而可根据待存储数据对应的数据标识,从多于一组的存储实例中确定与数据标识对应的目标存储实例。
在一个实施例中,步骤S204,也就是根据待存储数据对应的数据标识,从多于一组的存储实例中确定与数据标识对应的目标存储实例的步骤具体包括以下步骤:确定待存储数据对应的数据标识;根据存储实例对应的总数量,对数据标识进行模余运算,得到与数据标识对应的目标序号;将目标序号对应的存储实例作为目标存储实例。
具体地,待存储数据是以key-value(键值对)的形式进行存储的,代理节点可将待存储数据的key值作为相应的数据标识。进而,代理节点可将数据标识对存储实例的总数量取模或取余,得到与该数据标识对应的目标序号。从而将该目标序号对应的存储实例作为目标存储实例。
举例说明,假设存储实例总共有3组,分别是存储实例0、存储实例1和存储实例2。当待存储数据的key值为3,存储实例的总数量为3时,代理节点可对该key值3对总数量3取余,得到的余数为0。从而可确定存储实例0为目标存储实例。
上述实施例中,根据存储实例对应的总数量,对待存储数据的数据标识进行模余运算,以从多于一组的存储实例中确定目标存储实例,可以均匀地将待存储数据路由至相应的存储实例中。
在一个实施例中,对于采用其他结构形式的待存储数据,代理节点可确定相应的数据标识,该数据标识可以是数字、字母、或中文等字符串。代理节点可采用一致性哈希算法将待存储数据路由至对应的存储实例。具体地,代理节点可对数据标识进行哈希运算得到对应的哈希值,再将哈希值对存储实例的总数量取余或取模,得到的余数就是目标序号,与该目标序号对应的存储实例则为目标存储实例。当然,代理节点也可采用其他的算法将待存储数据路由至不同的存储实例,本申请实施例在此不做限定。
S206,将待存储数据存储至目标存储实例。
具体地,当代理节点确定了目标存储实例后,可将待存储数据发送至目标存储实例以进行存储。在一个实施例中,一组目标存储实例包括一个存储节点,用来存储数据。在另一个实施例中,一组目标存储实例包括主目标存储节点和备目标存储节点。代理节点可将待存储数据写入主目标存储节点,并在备目标存储节点中同步已写入的数据。
在一个实施例中,目标存储实例包括主目标存储节点和备用目标存储节点。步骤S206,也就是将待存储数据存储至目标存储实例的步骤具体包括以下步骤:检测目标存储实例中主目标存储节点的设备状态;当主目标存储节点的设备状态为健康状态时,将待存储数据存储至主目标存储节点;触发备用目标存储节点同步主目标存储节点存储的待存储数据。
具体地,当代理节点确定了目标存储实例后,可检测目标存储实例中主目标存储节点的设备状态。其中,检测主目标存储节点的设备状态主要是检测主目标存储节点的硬件或软件是否存在故障,硬件故障,比如该主目标存储节点的CPU(Central ProcessingUnit,中央处理器)、电源或者机箱等硬件部件发生损坏;软件故障,比如,该主目标存储节点的软件发生了错误,主目标存储节点所存储的区块的数据被人为串改,以及该主目标存储节点受到了病毒入侵等情况。当主目标存储节点的硬件或软件发生故障时,均可认为该主目标存储节点的设备状态为故障状态;当主目标存储节点的硬件和软件均未发生故障时,可认为该主目标存储节点的设备状态为健康状态。
在一个实施例中,代理节点检测主目标存储节点的设备状态,具体可以是检测主目标存储节点的健康度。代理节点可对主目标存储节点的各硬件设备和软件进行健康度测评,从而得到主目标存储节点对应的综合健康度。当该综合健康度大于或等于预设健康度时,则认为该主目标存储节点的设备状态为健康状态;当该综合健康度小于预设健康度时,则认为该主目标存储节点的设备状态为故障状态。
当主目标存储节点的设备状态为健康状态时,代理节点可将待存储数据写入主目标存储节点。当主目标存储节点成功写入该待存储数据后,主目标存储节点可将该待存储数据发送至备用目标存储节点以进行备份;或者,备用目标存储节点主动从主目标存储节点中拉取写入的待存储数据并存储。
其中,主目标存储节点向备用目标存储节点发送数据的频率可以是一旦有新的数据写入即发送至备用目标存储节点;或者是间隔预设时间段执行发送数据的步骤等,本申请实施例在此不做限定。相应地,备用目标存储节点向主目标存储节点拉取数据的频率可以是一旦主目标存储节点中有新的数据写入即拉取;或者是间隔预设时间段执行拉取数据的步骤等,本申请实施例在此不做限定。
上述实施例中,当主目标存储节点的设备状态为健康状态时,可将待存储数据存储至主目标存储节点,并通备用目标节点备份该待存储数据,可大大保证待存储数据的存储安全性。
在一个实施例中,步骤S206还包括将待存储数据存储至备用目标存储节点的步骤,该步骤具体包括:当主目标存储节点的设备状态为故障状态时,暂停主目标存储节点的运作;将备用目标存储节点的工作模式从备用模式切换为主机模式,以使得备用目标存储节点成为新的主目标存储节点;将待存储数据存储至备用目标存储节点。
具体地,当主目标存储节点的设备状态为故障状态时,代理节点可暂停该主目标存储节点的运作。并将备用目标存储节点的工作模式从备用模式切换为主机模式,以使得备用目标存储节点成为新的主目标存储节点。从而代理节点可将待存储数据存储至备用目标存储节点中。
这样,当主目标存储节点发生故障时,代理节点可将待存储数据存储至备用目标节点中,灵活方便。当该主目标存储节点维修好后,可将维修后的主目标存储节点的工作模式调整为备用模式。或者依然将该主目标存储节点的工作模式设置为主机模式,将顶替主目标存储节点的备用目标存储节点的工作模式切换为备用模式。并且通过代理节点来感知和故障切换自愈,可实现故障对上层无感知。
上述基于区块链网络的数据存储方法,在区块链网络中部署代理节点,从而共识节点可仅执行对待存储数据的共识操作,当共识通过后,可通过代理节点将待存储数据路由至与数据标识对应的目标存储实例中以进行存储。这样,可将共识节点从存储功能方面解放出来,通过分布式的存储集群对通过共识的数据进行存储,解决了共识节点单机存储空间受限的问题。这样,通过分布式存储技术来构建出一个逻辑存储节点来保存数据,从而实现单个共识节点的存储容量可以根据业务需求无限扩容,缓解了交易频率高交易数量大、或单笔交易占用空间大而带来的存储空间压力,为区块链技术在海量数据存储的场景落地提供了可能。
在一个实施例中,触发备用目标存储节点同步主目标存储节点存储的待存储数据的步骤具体包括:当主目标存储节点将待存储数据写入成功时,接收主目标存储节点反馈的、且表示数据存储成功的第一反馈信息;将第一反馈信息反馈至共识节点;通过备用目标存储节点同步主目标存储节点写入的待存储数据。
其中,反馈信息是执行写入动作后所反馈的信息。反馈信息包括标识存储失败或存储成功的反馈信息。可以理解,本申请实施例所提及的第一反馈信息、第二反馈信息及第三反馈信息可以是不同形式和内容的反馈信息,也可以是相同的反馈信息,本申请实施例在此不做限定。
具体地,主目标存储节点和备用目标存储节点存储待存储数据时可采用异步存储的方式。也就是,当主目标存储节点将待存储数据写入成功时,主目标存储节点即可向代理节点反馈表示数据存储成功的第一反馈信息。在这个过程当中,备用目标存储节点可及时或异步备份主目标存储节点写入的数据。代理节点的存储接口在接收到第一反馈信息时,可向共识模块反馈该第一反馈信息。代理节点的共识模块接收到第一反馈信息后,则可执行后续的工作,无需等待备用目标存储节点的反馈。
上述实施例中,通过主目标存储节点和备用目标存储节点通过异步存储的方式存储待存储数据,只要主目标存储节点写入成功即可反馈第一反馈信息,大大提高了数据存储的效率。
在一个实施例中,触发备用目标存储节点同步主目标存储节点存储的待存储数据的步骤具体包括:当主目标存储节点将待存储数据写入成功时,通过备用目标存储节点同步主目标存储节点写入的待存储数据;当备用目标存储节点将待存储数据同步成功时,接收主目标存储节点转发备用目标存储节点反馈的、且表示数据存储成功的第二反馈信息;将第二反馈信息反馈至共识节点。
具体地,主目标存储节点和备用目标存储节点存储待存储数据时可采用同步存储的方式。也就是,当主目标存储节点将待存储数据写入成功时,备用目标存储节点备份主目标存储节点写入的待存储数据。当备用目标存储节点将待存储数据备份成功时,备用目标存储节点向主目标存储节点反馈第二反馈信息。主目标存储节点可将第二反馈信息转发至代理节点。代理节点通过存储接口接收第二反馈信息,并将第二反馈信息传递至共识模块。代理节点的共识模块接收到第二反馈信息后,则可执行后续的工作。
举例说明,参考图3,图3为一个实施例中基于区块链网络的数据存储的时序图。如图3所示,共识节点在通过共识模块对待存储数据进行共识操作、且待存储数据通过共识后,共识节点可调用存储API,通过存储API请求集群代理写入数据。集群代理将数据写入主目标存储节点和备用目标存储节点。写入主目标存储节点和备用目标存储节点可以采用同步或异步的方式。如果是同步方式,那就是先写入主目标存储节点,再写入备用目标存储节点,备用目标存储节点反馈写入成功后,主目标存储节点再反馈写入成功,逐层反馈,完成写入。
上述实施例中,通过主目标存储节点和备用目标存储节点通过同步存储的方式存储待存储数据,可充分保障主目标存储节点和备用目标存储节点均成功写入该待存储数据。
在一个实施例中,该基于区块链网络的数据存储方法还包括数据迁移的步骤,该步骤具体包括:当存储实例的数量发生变化时,确定存储实例当前对应的更新总数量;基于更新总数量,调整不同存储实例与不同序号间的映射关系;根据更新总数量,对存储实例中已存储的数据对应的数据标识进行模余运算,得到对应的更新序号;根据调整后的映射关系,将已存储的数据迁移至相应更新序号所对应的存储实例中。
具体地,根据实际业务需求,当需要扩容或缩容时,可相应地增加存储实例或减少存储实例。当存储实例的数量发生变化时,代理节点可确定存储实例在增加或减少后,当前最新的总数量,也称更新总数量。基于该更新总数量,代理节点可调整不同存储实例与不同序号间的映射关系。根据该更新总数量,代理节点可对存储实例中已存储的数据对应的数据标识重新进行模余运算,得到对应的更新序号。进而根据调整后的映射关系,将已存储的数据迁移至相应更新序号所对应的存储实例中。可保障历史已存储的数据,是分布式存储在扩容或缩容后的存储实例中。不同存储实例中所存储数据的数据标识与存储实例对应的序号之间满足更新的映射关系。
在一个实施例中,当需要扩容时,可以成倍地增加存储实例,以尽可能地减少数据迁移的工作量。比如原来有2组存储实例,在扩容时可新增2组存储实例,得到4组存储实例。这样,就需要根据更新总数量对已存储数据的数据标识进行模余运算,以得到更新序号。当更新序号与初始的目标序号一致时,该数据可不做搬迁;当更新序号与初始的目标序号不一致时,则需要将对应的数据迁移至与更新序号对应的存储实例中。
上述实施例中,可基于业务的实际需求,灵活的对存储集群进行缩容和扩容,可以满足各种业务场景,大大扩展了区块链网络的应用。
在一个实施例中,该基于区块链网络的数据存储方法还包括数据读取的步骤,该步骤具体包括:接收共识节点调用读取接口所发送的数据读取指令;数据读取指令携带待读取数据对应的数据标识;根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例;从待访问的存储实例中读取待读取数据;响应于数据读取指令,向共识节点反馈读取的待读取数据。
具体地,共识节点可接收数据读取指令,并通过读取接口将数据读取指令发送至代理节点。该数据读取指令携带有待读取数据对应的数据标识。进而代理节点可根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例,从待访问的存储实例中查找与数据标识对应的待读取数据。代理节点可将查找到的待读取数据反馈至共识节点。
可以理解,代理节点在读取数据的过程中,根据待读取数据对应的数据标识,从多于一组的存储实例中确定与数据标识对应的待访问的存储实例的方式,与代理节点根据待存储数据对应的数据标识,从多于一组的存储实例中确定与数据标识对应的目标存储实例的方式是一样的,可参考前述实施例的描述内容,在此不再赘述。
上述实施例中,可根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例,进而查找到对应的待读取数据并反馈至共识节点。这样,通过相同的处理逻辑可准确便捷的存储和查找数据。
在一个具体实施例中,该基于区块链网络的数据存储方法包括以下步骤:
S402,获取由区块链网络中的共识节点发送的数据存储指令;数据存储指令携带通过共识的待存储数据。
S404,确定待存储数据对应的数据标识。
S406,根据存储实例对应的总数量,对数据标识进行模余运算,得到与数据标识对应的目标序号。
S408,将目标序号对应的存储实例作为目标存储实例;目标存储实例包括主目标存储节点和备用目标存储节点。
S410,检测目标存储实例中主目标存储节点的设备状态。
S412,当主目标存储节点的设备状态为健康状态时,将待存储数据存储至主目标存储节点。
S414,当主目标存储节点将待存储数据写入成功时,通过备用目标存储节点同步主目标存储节点写入的待存储数据。
S416,当备用目标存储节点将待存储数据同步成功时,接收主目标存储节点转发备用目标存储节点反馈的、且表示数据存储成功的第二反馈信息。
S418,将第二反馈信息反馈至共识节点。
S420,当主目标存储节点的设备状态为故障状态时,暂停主目标存储节点的运作。
S422,将备用目标存储节点的工作模式从备用模式切换为主机模式,以使得备用目标存储节点成为新的主目标存储节点。
S424,将待存储数据存储至备用目标存储节点。
S426,接收共识节点调用读取接口所发送的数据读取指令;数据读取指令携带待读取数据对应的数据标识。
S428,根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例。
S430,从待访问的存储实例中读取待读取数据。
S432,响应于数据读取指令,向共识节点反馈读取的待读取数据。
S434,当存储实例的数量发生变化时,确定存储实例当前对应的更新总数量。
S436,基于更新总数量,调整不同存储实例与不同序号间的映射关系。
S438,根据更新总数量,对存储实例中已存储的数据对应的数据标识进行模余运算,得到对应的更新序号。
S440,根据调整后的映射关系,将已存储的数据迁移至相应更新序号所对应的存储实例中。
上述基于区块链网络的数据存储方法,在区块链网络中部署代理节点,从而共识节点可仅执行对待存储数据的共识操作,当共识通过后,可通过代理节点将待存储数据路由至与数据标识对应的目标存储实例中以进行存储。这样,可将共识节点从存储功能方面解放出来,通过分布式的存储集群对通过共识的数据进行存储,解决了共识节点单机存储空间受限的问题。这样,通过分布式存储技术来构建出一个逻辑存储节点来保存数据,从而实现单个共识节点的存储容量可以根据业务需求无限扩容,缓解了交易频率高交易数量大、或单笔交易占用空间大而带来的存储空间压力,为区块链技术在海量数据存储的场景落地提供了可能。
图4为一个实施例中基于区块链网络的数据存储方法的流程示意图。应该理解的是,虽然图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图5所示,在一个实施例中,提供了一种基于区块链网络的数据存储方法。本实施例主要以该方法应用于上述图1中的共识节点110来举例说明。参照图5,该基于区块链网络的数据存储方法具体包括如下步骤:
S502,获取待存储数据。
具体地,共识节点可获取处于区块链网络中的区块链接点所发送的待存储数据。其中,区块链节点是区块链网络中的一个数据处理节点,可用于接收外部传递的数据并进行处理等。当区块链节点对外部传递的数据进行一系列处理,得到待存储数据后,可将待存储数据发送至区块链网络中的共识节点以进行共识运算。
S504,通过共识模块对待存储数据执行共识操作。
具体地,区块链网络中的多个共识节点可通过共识模块分别对待存储数据执行共识操作。其中,共识节点执行共识操作所用的共识算法,常用的比如POW(Proof of Work,工作量证明)、POS(Proof of Stake,权益证明)、DPOS(Delegated Proof of Stake,委任权益证明)、及PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)等等,本申请实施例在此不作限制。
S506,当共识通过后,从多于一个的代理节点中确定目标代理节点。
当该区块链网络中的预设数量的共识节点均对该待存储数据达成共识时,可认为该待存储数据通过区块链网络的共识。进而,共识节点可从多于一个的代理节点中确定目标代理节点。
其中,共识节点确定目标代理节点的方式可以有多种,比如随机确定;或对多个代理节点进行轮询以确定当前的目标代理节点;还或者,对各代理节点配置相应的权重,按权重的百分比来确定当前的目标代理节点。当然也可以是其他的确定方式,对此,本申请实施例并不做具体限定。
S508,向目标代理节点发送数据存储指令;数据存储指令携带通过共识的待存储数据;数据存储指令用于指示目标代理节点根据待存储数据对应的数据标识,从多于一组的存储实例中确定目标存储实例,并将待存储数据存储至目标存储实例。
具体地,共识节点可向选中的目标代理节点发送数据存储指令,该数据存储指令携带通过共识的待存储数据。目标代理节点接收到数据存储指令后可根据待存储数据对应的数据标识,从多于一组的存储实例中确定目标存储实例,并将待存储数据存储至目标存储实例。
其中,目标代理节点接收到数据存储指令后可根据待存储数据对应的数据标识,从多于一组的存储实例中确定目标存储实例,并将待存储数据存储至目标存储实例步骤的具体内容可参考前述实施例中步骤S204和步骤S206的描述,本申请实施例在此不再赘述。
上述基于区块链网络的数据存储方法,在区块链网络中部署代理节点,从而共识节点可仅执行对待存储数据的共识操作,当共识通过后,可通过代理节点将待存储数据路由至与数据标识对应的目标存储实例中以进行存储。这样,可将共识节点从存储功能方面解放出来,通过分布式的存储集群对通过共识的数据进行存储,解决了共识节点单机存储空间受限的问题。这样,通过分布式存储技术来构建出一个逻辑存储节点来保存数据,从而实现单个共识节点的存储容量可以根据业务需求无限扩容,缓解了交易频率高交易数量大、或单笔交易占用空间大而带来的存储空间压力,为区块链技术在海量数据存储的场景落地提供了可能。
在一个实施例中,步骤S508,也就是向目标代理节点发送数据存储指令的步骤具体包括:通过存储接口向目标代理节点发送数据存储指令。该基于区块链网络的数据存储方法还包括:当待存储数据存储成功时,通过存储接口接收目标代理节点转发目标存储实例反馈的、且表示数据存储成功的第三反馈信息。
具体地,共识节点包括共识模块和存储层。其中,共识模块中包括共识协议,用于执行共识操作;存储层中包括存储接口,用于与代理节点进行通信。当待存储数据通过区块链网络的共识后,共识节点中可通过部署于存储层的存储接口,向目标代理节点发送数据存储指令,该数据存储指令携带通过共识的待存储数据。
进而,当数据存储成功时,目标存储实例可向目标代理节点反馈表示数据存储成功的第三反馈信息。目标代理节点将该第三反馈信息传递至共识节点。共识节点通过存储接口接收目标代理节点传递的第三反馈信息。
上述实施例中,通过在共识节点中部署存储接口,可灵活的实现与代理节点间的通信,进而可将共识节点的存储模块分离出去,以通过存储集群来实现数据的灵活存储。
在一个实施例中,该基于区块链网络的数据存储方法还包括读取数据的步骤,该步骤具体包括:获取数据读取指令;数据读取指令携带待读取数据对应的数据标识;通过调用读取接口向目标代理节点发送数据读取指令;数据读取指令用于指示目标代理节点根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例,并从待访问的存储实例中读取待读取数据;接收目标存储节点反馈的待读取数据。
具体地,共识节点可接收数据读取指令,并通过读取接口将数据读取指令发送至目标代理节点。该数据读取指令携带有待读取数据对应的数据标识。进而目标代理节点可根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例,从待访问的存储实例中查找与数据标识对应的待读取数据。目标代理节点可将查找到的待读取数据反馈至共识节点。
可以理解,目标代理节点在读取数据的过程中,根据待读取数据对应的数据标识,从多于一组的存储实例中确定与数据标识对应的待访问的存储实例的方式,与目标代理节点根据待存储数据对应的数据标识,从多于一组的存储实例中确定与数据标识对应的目标存储实例的方式是一样的,可参考前述实施例的描述内容,在此不再赘述。
上述实施例中,共识节点可通过调用读取接口,触发目标代理节点从相应的待访问的存储实例中查找到对应的待读取数据并反馈至共识节点,对于共识节点而言,仍然可方便快捷地获取待读取数据。
在一个实施例中,参考图6A和图6B,图6A为传统方案中基于区块链网络的数据存储系统的架构图。在传统的基于区块链的数据存储系统中,账本信息通常是保存在共识节点单机的磁盘上,从可靠性和可扩展性上来看都存在一定的问题。
而图6B为本申请一个实施例中基于区块链网络的数据存储系统的架构图。如图6B所示,本申请实施例中,采用分布式存储集群来替换共识节点中的单机磁盘存储,通过统一的存储层API(也成存储接口)封装调用,可以屏蔽存储层变化对上层共识模块和逻辑账本的影响。在存储集群内通过多个的代理节点来负责存储实例中的主备切换以及数据分片存储路由,从而实现存储容量可按照实际需求无限扩容。并且对于单个存储节点的故障可以通过代理节点进行感知和故障切换自愈来实现故障对上层无感知的效果。
比如,图6B中示出了3个共识节点,对于每个共识节点均配置有至少一个代理节点(也可称作集群代理)和至少一组存储实例,每组存储实例均包括一个主存储节点和一个备用存储节点。比如图6中,每个共识节点均配置有两个代理节点和两组存储实例(主存储1、备存储1、主存储2和备存储2)。可以理解,上述配置数量仅为示例性的,对于每个共识节点也可配置更多的代理节点或更多组的存储实例,本申请实施例在此不做限定。
在图6B中,共识节点、代理节点和存储集群共同构成了一个虚拟共识节点。虚拟共识节点具有传统区块链技术中共识节点的特性。可以理解,本系统中的共识节点本身不进行本地存储,而是通过代理节点和存储集群进行存储。
在一个实施例中,参考图7,图7为一个具体实施例中基于区块链网络的数据存储的时序图。如图7所示,对于key=2,value=x的待存储数据A、及key=3,value=y的待存储数据B,共识节点的共识模块将待存储数据发送至存储API,通过存储API向代理节点发送数据存储请求。代理节点对待存储数据的key进行一定的计算(如对key取模),然后把数据平均散列到各个存储实例,实现数据的分片存储。再通过存储实例逐层反馈,完成写入。比如,当有两组存储实例时,代理节点可根据数值2对待存储数据的key进行取余,比如对key=2进行取余得到0,将待存储数据A存储至存储实例0中;对key=3进行取余得到1,将待存储数据B存储至存储实例1中。
在一个具体的应用场景中,比如电子发票的区块链系统中,电子发票的产生速度是非常快的,因此对于存储资源的需求非常高。可通过本申请实施例所提供的基于区块链网络的数据存储方法实现对电子发票的存储。在另一个具体的应用场景中,比如支付场景,对于每笔支付交易信息需要上链存储时,可通过本申请实施例所提供的基于区块链网络的数据存储方法实现对交易信息的存储。通过本申请所提供的基于区块链网络的数据存储方法,解决了区块链系统共识节点的存储上限问题,让区块链系统可以应对更高频交易带来的海量数据存储问题和单节点的数据可靠性问题。
如图8所示,在一个实施例中,提供了一种基于区块链网络的数据存储装置800,包括第一获取模块801、第一确定模块802和存储模块803。
第一获取模块801,用于获取由区块链网络中的共识节点发送的数据存储指令;数据存储指令携带通过共识的待存储数据。
第一确定模块802,用于根据待存储数据对应的数据标识,从多于一组的存储实例中确定与数据标识对应的目标存储实例。
存储模块803,用于将待存储数据存储至目标存储实例。
在一个实施例中,第一确定模块802还用于确定待存储数据对应的数据标识;根据存储实例对应的总数量,对数据标识进行模余运算,得到与数据标识对应的目标序号;将目标序号对应的存储实例作为目标存储实例。
在一个实施例中,目标存储实例包括主目标存储节点和备用目标存储节点;存储模块803还用于检测目标存储实例中主目标存储节点的设备状态;当主目标存储节点的设备状态为健康状态时,将待存储数据存储至主目标存储节点;触发备用目标存储节点同步主目标存储节点存储的待存储数据。
在一个实施例中,存储模块803还用于当主目标存储节点将待存储数据写入成功时,接收主目标存储节点反馈的、且表示数据存储成功的第一反馈信息;将第一反馈信息反馈至共识节点;通过备用目标存储节点同步主目标存储节点写入的待存储数据。
在一个实施例中,存储模块803还用于当主目标存储节点将待存储数据写入成功时,通过备用目标存储节点同步主目标存储节点写入的待存储数据;当备用目标存储节点将待存储数据同步成功时,接收主目标存储节点转发备用目标存储节点反馈的、且表示数据存储成功的第二反馈信息;将第二反馈信息反馈至共识节点。
在一个实施例中,该基于区块链网络的数据存储装置800还包括:
暂停模块804,用于当主目标存储节点的设备状态为故障状态时,暂停主目标存储节点的运作。
切换模块805,将备用目标存储节点的工作模式从备用模式切换为主机模式,以使得备用目标存储节点成为新的主目标存储节点。
存储模块803还用于将待存储数据存储至备用目标存储节点。
在一个实施例中,该基于区块链网络的数据存储装置800还包括:
第一确定模块802还用于当存储实例的数量发生变化时,确定存储实例当前对应的更新总数量。
调整模块806,用于基于更新总数量,调整不同存储实例与不同序号间的映射关系。
计算模块807,用于根据更新总数量,对存储实例中已存储的数据对应的数据标识进行模余运算,得到对应的更新序号。
迁移模块808,用于根据调整后的映射关系,将已存储的数据迁移至相应更新序号所对应的存储实例中。
参考图9,在一个实施例中,该基于区块链网络的数据存储装置800还包括:
第一获取模块801还用于接收共识节点调用读取接口所发送的数据读取指令;数据读取指令携带待读取数据对应的数据标识。
第一确定模块802还用于根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例。
读取模块809,用于从待访问的存储实例中读取待读取数据。
反馈模块810,用于响应于数据读取指令,向共识节点反馈读取的待读取数据。
上述基于区块链网络的数据存储装置,在区块链网络中部署代理节点,从而共识节点可仅执行对待存储数据的共识操作,当共识通过后,可通过代理节点将待存储数据路由至与数据标识对应的目标存储实例中以进行存储。这样,可将共识节点从存储功能方面解放出来,通过分布式的存储集群对通过共识的数据进行存储,解决了共识节点单机存储空间受限的问题。这样,通过分布式存储技术来构建出一个逻辑存储节点来保存数据,从而实现单个共识节点的存储容量可以根据业务需求无限扩容,缓解了交易频率高交易数量大、或单笔交易占用空间大而带来的存储空间压力,为区块链技术在海量数据存储的场景落地提供了可能。
如图10所示,在一个实施例中,提供了一种基于区块链网络的数据存储装置1000,包括第二获取模块1001、共识模块1002、第二确定模块1003和发送模块1004。
第二获取模块1001,用于获取待存储数据。
共识模块1002,用于对待存储数据执行共识操作。
第二确定模块1003,用于当共识通过后,从多于一个的代理节点中确定目标代理节点。
发送模块1004,用于向目标代理节点发送数据存储指令;数据存储指令携带通过共识的待存储数据;数据存储指令用于指示目标代理节点根据待存储数据对应的数据标识,从多于一组的存储实例中确定目标存储实例,并将待存储数据存储至目标存储实例。
在一个实施例中,发送模块1004还用于通过存储接口向目标代理节点发送数据存储指令。第二获取模块1001还用于当待存储数据存储成功时,通过存储接口接收目标代理节点转发目标存储实例反馈的、且表示数据存储成功的第三反馈信息。
在一个实施例中,第二获取模块1001还用于获取数据读取指令;数据读取指令携带待读取数据对应的数据标识。发送模块1004还用于通过调用读取接口向目标代理节点发送数据读取指令;数据读取指令用于指示目标代理节点根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例,并从待访问的存储实例中读取待读取数据。第二获取模块1001还用于接收目标存储节点反馈的待读取数据。
上述基于区块链网络的数据存储装置,在区块链网络中部署代理节点,从而共识节点可仅执行对待存储数据的共识操作,当共识通过后,可通过代理节点将待存储数据路由至与数据标识对应的目标存储实例中以进行存储。这样,可将共识节点从存储功能方面解放出来,通过分布式的存储集群对通过共识的数据进行存储,解决了共识节点单机存储空间受限的问题。这样,通过分布式存储技术来构建出一个逻辑存储节点来保存数据,从而实现单个共识节点的存储容量可以根据业务需求无限扩容,缓解了交易频率高交易数量大、或单笔交易占用空间大而带来的存储空间压力,为区块链技术在海量数据存储的场景落地提供了可能。
图11示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的共识节点110或代理节点120。如图11所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现基于区块链网络的数据存储方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行基于区块链网络的数据存储方法。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的基于区块链网络的数据存储装置可以实现为一种计算机程序的形式,计算机程序可在如图11所示的计算机设备上运行。计算机设备的存储器中可存储组成该基于区块链网络的数据存储装置的各个程序模块,比如,图8所示的第一获取模块、第一确定模块和存储模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的基于区块链网络的数据存储方法中的步骤。比如,图10所示的第二获取模块、共识模块、第二确定模块和发送模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的基于区块链网络的数据存储方法中的步骤。
例如,图11所示的计算机设备可以通过如图8所示的基于区块链网络的数据存储装置中的第一获取模块执行步骤S202。计算机设备可通过第一确定模块执行步骤S204。计算机设备可通过存储模块模块执行步骤S206。
例如,图11所示的计算机设备可以通过如图10所示的基于区块链网络的数据存储装置中的第二获取模块执行步骤S502。计算机设备可通过共识模块执行步骤S504。计算机设备可通过第二确定模块执行步骤S506。计算机设备可通过发送模块执行步骤S508。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述基于区块链网络的数据存储方法的步骤。此处基于区块链网络的数据存储方法的步骤可以是上述各个实施例的基于区块链网络的数据存储方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述基于区块链网络的数据存储方法的步骤。此处基于区块链网络的数据存储方法的步骤可以是上述各个实施例的基于区块链网络的数据存储方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种基于区块链网络的数据存储方法,包括:
获取由所述区块链网络中的共识节点发送的数据存储指令;所述数据存储指令携带通过共识的待存储数据;
确定所述待存储数据对应的数据标识,并对所述数据标识进行哈希运算得到对应的哈希值;
根据存储实例对应的总数量,对所述数据标识对应的哈希值进行模余运算,得到与所述数据标识对应的目标序号;
将所述目标序号对应的存储实例作为目标存储实例;
将所述待存储数据存储至所述目标存储实例。
2.根据权利要求1所述的方法,其特征在于,所述目标存储实例包括主目标存储节点和备用目标存储节点;所述将所述待存储数据存储至所述目标存储实例,包括:
检测所述目标存储实例中主目标存储节点的设备状态;
当所述主目标存储节点的设备状态为健康状态时,将所述待存储数据存储至所述主目标存储节点;
触发所述备用目标存储节点同步所述主目标存储节点存储的待存储数据。
3.根据权利要求2所述的方法,其特征在于,所述检测所述目标存储实例中主目标存储节点的设备状态,包括:
对所述目标存储实例中主目标存储节点的硬件设备和软件分别进行健康度测评,得到所述主目标存储节点对应的综合健康度;
当所述综合健康度大于或等于预设健康度时,则确定所述主目标存储节点的设备状态为健康状态;
当所述综合健康度小于所述预设健康度时,则确定所述主目标存储节点的设备状态为故障状态。
4.根据权利要求2所述的方法,其特征在于,所述触发所述备用目标存储节点同步所述主目标存储节点存储的待存储数据,包括:
当所述主目标存储节点将所述待存储数据写入成功时,接收所述主目标存储节点反馈的、且表示数据存储成功的第一反馈信息;
将所述第一反馈信息反馈至所述共识节点;
通过所述备用目标存储节点同步所述主目标存储节点写入的待存储数据。
5.根据权利要求2所述的方法,其特征在于,所述触发所述备用目标存储节点同步所述主目标存储节点存储的待存储数据,包括:
当所述主目标存储节点将所述待存储数据写入成功时,通过所述备用目标存储节点同步所述主目标存储节点写入的待存储数据;
当备用目标存储节点将所述待存储数据同步成功时,接收所述主目标存储节点转发所述备用目标存储节点反馈的、且表示数据存储成功的第二反馈信息;
将所述第二反馈信息反馈至所述共识节点。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述主目标存储节点的设备状态为故障状态时,暂停所述主目标存储节点的运作;
将所述备用目标存储节点的工作模式从备用模式切换为主机模式,以使得所述备用目标存储节点成为新的主目标存储节点;
将所述待存储数据存储至所述备用目标存储节点。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述存储实例的数量发生变化时,确定所述存储实例当前对应的更新总数量;
基于所述更新总数量,调整不同存储实例与不同序号间的映射关系;
根据所述更新总数量,对所述存储实例中已存储的数据对应的数据标识进行模余运算,得到对应的更新序号;
根据调整后的映射关系,将已存储的数据迁移至相应更新序号所对应的存储实例中。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
接收所述共识节点调用读取接口所发送的数据读取指令;所述数据读取指令携带待读取数据对应的数据标识;
根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例;
从所述待访问的存储实例中读取所述待读取数据;
响应于所述数据读取指令,向所述共识节点反馈读取的所述待读取数据。
9.一种基于区块链网络的数据存储方法,包括:
获取待存储数据;
通过共识模块对所述待存储数据执行共识操作;
当共识通过后,从多于一个的代理节点中确定目标代理节点;
向所述目标代理节点发送数据存储指令;所述数据存储指令携带通过共识的待存储数据;
所述数据存储指令用于指示所述目标代理节点根据存储实例对应的总数量,对所述待存储数据对应的数据标识的哈希值进行模余运算,以得到对应的目标序号,并将所述待存储数据存储至所述目标序号所对应的目标存储实例。
10.根据权利要求9所述的方法,其特征在于,所述向所述目标代理节点发送数据存储指令,包括:
通过存储接口向所述目标代理节点发送数据存储指令;
所述方法还包括:
当所述待存储数据存储成功时,通过所述存储接口接收所述目标代理节点转发所述目标存储实例反馈的、且表示数据存储成功的第三反馈信息。
11.根据权利要求9或10所述的方法,其特征在于,所述方法还包括:
获取数据读取指令;所述数据读取指令携带待读取数据对应的数据标识;
通过调用读取接口向目标代理节点发送所述数据读取指令;
所述数据读取指令用于指示所述目标代理节点根据待读取数据对应的数据标识,从多于一组的存储实例中确定相应的待访问的存储实例,并从所述待访问的存储实例中读取所述待读取数据;
接收所述目标存储节点反馈的所述待读取数据。
12.一种基于区块链网络的数据存储装置,其特征在于,所述装置包括:
第一获取模块,用于获取由所述区块链网络中的共识节点发送的数据存储指令;所述数据存储指令携带通过共识的待存储数据;
第一确定模块,用于确定所述待存储数据对应的数据标识,并对所述数据标识进行哈希运算得到对应的哈希值;根据存储实例对应的总数量,对所述数据标识对应的哈希值进行模余运算,得到与所述数据标识对应的目标序号;将所述目标序号对应的存储实例作为目标存储实例;
存储模块,用于将所述待存储数据存储至所述目标存储实例。
13.一种基于区块链网络的数据存储装置,包括:
第二获取模块,用于获取待存储数据;
共识模块,用于对所述待存储数据执行共识操作;
第二确定模块,用于当共识通过后,从多于一个的代理节点中确定目标代理节点;
发送模块,用于向所述目标代理节点发送数据存储指令;所述数据存储指令携带通过共识的待存储数据;所述数据存储指令用于指示所述目标代理节点根据存储实例对应的总数量,对所述待存储数据对应的数据标识的哈希值进行模余运算,以得到对应的目标序号,并将所述待存储数据存储至所述目标序号所对应的目标存储实例。
14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至11中任一项所述方法的步骤。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至11中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268528.6A CN111049902B (zh) | 2019-09-16 | 2019-09-16 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268528.6A CN111049902B (zh) | 2019-09-16 | 2019-09-16 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
CN201910872019.8A CN110535969B (zh) | 2019-09-16 | 2019-09-16 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910872019.8A Division CN110535969B (zh) | 2019-09-16 | 2019-09-16 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111049902A true CN111049902A (zh) | 2020-04-21 |
CN111049902B CN111049902B (zh) | 2021-08-13 |
Family
ID=68668745
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911268528.6A Active CN111049902B (zh) | 2019-09-16 | 2019-09-16 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
CN201910872019.8A Active CN110535969B (zh) | 2019-09-16 | 2019-09-16 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910872019.8A Active CN110535969B (zh) | 2019-09-16 | 2019-09-16 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111049902B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708594A (zh) * | 2020-06-09 | 2020-09-25 | 北京达佳互联信息技术有限公司 | 页面渲染方法、装置、电子设备及存储介质 |
CN112800450A (zh) * | 2021-02-05 | 2021-05-14 | 北京众享比特科技有限公司 | 数据存储方法、系统、装置、设备和存储介质 |
CN113032594A (zh) * | 2021-02-26 | 2021-06-25 | 广东核电合营有限公司 | 标牌图像存储方法、装置、计算机设备和存储介质 |
CN113132459A (zh) * | 2021-03-09 | 2021-07-16 | 西安电子科技大学 | 分布式存储方法、系统、存储介质、信息数据处理终端 |
CN113342275A (zh) * | 2021-06-10 | 2021-09-03 | 网易(杭州)网络有限公司 | 区块链节点存取数据的方法、设备和计算机可读存储介质 |
CN113364875A (zh) * | 2021-06-10 | 2021-09-07 | 网易(杭州)网络有限公司 | 区块链节点存取数据的方法、设备和计算机可读存储介质 |
CN113487202A (zh) * | 2021-07-14 | 2021-10-08 | 海南马良师傅网络科技有限公司 | 基于区块链管理的仪器搬迁监管方法 |
CN113609135A (zh) * | 2021-08-24 | 2021-11-05 | 上海点融信息科技有限责任公司 | 数据处理方法及装置 |
CN114385761A (zh) * | 2022-03-23 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 一种基于共识系统的共识数据存储、获取方法及装置 |
CN116737810A (zh) * | 2023-05-06 | 2023-09-12 | 清华大学 | 一种用于分布式时序数据库的共识服务接口 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159296A (zh) * | 2019-12-30 | 2020-05-15 | 深圳市网心科技有限公司 | 一种存储扩容方法、装置、设备及可读存储介质 |
CN111680019B (zh) * | 2020-04-29 | 2023-11-24 | 杭州趣链科技有限公司 | 一种区块链的数据扩容方法及其装置 |
CN111638962A (zh) * | 2020-06-08 | 2020-09-08 | 杭州复杂美科技有限公司 | 交易池动态伸缩方法、设备和存储介质 |
CN111901388B (zh) * | 2020-06-30 | 2022-12-20 | 达闼机器人股份有限公司 | 区块链多链系统、用于区块链多链系统的方法、电子设备 |
CN112765280B (zh) * | 2021-02-03 | 2021-09-24 | 腾讯科技(深圳)有限公司 | 区块数据存储方法、装置、计算机可读介质及电子设备 |
CN113630445B (zh) * | 2021-07-19 | 2022-10-14 | 山东区块链研究院 | 一种基于区块链网络的数据存储方法及装置 |
CN113961149B (zh) * | 2021-10-29 | 2024-01-26 | 国网江苏省电力有限公司营销服务中心 | 一种电力信息系统多态数据存储系统及存储方法 |
CN114465770A (zh) * | 2021-12-29 | 2022-05-10 | 天翼云科技有限公司 | 数据处理方法及相关装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279029A (zh) * | 2015-11-24 | 2016-01-27 | 无锡江南计算技术研究所 | 一种基于作业计算资源的局部存储动态分配方法 |
CN106528844A (zh) * | 2016-11-24 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据请求方法及装置和数据存储系统 |
CN106685743A (zh) * | 2017-03-09 | 2017-05-17 | 上海亿账通区块链科技有限公司 | 区块链集群处理系统和方法 |
CN107094145A (zh) * | 2017-05-02 | 2017-08-25 | 北京汇通金财信息科技有限公司 | 基于区块链的数据处理方法、服务器及系统 |
CN107948248A (zh) * | 2017-11-01 | 2018-04-20 | 平安科技(深圳)有限公司 | 分布式存储方法、控制服务器及计算机可读存储介质 |
CN109325854A (zh) * | 2018-08-16 | 2019-02-12 | 北京京东尚科信息技术有限公司 | 区块链网络、部署方法及存储介质 |
CN109326337A (zh) * | 2018-09-06 | 2019-02-12 | 西安电子科技大学 | 基于区块链的电子医疗记录存储和共享的模型及方法 |
CN109359159A (zh) * | 2018-09-30 | 2019-02-19 | 深圳前海微众银行股份有限公司 | 分布式存储方法、系统及设备 |
CN109491996A (zh) * | 2018-09-27 | 2019-03-19 | 上海点融信息科技有限责任公司 | 用于区块链网络的区块生成方法、区块数据访问方法、计算设备、存储介质 |
CN109741060A (zh) * | 2018-12-29 | 2019-05-10 | 北京金山安全软件有限公司 | 信息查询系统、方法、装置、电子设备及存储介质 |
KR101986482B1 (ko) * | 2017-12-12 | 2019-06-07 | 주식회사 디지캡 | 콘텐츠 정보 저장 및 관리를 위한 콘텐츠 블록체인 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017167549A1 (en) * | 2016-03-30 | 2017-10-05 | British Telecommunications Public Limited Company | Untrusted code distribution |
CN109726229B (zh) * | 2018-11-30 | 2023-10-10 | 深圳市元征科技股份有限公司 | 一种区块链数据存储方法及装置 |
CN109992219A (zh) * | 2019-04-11 | 2019-07-09 | 深信服科技股份有限公司 | 分布式存储方法、装置、设备及计算机可读存储介质 |
-
2019
- 2019-09-16 CN CN201911268528.6A patent/CN111049902B/zh active Active
- 2019-09-16 CN CN201910872019.8A patent/CN110535969B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279029A (zh) * | 2015-11-24 | 2016-01-27 | 无锡江南计算技术研究所 | 一种基于作业计算资源的局部存储动态分配方法 |
CN106528844A (zh) * | 2016-11-24 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据请求方法及装置和数据存储系统 |
CN106685743A (zh) * | 2017-03-09 | 2017-05-17 | 上海亿账通区块链科技有限公司 | 区块链集群处理系统和方法 |
CN107094145A (zh) * | 2017-05-02 | 2017-08-25 | 北京汇通金财信息科技有限公司 | 基于区块链的数据处理方法、服务器及系统 |
CN107948248A (zh) * | 2017-11-01 | 2018-04-20 | 平安科技(深圳)有限公司 | 分布式存储方法、控制服务器及计算机可读存储介质 |
KR101986482B1 (ko) * | 2017-12-12 | 2019-06-07 | 주식회사 디지캡 | 콘텐츠 정보 저장 및 관리를 위한 콘텐츠 블록체인 |
CN109325854A (zh) * | 2018-08-16 | 2019-02-12 | 北京京东尚科信息技术有限公司 | 区块链网络、部署方法及存储介质 |
CN109326337A (zh) * | 2018-09-06 | 2019-02-12 | 西安电子科技大学 | 基于区块链的电子医疗记录存储和共享的模型及方法 |
CN109491996A (zh) * | 2018-09-27 | 2019-03-19 | 上海点融信息科技有限责任公司 | 用于区块链网络的区块生成方法、区块数据访问方法、计算设备、存储介质 |
CN109359159A (zh) * | 2018-09-30 | 2019-02-19 | 深圳前海微众银行股份有限公司 | 分布式存储方法、系统及设备 |
CN109741060A (zh) * | 2018-12-29 | 2019-05-10 | 北京金山安全软件有限公司 | 信息查询系统、方法、装置、电子设备及存储介质 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708594A (zh) * | 2020-06-09 | 2020-09-25 | 北京达佳互联信息技术有限公司 | 页面渲染方法、装置、电子设备及存储介质 |
CN111708594B (zh) * | 2020-06-09 | 2023-08-29 | 北京达佳互联信息技术有限公司 | 页面渲染方法、装置、电子设备及存储介质 |
CN112800450A (zh) * | 2021-02-05 | 2021-05-14 | 北京众享比特科技有限公司 | 数据存储方法、系统、装置、设备和存储介质 |
CN113032594A (zh) * | 2021-02-26 | 2021-06-25 | 广东核电合营有限公司 | 标牌图像存储方法、装置、计算机设备和存储介质 |
CN113032594B (zh) * | 2021-02-26 | 2023-12-08 | 广东核电合营有限公司 | 标牌图像存储方法、装置、计算机设备和存储介质 |
CN113132459A (zh) * | 2021-03-09 | 2021-07-16 | 西安电子科技大学 | 分布式存储方法、系统、存储介质、信息数据处理终端 |
CN113364875B (zh) * | 2021-06-10 | 2022-07-22 | 网易(杭州)网络有限公司 | 区块链节点存取数据的方法、设备和计算机可读存储介质 |
CN113342275A (zh) * | 2021-06-10 | 2021-09-03 | 网易(杭州)网络有限公司 | 区块链节点存取数据的方法、设备和计算机可读存储介质 |
CN113364875A (zh) * | 2021-06-10 | 2021-09-07 | 网易(杭州)网络有限公司 | 区块链节点存取数据的方法、设备和计算机可读存储介质 |
CN113487202A (zh) * | 2021-07-14 | 2021-10-08 | 海南马良师傅网络科技有限公司 | 基于区块链管理的仪器搬迁监管方法 |
CN113487202B (zh) * | 2021-07-14 | 2023-04-07 | 海南马良师傅网络科技有限公司 | 基于区块链管理的仪器搬迁监管方法 |
CN113609135A (zh) * | 2021-08-24 | 2021-11-05 | 上海点融信息科技有限责任公司 | 数据处理方法及装置 |
CN114385761B (zh) * | 2022-03-23 | 2022-07-12 | 支付宝(杭州)信息技术有限公司 | 一种基于共识系统的共识数据存储、获取方法及装置 |
CN114385761A (zh) * | 2022-03-23 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 一种基于共识系统的共识数据存储、获取方法及装置 |
CN116737810A (zh) * | 2023-05-06 | 2023-09-12 | 清华大学 | 一种用于分布式时序数据库的共识服务接口 |
Also Published As
Publication number | Publication date |
---|---|
CN110535969A (zh) | 2019-12-03 |
CN110535969B (zh) | 2021-06-15 |
CN111049902B (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111049902B (zh) | 基于区块链网络的数据存储方法、装置、存储介质和设备 | |
US10496489B1 (en) | Storage system configured for controlled transition between asynchronous and synchronous replication modes | |
CN111405019B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
EP2784675B1 (en) | Method, device and system for data reconstruction | |
CN111143133B (zh) | 虚拟机备份方法和备份虚拟机恢复方法 | |
CN110213326B (zh) | 元数据节点集群的扩容方法、系统、设备和存储介质 | |
US10908834B2 (en) | Load balancing for scalable storage system | |
WO2013163864A1 (zh) | 数据持久化处理方法、装置及数据库系统 | |
CN112052230B (zh) | 多机房数据同步方法、计算设备及存储介质 | |
CN110781214A (zh) | 数据库读写方法、装置、计算机设备和存储介质 | |
EP3432132B1 (en) | Data storage method and device | |
CN113010496A (zh) | 一种数据迁移方法、装置、设备和存储介质 | |
CN107018185A (zh) | 云存储系统的同步方法和装置 | |
CN104572242A (zh) | 一种扩展虚拟机磁盘空间的方法、装置及虚拟机系统 | |
CN105744001A (zh) | 分布式缓存系统扩容方法、数据访问方法及装置和系统 | |
CN114385561A (zh) | 文件管理方法和装置及hdfs系统 | |
CN105718221A (zh) | 一种数据存储的方法、装置和系统 | |
CN111522811A (zh) | 数据库的处理方法及装置、存储介质、终端 | |
CN107943615B (zh) | 基于分布式集群的数据处理方法与系统 | |
JP6990055B2 (ja) | 分散コンピューティングシステムにおけるデータをリカバリする方法およびシステム | |
CN115955488B (zh) | 基于副本冗余的分布式存储副本跨机房放置方法与装置 | |
CN114493602B (zh) | 区块链交易的执行方法、装置、电子设备和存储介质 | |
CN111708626B (zh) | 数据访问方法、装置、计算机设备和存储介质 | |
CN113590643A (zh) | 基于双轨数据库的数据同步方法、装置、设备和存储介质 | |
CN112685130A (zh) | 分布式存储环境下的虚拟机备份方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40018279 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |