CN113342275B - 区块链节点存取数据的方法、设备和计算机可读存储介质 - Google Patents
区块链节点存取数据的方法、设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN113342275B CN113342275B CN202110649654.7A CN202110649654A CN113342275B CN 113342275 B CN113342275 B CN 113342275B CN 202110649654 A CN202110649654 A CN 202110649654A CN 113342275 B CN113342275 B CN 113342275B
- Authority
- CN
- China
- Prior art keywords
- data
- target
- database
- parameter
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及分布式存储领域,提供了区块链节点存取数据的方法、设备和计算机可读存储介质,以保证区块链节点在存取数据时具有足够的存储空间。所述方法包括:当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,其中,第一存取接口由数据库集群代理向区块链节点提供,目标存储节点为数据库集群代理对应服务端集群中的目标服务端;若历史目标数据的每个数据尚未完成写入目标存储节点,则向目标存储节点写入历史目标数据;根据区块链节点调用第一存取接口时传递的参数,存取目标存储节点中对应于参数的数据。本申请的技术方案实现了对数据的分片存储,相当于扩展了节点的存储空间。
Description
技术领域
本发明涉及分布式领域,特别涉及一种区块链节点存取数据的方法、设备和计算机可读存储介质。
背景技术
现有的区块链节点存取数据的方法中,节点在读写键值数据库(kvdb)时,都是通过直接调用键值数据库底层所提供的读写接口来实现。由于现有的kvdb所提供的存储机制为单机存储,而区块链的账本数据不断增加,单机总的存储空间固定,因此,随着时间的推移,相对于不断增加的账本数据而言,区块链节点存取数据时,单机存储机制将面临存储空间不足的问题。
发明内容
本申请提供一种区块链节点存取数据的方法、设备和计算机可读存储介质,以保证区块链节点在存取数据时具有足够的存储空间。
一方面,本申请提供了一种区块链节点存取数据的方法,包括:
当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,所述第一存取接口由数据库集群代理向所述区块链节点提供,所述目标存储节点为所述数据库集群代理对应服务端集群中的目标服务端;
若所述历史目标数据的每个数据尚未完成写入目标存储节点,则向所述目标存储节点写入所述历史目标数据;
根据所述区块链节点调用所述第一存取接口时传递的参数,存取所述目标存储节点中对应于所述参数的数据。
可选地,所述检测历史目标数据的每个数据是否完成写入目标存储节点,包括:从本地缓存读取用于存储键值对的指定文件;若所述本地缓存不存在所述用于存储键值对的指定文件,则确定所述历史目标数据已完成写入目标存储节点。
可选地,所述向所述目标存储节点写入所述历史目标数据,包括:对于所述历史目标数据中的每个数据,按照具有相同标识的目标存储节点的数据分为一组进行分组;将所述分组后的数据写入用于存储键值对的指定文件;向所述具有相同标识的目标存储节点发送批处理请求,以使所述具有相同标识的目标存储节点调用目标数据库提供的批处理接口,向所述目标数据库写入所述分组后的每一组数据。
可选地,所述根据所述区块链节点调用所述第一存取接口时传递的参数,存取所述目标存储节点中对应于所述参数的数据,包括:根据所述区块链节点调用所述第一存取接口时传递的参数,确定所述参数对应的目标服务端;向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据。
可选地,所述根据所述区块链节点调用所述第一存取接口时传递的参数,确定所述参数对应的目标服务端,包括:计算以所述参数为关键字时对应的哈希值;将所述哈希值对服务端集群中当前的服务端的个数取模,以取模所得值作为参数对应的目标服务端的标识。
可选地,所述向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据,包括:若所述第一存取接口为读数据接口,则通过调用服务端为所述数据库集群代理提供的读数据请求接口,向所述关键字对应的目标服务端发送读数据请求;接收所述目标服务端根据所述读数据请求调用所述目标服务端的数据库提供的读数据接口读取的对应于所述参数的数据。
可选地,所述区块链节点调用所述第一存取接口时传递的参数包括所述区块链节点要存取的数据的关键字和全局数据版本号。
可选地,所述向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据,包括:若所述第一存取接口为写单个数据的接口,则通过调用服务端为所述数据库集群代理提供的写数据请求接口,向所述关键字对应的目标服务端发送写数据请求,以使所述关键字对应的目标服务端根据所述写数据请求调用所述目标服务端的数据库提供的写数据接口向所述目标服务端的数据库写入对应于所述参数的数据;接收所述目标服务端返回的数据写成功的通知。
可选地,所述向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据,包括:若所述第一存取接口为批量写数据的接口,则将数据结构input中具有不同键值对且具有相同标识的目标存储节点作为一组进行分组,所述数据结构input是以所述关键字以及与所述关键字对应的值构成的键值对;将分组后的数据结构input中内容写入用于存储所述键值对的指定文件;通过调用服务端为所述数据库集群代理提供的批量写数据请求接口,向所述关键字对应的目标服务端发送批量写数据请求,以使所述关键字对应的目标服务端根据所述批量写数据请求调用所述目标服务端的数据库提供的批量写数据接口,向所述目标服务端的数据库批量写入对应于所述参数的数据;接收所述目标服务端返回的数据写成功的通知。
可选地,所述区块链节点调用所述第一存取接口时传递的参数包括所述区块链节点要存取的数据的关键字或键值对,所述键值对为所述关键字和所述关键字对应的值。
可选地,所述根据所述区块链节点调用所述第一存取接口时传递的参数,存取所述目标存储节点中对应于所述参数的数据之前,所述方法还包括:通过加载服务端路由列表对所述数据库集群代理进行初始化,以建立所述数据库集群代理与所述目标存储节点的连接。
另一方面,本申请提供了一种区块链节点存取数据的装置,包括:
检测模块,用于当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,所述第一存取接口由数据库集群代理向所述区块链节点提供,所述目标存储节点为所述数据库集群代理对应服务端集群中的目标服务端;
数据写入模块,用于若所述历史目标数据的每个数据尚未完成写入目标存储节点,则向所述目标存储节点写入所述历史目标数据;
存取模块,用于根据所述区块链节点调用所述第一存取接口时传递的参数,存取所述目标存储节点中对应于所述参数的数据。
第三方面,本申请提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如上任一实施例所述的区块链节点存取数据的方法中的步骤。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如上任一实施例所述的区块链节点存取数据的方法中的步骤。
从上述本申请提供的技术方案可知,由于数据库集群代理区块链位于节点和服务端集群之间,对区块链节点和服务端集群进行了隔离,数据库集群代理成为区块链节点的服务端,数据库集群代理成为服务端集群的客户端,则在历史目标数据的每个数据尚未完成写入目标存储节点,向目标存储节点完成写入历史目标数据后,确定该目标存储节点可用,实现了对数据的分片存储,相当于扩展了区块链节点的存储空间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提出的区块链节点存取数据的方法的应用场景示意图;
图2是本申请实施例提供的区块链节点存取数据的方法的流程图;
图3是本申请实施例提供的区块链节点存取数据的装置的结构示意图;
图4是本申请实施例提供的设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书中,诸如第一和第二这样的形容词仅可以用于将一个元素或动作与另一元素或动作进行区分,而不必要求或暗示任何实际的这种关系或顺序。在环境允许的情况下,参照元素或部件或步骤(等)不应解释为局限于仅元素、部件、或步骤中的一个,而可以是元素、部件、或步骤中的一个或多个等。
在本说明书中,为了便于描述,附图中所示的各个部分的尺寸并不是按照实际的比例关系绘制的。
如附图1所示,是本申请提出的区块链节点存取数据的方法的应用场景示意图。节点101为区块链上的节点,其上运行的客户端与数据库集群代理102上运行的服务端构成C/S架构,而数据库集群代理102对服务端集群(其由服务端1031至服务端103n组成)而言则为客户端,服务端集群中每个服务端均可以通过接口调用访问各自的数据库(图中以kvdb1至kvdb2示出)。图1示例的应用场景示意图中,当区块链节点要存取数据时,其调用关系为:区块链节点上的客户端调用数据库集群代理提供的接口,数据库集群代理调用服务端集群中服务端提供的接口,服务端集群中的服务端则调用各自的数据库提供的接口,最终实现区块链上的节点存取服务端集群中目标服务端上的数据。
参阅附图2,是本申请实施例提出一种区块链节点存取数据的方法,该方法以附图1示例的应用场景示意图中的数据库集群代理为执行主体,其主要包括步骤S201至步骤S203,详述如下:
步骤S201:当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,其中,第一存取接口由数据库集群代理向区块链节点提供,目标存储节点为数据库集群代理对应服务端集群中的目标服务端。
在本申请实施例中,第一存取接口由数据库集群代理向区块链节点提供,用于在区块链节点需要存取数据时调用,其可能是从数据库集群代理对应的服务端集群读数据的接口,也可能是向数据库集群代理对应的服务端集群写数据的接口,其中,向数据库集群代理对应的服务端集群写数据的接口既可以是向数据库集群代理对应的服务端集群写单个数据的接口,又可以是向数据库集群代理对应的服务端集群批量写数据的接口,而目标存储节点为数据库集群代理对应服务端集群中的目标服务端,目标服务端中的“目标”二字表明该服务端将是服务端集群中目标数据存取的对象。当收到区块链节点对第一存取接口的调用时,无论该第一存取接口是读数据的接口还是写数据的接口,都可以首先通过检测历史目标数据的每个数据是否完成写入目标存储节点,来决定是否继续向目标存储节点写入历史目标数据。作为本申请一个实施例,检测历史目标数据的每个数据是否完成写入目标存储节点可以是:从本地缓存读取用于存储键值对的指定文件,若本地缓存不存在上述用于存储键值对的指定文件,则确定历史目标数据已完成写入目标存储节点。
步骤S202:若历史目标数据的每个数据尚未完成写入目标存储节点,则向目标存储节点写入历史目标数据。
需要说明的是,考虑到本申请实施例中,在不同的阶段,可能需要检测历史目标数据的每个数据是否完成写入目标存储节点,为了区别在不同阶段操作的对象即目标数据,将目标数据分为当前目标数据和历史目标数据,其中,当前目标数据是指当前正在操作的目标数据,而历史目标数据是指该目标数据已经历过如当前目标数据类似的操作。在本申请一个实施例中,向目标存储节点写入历史目标数据可以通过步骤S2021至步骤S2023实现:
步骤S2021:对于历史目标数据中的每个数据,按照具有相同标识的目标存储节点的数据分为一组进行分组。
在本申请实施例中,目标存储节点的标识可根据历史目标数据中数据的关键字计算得到,具体可以是:计算历史目标数据中数据的关键字对应的哈希值,然后,将哈希值对服务端集群中历史的服务端节点的个数取模,以取模所得值作为关键字对应的目标服务端的标识。假设历史目标数据中某个数据的关键字的参数使用key表示,服务端集群中历史的服务端的个数使用serverList.length表示,则一种计算关键字对应的目标服务端的标识的方法是SHA3(key)%serverList.length,此处,SHA3(key)是一种哈希算法,%是取模计算的符号,SHA3(key)%serverList.length的结果即为该关键字对应的目标服务端的标识。
虽然对于同一key,SHA3(key)具有唯一性,然而,对于不同的key,SHA3(key)%newList.length并不具有唯一性,即,不同的key可能得到相同的SHA3(key)%newList.length,即相同的目标存储节点的标识。基于上述事实,在本申请一个实施例中,对于历史目标数据中的每个数据,按照具有相同标识的目标存储节点的数据分为一组进行分组,具体而言,是根据SHA3(key)%newList.length,计算不同数据对应的目标存储节点的标识,若这些不同数据计算得到的目标存储节点的标识相同,则将这些数据分为一组,例如,假设数据kv1、kv2和kv5,虽然对应的key1、key2和key5不同,但经SHA3(key)%newList.length计算,得到同一个标识,假设该标识为2,则将kv1、kv2和kv5分为一组。
需要说明的是,上述的历史目标数据,是以关键字(key)以及与关键字对应的值(value)构成键值对的数据结构input即Map<key,value>input。所谓分组,也是将数据结构input中具有不同键值对且具有相同标识的目标存储节点作为一组,对数据结构input分组,即,List<Pair<db_server_index,Map<key,value>>>,其中,db_server_index是不同键值对Map<key,value>对应的同一目标服务端的标识。
步骤S2022:将分组后的数据写入用于存储键值对的指定文件。
具体时间是将分组后的数据结构input中内容写入用于存储诸如Check.data此类的指定文件。
步骤S2023:向具有相同标识的目标存储节点发送批处理请求,以使具有相同标识的目标存储节点调用目标数据库提供的批处理接口,向目标数据库写入分组后的每一组数据。
具体可以是数据库集群代理通过调用服务端为数据库集群代理提供的批量写数据请求接口BatchPutRequest(),向关键字对应的目标服务端(即上述标识同为db_server_index的目标服务端)发送批量写数据请求。目标服务端收到该批量写数据请求之后,调用目标服务端的数据库(例如,键-值存储数据库)提供的批量写数据接口BatchPut()向目标服务端的数据库写入对应于参数的数据,写完之后,向数据库集群代理返回写成功的通知并删除用于存储诸如Check.data此类的指定文件。需要说明的是,上述BatchPutRequest()接口和BatchPut()接口主要包含Map<key,value>input这一参数。例如,假设数据kv1、kv2和kv5,虽然对应的key1、key2和key5不同,但经SHA3(key)%newList.length计算,得到同一个标识,假设该标识为2,则向标识为2的目标存储节点发送批处理请求,例如,调用目标存储节点提供的批请求写入函数,以使该标识为2的目标存储节点调用目标数据库提供的批处理接口,例如批写入函数,向标识为2的目标存储节点的目标数据库写入数据kv1、kv2和kv5。
步骤S203:根据区块链节点对第一存取接口的调用时传递的参数,存取目标存储节点中对应于参数的数据。
如前所述,目标存储节点为数据库集群代理对应服务端集群中的目标服务端。步骤S203中,数据库集群代理能够根据区块链节点对第一存取接口的调用时传递的参数,存取目标存储节点中对应于参数的数据,意味着数据库集群代理与服务端集群中的服务端已建立连接,例如,TCP连接,而服务端集群中的服务端是由服务端路由列表给出,用于数据库集群代理与服务端集群中的服务端建立连接,该服务端路由列表是在数据库集群代理进行初始化时加载。因此,在本申请实施例中,上述根据区块链节点对第一存取接口的调用时传递的参数,存取目标存储节点中对应于参数的数据之前还包括通过加载服务端路由列表对数据库集群代理进行初始化,以建立数据库集群代理与目标存储节点的连接,其中,服务端路由列表的每一项服务端路由格式为index:ip:port,此处,index表示服务端集群中的服务端的唯一序号,ip是该服务端的因特网协议地址,port是端口号,ip和port可用于建立数据库集群代理与服务端集群中的服务端的连接,例如,TCP连接。
作为本申请一个实施例,根据区块链节点调用第一存取接口时传递的参数,存取目标存储节点中对应于参数的数据可以是:根据区块链节点调用第一存取接口时传递的参数,确定参数对应的目标服务端;向参数对应的目标服务端发送数据存取请求,以使参数对应的目标服务端调用目标服务端的数据库提供的第二存取接口,从目标服务端的数据库读取或向目标服务端的数据库写入对应于参数的数据。上述实施例中,区块链节点对第一存取接口的调用时传递的参数至少包括区块链节点要存取的数据的关键字(key),尽管不同的第一存取接口,区块链节点调用它时传递的参数不同,但根据区块链节点对第一存取接口的调用时传递的参数,确定参数对应的目标服务端节点则相同,具体可以是:计算以参数为关键字时对应的哈希值,然后,将哈希值对服务端集群中当前的服务端的个数取模,以取模所得值作为参数对应的目标服务端的标识。假设作为关键字的参数使用key表示,服务端集群中当前的服务端的个数使用serverList.length表示,则一种计算参数对应的目标服务端的标识的方法是SHA3(key)%serverList.length,此处,SHA3(key)是一种哈希算法,%是取模计算的符号,SHA3(key)%serverList.length的结果即为参数对应的目标服务端的标识。在确定参数对应的目标服务端之后,数据库集群代理可以通过调用目标服务端提供的第三存取接口,向该参数对应的目标服务端发送数据存取请求,目标服务端收到该数据存取请求后,调用目标服务端的数据库提供的第二存取接口,从目标服务端的数据库读取或向目标服务端的数据库写入对应于参数的数据。
如前所述,第一存取接口可以是读数据的接口,也可以是写数据的接口。当第一存取接口是写数据的接口时,既可以是写单个数据的接口,又可以是批量写数据的接口,以下分别进行说明。
作为本申请一个实施例,向参数对应的目标服务端发送数据存取请求,以使参数对应的目标服务端调用目标服务端的数据库提供的第二存取接口,从目标服务端的数据库读取或向目标服务端的数据库写入对应于参数的数据可以是:若第一存取接口为读数据接口,则通过调用服务端为数据库集群代理提供的读数据请求接口,向关键字对应的目标服务端发送读数据请求;接收目标服务端根据读数据请求调用目标服务端的数据库提供的读数据接口读取的对应于参数的数据,换言之,当第一存取接口是读数据的接口时,在确定了关键字(key)对应的目标服务端后,数据库集群代理通过调用服务端为数据库集群代理提供的读数据请求接口GetRequest(),向关键字对应的目标服务端发送读数据请求。目标服务端收到该读数据请求之后,调用目标服务端的数据库(例如,键-值存储数据库)提供的读数据接口Get()读取对应于参数的数据,返回给数据库集群代理。需要说明的是,上述GetRequest()和Get()接口,除了包含关键字这一参数之外,还包含全局数据版本号local_version这一参数。
作为本申请另一实施例,向参数对应的目标服务端发送数据存取请求,以使参数对应的目标服务端调用目标服务端的数据库提供的第二存取接口,从目标服务端的数据库读取或向目标服务端的数据库写入对应于参数的数据可以是:若第一存取接口为写单个数据的接口,则通过调用服务端为数据库集群代理提供的写数据请求接口,向关键字对应的目标服务端发送写数据请求,以使关键字对应的目标服务端根据写数据请求调用目标服务端的数据库提供的写数据接口向目标服务端的数据库写入对应于参数的数据;接收目标服务端返回的数据写成功的通知,换言之,当第一存取接口是写单个数据的接口时,在确定了关键字(key)对应的目标服务端后,数据库集群代理通过调用服务端为数据库集群代理提供的写数据请求接口PutRequest(),向关键字对应的目标服务端发送写数据请求。目标服务端收到该写数据请求之后,调用目标服务端的数据库(例如,键-值存储数据库)提供的写数据接口Put()向目标服务端的数据库写入对应于参数的数据,写完之后,向数据库集群代理返回写成功的通知。需要说明的是,上述写单个数据的接口、PutRequest()接口和Putt()接口除了包含关键字这一参数之外,还包含与关键字对应的值(value)。
作为本申请另一实施例,向参数对应的目标服务端发送数据存取请求,以使参数对应的目标服务端调用目标服务端的数据库提供的第二存取接口,从目标服务端的数据库读取或向目标服务端的数据库写入对应于参数的数据可以是:若第一存取接口为批量写数据的接口,则将数据结构input中具有不同键值对且具有相同标识的目标存储节点作为一组进行分组;将分组后的数据结构input中内容写入用于存储键值对的指定文件;通过调用服务端为数据库集群代理提供的批量写数据请求接口,向关键字对应的目标服务端发送批量写数据请求,以使关键字对应的目标服务端根据批量写数据请求调用目标服务端的数据库提供的批量写数据接口,向目标服务端的数据库批量写入对应于参数的数据;接收目标服务端返回的数据写成功的通知,其中,数据结构input是以关键字以及与关键字对应的值构成的键值对,换言之,当第一存取接口是批量写数据的接口时,该接口的参数是以关键字(key)以及与关键字对应的值(value)构成键值对的数据结构input即Map<key,value>input。在确定了关键字(key)对应的目标服务端后,将数据结构input中具有不同键值对但具有相同标识的目标存储节点作为一组,对数据结构input分组,即,List<Pair<db_server_index,Map<key,value>>>,其中,db_server_index是不同键值对Map<key,value>对应的同一目标服务端的标识。然后,将分组后的数据结构input中内容写入用于存储诸如Check.data此类的指定文件。数据库集群代理通过调用服务端为数据库集群代理提供的批量写数据请求接口BatchPutRequest(),向关键字对应的目标服务端发送批量写数据请求。目标服务端收到该批量写数据请求之后,调用目标服务端的数据库(例如,键-值存储数据库)提供的批量写数据接口BatchPut()向目标服务端的数据库写入对应于参数的数据,写完之后,向数据库集群代理返回写成功的通知并删除诸如Check.data此类的指定文件。需要说明的是,上述BatchPutRequest()接口和BatchPut()接口主要包含Map<key,value>input这一参数。
从上述附图2示例的区块链节点存取数据的方法可知,由于数据库集群代理区块链位于节点和服务端集群之间,对区块链节点和服务端集群进行了隔离,数据库集群代理成为区块链节点的服务端,数据库集群代理成为服务端集群的客户端,则在历史目标数据的每个数据尚未完成写入目标存储节点,向目标存储节点完成写入历史目标数据后,确定该目标存储节点可用,实现了对数据的分片存储,相当于扩展了区块链节点的存储空间。
请参阅附图3,是本申请实施例提供的一种区块链节点存取数据的装置,该装置可以包括检测模块301、数据写入模块302和存取模块303,详述如下:
检测模块301,用于当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,其中,第一存取接口由数据库集群代理向区块链节点提供,目标存储节点为数据库集群代理对应服务端集群中的目标服务端;
数据写入模块302,用于若历史目标数据的每个数据尚未完成写入目标存储节点,则向目标存储节点写入历史目标数据;
存取模块303,用于根据区块链节点调用第一存取接口时传递的参数,存取目标存储节点中对应于参数的数据。
从上述附图3示例的区块链节点存取数据的装置可知,由于数据库集群代理区块链位于节点和服务端集群之间,对区块链节点和服务端集群进行了隔离,数据库集群代理成为区块链节点的服务端,数据库集群代理成为服务端集群的客户端,则在历史目标数据的每个数据尚未完成写入目标存储节点,向目标存储节点完成写入历史目标数据后,确定该目标存储节点可用,实现了对数据的分片存储,相当于扩展了区块链节点的存储空间。
可选地,上述附图3示例的装置中,检测模块301可包括读取单元和第一确定单元,其中:
读取单元,用于从本地缓存读取用于存储键值对的指定文件;
第一确定单元,用于若本地缓存不存在用于存储键值对的指定文件,则确定历史目标数据已完成写入目标存储节点。
可选地,上述附图3示例的装置中,数据写入模块302可包括分组单元、第二确定单元、第一分组数据写入单元和第一发送单元,其中:
分组单元,用于对于历史目标数据中的每个数据,按照具有相同标识的目标存储节点的数据分为一组进行分组;
第一分组数据写入单元,用于将分组后的数据写入用于存储键值对的指定文件;
第一发送单元,用于向具有相同标识的目标存储节点发送批处理请求,以使具有相同标识的目标存储节点调用目标数据库提供的批处理接口,向目标数据库写入分组后的每一组数据。
可选地,上述附图3示例的装置中,存取模块303可包括第二确定单元和第二发送单元,其中:
第二确定单元,用于根据区块链节点调用第一存取接口时传递的参数,确定参数对应的目标服务端;
第二发送单元,用于向参数对应的目标服务端发送数据存取请求,以使参数对应的目标服务端调用目标服务端的数据库提供的第二存取接口,从目标服务端的数据库读取或向目标服务端的数据库写入对应于参数的数据。
可选地,上述示例的第二确定单元可包括计算单元和取模单元,其中:
计算单元,用于计算以参数为关键字时对应的哈希值;
取模单元,用于将哈希值对服务端集群中当前的服务端的个数取模,以取模所得值作为参数对应的目标服务端的标识。
可选地,上述示例的第二发送单元可包括第一调用单元和第一接收单元,其中:
第一调用单元,用于若第一存取接口为读数据接口,则通过调用服务端为数据库集群代理提供的读数据请求接口,向关键字对应的目标服务端发送读数据请求;
第一接收单元,用于接收目标服务端根据读数据请求调用目标服务端的数据库提供的读数据接口读取的对应于参数的数据。
可选地,上述区块链节点调用第一存取接口时传递的参数包括区块链节点要存取的数据的关键字和全局数据版本号。
可选地,上述示例的第二发送单元可包括第二调用单元和第二接收单元,其中:
第二调用单元,用于若第一存取接口为写单个数据的接口,则通过调用服务端为数据库集群代理提供的写数据请求接口,向关键字对应的目标服务端发送写数据请求,以使关键字对应的目标服务端根据写数据请求调用目标服务端的数据库提供的写数据接口向目标服务端的数据库写入对应于参数的数据;
第二接收单元,用于接收目标服务端返回的数据写成功的通知。
可选地,上述示例的第二发送单元可包括分组单元、第二分组数据写入单元、第三调用单元和第三接收单元,其中:
分组单元,用于若第一存取接口为批量写数据的接口,则将数据结构input中具有不同键值对且具有相同标识的目标存储节点作为一组进行分组,其中,数据结构input包括以关键字以及与该关键字对应的值构成的键值对;
第二分组数据写入单元,用于将分组后的数据结构input中内容写入用于存储键值对的指定文件;
第三调用单元,用于通过调用服务端为数据库集群代理提供的批量写数据请求接口,向关键字对应的目标服务端发送批量写数据请求,以使关键字对应的目标服务端根据批量写数据请求调用目标服务端的数据库提供的批量写数据接口,向目标服务端的数据库批量写入对应于参数的数据;
第三接收单元,用于接收目标服务端返回的数据写成功的通知。
可选地,上述区块链节点调用第一存取接口时传递的参数包括区块链节点要存取的数据的关键字或键值对,其中,键值对为关键字和关键字对应的值。
可选地,上述图3示例的装置还可以包括连接建立模块,用于存取模块303根据区块链节点调用第一存取接口时传递的参数,存取目标存储节点中对应于参数的数据之前,通过加载服务端路由列表对数据库集群代理进行初始化,以建立数据库集群代理与目标存储节点的连接。
从以上技术方案的描述中可知,由于数据库集群代理区块链位于节点和服务端集群之间,对区块链节点和服务端集群进行了隔离,数据库集群代理成为区块链节点的服务端,数据库集群代理成为服务端集群的客户端,则在历史目标数据的每个数据尚未完成写入目标存储节点,向目标存储节点完成写入历史目标数据后,确定该目标存储节点可用,实现了对数据的分片存储,相当于扩展了区块链节点的存储空间。
图4是本申请一实施例提供的计算机设备的结构示意图。如图4所示,该实施例的计算机设备4主要包括:处理器40、存储器41以及存储在存储器41中并可在处理器40上运行的计算机程序42,例如区块链节点存取数据的方法的程序。处理器40执行计算机程序42时实现上述区块链节点存取数据的方法实施例中的步骤,例如图2所示的步骤S201至步骤S203。或者,处理器40执行计算机程序42时实现上述各装置实施例中各模块/单元的功能,例如图3所示检测模块301、数据写入模块302和存取模块303的功能。
示例性地,区块链节点存取数据的方法的计算机程序42主要包括:当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,其中,第一存取接口由数据库集群代理向区块链节点提供,目标存储节点为数据库集群代理对应服务端集群中的目标服务端;若历史目标数据的每个数据尚未完成写入目标存储节点,则向目标存储节点写入历史目标数据;根据区块链节点调用第一存取接口时传递的参数,存取目标存储节点中对应于参数的数据。计算机程序42可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器41中,并由处理器40执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序42在计算机设备4中的执行过程。例如,计算机程序42可以被分割成检测模块301、数据写入模块302和存取模块303(虚拟装置中的模块)的功能,各模块具体功能如下:检测模块301,用于当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,其中,第一存取接口由数据库集群代理向区块链节点提供,目标存储节点为数据库集群代理对应服务端集群中的目标服务端;数据写入模块302,用于若历史目标数据的每个数据尚未完成写入目标存储节点,则向目标存储节点写入历史目标数据;存取模块303,用于根据区块链节点调用第一存取接口时传递的参数,存取目标存储节点中对应于参数的数据。
计算机设备4可包括但不仅限于处理器40、存储器41。本领域技术人员可以理解,图4仅仅是计算机设备4的示例,并不构成对计算机设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算计算机设备还可以包括输入输出计算机设备、网络接入计算机设备、总线等。
所称处理器40可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器41可以是计算机设备4的内部存储单元,例如计算机设备4的硬盘或内存。存储器41也可以是计算机设备4的外部存储计算机设备,例如计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器41还可以既包括计算机设备4的内部存储单元也包括外部存储计算机设备。存储器41用于存储计算机程序以及计算机设备所需的其他程序和数据。存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即,将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非临时性计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,区块链节点存取数据的方法的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤,即,当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,其中,第一存取接口由数据库集群代理向区块链节点提供,目标存储节点为数据库集群代理对应服务端集群中的目标服务端;若历史目标数据的每个数据尚未完成写入目标存储节点,则向目标存储节点写入历史目标数据;根据区块链节点调用第一存取接口时传递的参数,存取目标存储节点中对应于参数的数据。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。非临时性计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读内存(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,非临时性计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,非临时性计算机可读介质不包括电载波信号和电信信号。以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种区块链节点存取数据的方法,其特征在于,所述方法包括:
当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,所述第一存取接口由数据库集群代理向所述区块链节点提供,所述目标存储节点为所述数据库集群代理对应服务端集群中的目标服务端;
若所述历史目标数据的每个数据尚未完成写入目标存储节点,则向所述目标存储节点写入所述历史目标数据;
根据所述区块链节点调用所述第一存取接口时传递的参数,确定所述参数对应的目标服务端;
向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据。
2.如权利要求1所述区块链节点存取数据的方法,其特征在于,所述检测历史目标数据的每个数据是否完成写入目标存储节点,包括:
从本地缓存读取用于存储键值对的指定文件;
若所述本地缓存不存在所述用于存储键值对的指定文件,则确定所述历史目标数据已完成写入目标存储节点。
3.如权利要求1所述区块链节点存取数据的方法,其特征在于,所述向所述目标存储节点写入所述历史目标数据,包括:
对于所述历史目标数据中的每个数据,按照具有相同标识的目标存储节点的数据分为一组进行分组;
将所述分组后的数据写入用于存储键值对的指定文件;
向所述具有相同标识的目标存储节点发送批处理请求,以使所述具有相同标识的目标存储节点调用目标数据库提供的批处理接口,向所述目标数据库写入所述分组后的每一组数据。
4.如权利要求1所述区块链节点存取数据的方法,其特征在于,所述根据所述区块链节点调用所述第一存取接口时传递的参数,确定所述参数对应的目标服务端,包括:
计算以所述参数为关键字时对应的哈希值;
将所述哈希值对服务端集群中当前的服务端的个数取模,以取模所得值作为参数对应的目标服务端的标识。
5.如权利要求4所述区块链节点存取数据的方法,其特征在于,所述向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据,包括:
若所述第一存取接口为读数据接口,则通过调用服务端为所述数据库集群代理提供的读数据请求接口,向所述关键字对应的目标服务端发送读数据请求;
接收所述目标服务端根据所述读数据请求调用所述目标服务端的数据库提供的读数据接口读取的对应于所述参数的数据。
6.如权利要求4或5所述区块链节点存取数据的方法,其特征在于,所述区块链节点调用所述第一存取接口时传递的参数包括所述区块链节点要存取的数据的关键字和全局数据版本号。
7.如权利要求4所述区块链节点存取数据的方法,其特征在于,所述向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据,包括:
若所述第一存取接口为写单个数据的接口,则通过调用服务端为所述数据库集群代理提供的写数据请求接口,向所述关键字对应的目标服务端发送写数据请求,以使所述关键字对应的目标服务端根据所述写数据请求调用所述目标服务端的数据库提供的写数据接口向所述目标服务端的数据库写入对应于所述参数的数据;
接收所述目标服务端返回的数据写成功的通知。
8.如权利要求4所述区块链节点存取数据的方法,其特征在于,所述向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据,包括:
若所述第一存取接口为批量写数据的接口,则将数据结构input中具有不同键值对且具有相同标识的目标存储节点作为一组进行分组,所述数据结构input包括以所述关键字以及与所述关键字对应的值构成的键值对;
将分组后的数据结构input中内容写入用于存储所述键值对的指定文件;
通过调用服务端为所述数据库集群代理提供的批量写数据请求接口,向所述关键字对应的目标服务端发送批量写数据请求,以使所述关键字对应的目标服务端根据所述批量写数据请求调用所述目标服务端的数据库提供的批量写数据接口,向所述目标服务端的数据库批量写入对应于所述参数的数据;
接收所述目标服务端返回的数据写成功的通知。
9.如权利要求7或8所述区块链节点存取数据的方法,其特征在于,所述区块链节点调用所述第一存取接口时传递的参数包括所述区块链节点要存取的数据的关键字或键值对,所述键值对为所述关键字和所述关键字对应的值。
10.如权利要求1至5任意一项所述区块链节点存取数据的方法,其特征在于,所述根据所述区块链节点调用所述第一存取接口时传递的参数,确定所述参数对应的目标服务端之前,所述方法还包括:通过加载服务端路由列表对所述数据库集群代理进行初始化,以建立所述数据库集群代理与所述目标存储节点的连接。
11.一种区块链节点存取数据的装置,其特征在于,所述装置包括:
检测模块,用于当收到区块链节点对第一存取接口的调用时,检测历史目标数据的每个数据是否完成写入目标存储节点,所述第一存取接口由数据库集群代理向所述区块链节点提供,所述目标存储节点为所述数据库集群代理对应服务端集群中的目标服务端;
数据写入模块,用于若所述历史目标数据的每个数据尚未完成写入目标存储节点,则向所述目标存储节点写入所述历史目标数据;
第二确定单元,用于根据所述区块链节点调用所述第一存取接口时传递的参数,确定所述参数对应的目标服务端;
第二发送单元,用于向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据。
12.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至10任意一项所述区块链节点存取数据的方法的步骤。
13.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10任意一项所述区块链节点存取数据的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110649654.7A CN113342275B (zh) | 2021-06-10 | 2021-06-10 | 区块链节点存取数据的方法、设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110649654.7A CN113342275B (zh) | 2021-06-10 | 2021-06-10 | 区块链节点存取数据的方法、设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342275A CN113342275A (zh) | 2021-09-03 |
CN113342275B true CN113342275B (zh) | 2022-11-15 |
Family
ID=77476626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110649654.7A Active CN113342275B (zh) | 2021-06-10 | 2021-06-10 | 区块链节点存取数据的方法、设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342275B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106796688B (zh) * | 2016-12-26 | 2020-12-18 | 深圳前海达闼云端智能科技有限公司 | 区块链的权限控制方法、装置、***及节点设备 |
CN108829772B (zh) * | 2018-05-29 | 2020-01-10 | 杭州趣链科技有限公司 | 一种基于文件的区块链区块存储和读取方法 |
CN109726202B (zh) * | 2018-12-18 | 2020-11-17 | 北京新唐思创教育科技有限公司 | 一种区块链数据存储方法及计算机存储介质 |
US11113272B2 (en) * | 2019-07-31 | 2021-09-07 | Advanced New Technologies Co., Ltd. | Method and apparatus for storing blockchain state data and electronic device |
CN111049902B (zh) * | 2019-09-16 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
-
2021
- 2021-06-10 CN CN202110649654.7A patent/CN113342275B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113342275A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020259352A1 (zh) | 一种数据处理方法、节点及区块链*** | |
CN111190928A (zh) | 缓存处理方法、装置、计算机设备以及存储介质 | |
CN110888838B (zh) | 基于对象存储的请求处理方法、装置、设备及存储介质 | |
EP3817333B1 (en) | Method and system for processing requests in a consortium blockchain | |
CN111274252A (zh) | 一种区块链的数据上链方法、装置、存储介质和服务器 | |
CN111460458B (zh) | 一种数据处理方法、相关装置及计算机可存储介质 | |
US11275835B2 (en) | Method of speeding up a full antivirus scan of files on a mobile device | |
CN112069169B (zh) | 区块数据存储方法、装置、电子设备及可读存储介质 | |
US20230102617A1 (en) | Repeat transaction verification method, apparatus, and device, and medium | |
CN108846129B (zh) | 存储数据访问方法、装置及存储介质 | |
CN109600254B (zh) | 全链路日志的生成方法及相关*** | |
CN108133026B (zh) | 一种多数据的处理方法、***及存储介质 | |
CN113342275B (zh) | 区块链节点存取数据的方法、设备和计算机可读存储介质 | |
CN113238856A (zh) | 一种基于rdma的内存管理方法及装置 | |
WO2023142605A1 (zh) | 一种基于区块链的数据处理方法和相关装置 | |
CN110806979A (zh) | 接口返回值的校验方法、装置、设备及存储介质 | |
CN113726885B (zh) | 一种流量配额的调整方法和装置 | |
CN113364875B (zh) | 区块链节点存取数据的方法、设备和计算机可读存储介质 | |
CN108959405B (zh) | 数据的强一致性读取方法及终端设备 | |
CN111459899B (zh) | 日志共享方法、装置及终端设备 | |
CN114710426A (zh) | 一种确定读操作往返时延的方法、装置、***及相关设备 | |
CN112132583A (zh) | 区块链的交易处理方法、装置、电子设备及可读存储介质 | |
CN112910936A (zh) | 数据处理方法、装置、***、电子设备及可读存储介质 | |
CN113806249B (zh) | 一种对象存储有序列举方法、装置、终端及存储介质 | |
CN113489726B (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 |