区块链节点存取数据的方法、设备和计算机可读存储介质技术

技术编号:29971407 阅读:21 留言:0更新日期:2021-09-08 09:48
本申请涉及分布式存储领域,提供了区块链节点存取数据的方法、设备和计算机可读存储介质,以保证区块链节点在存取数据时具有足够的存储空间。所述方法包括:当收到区块链节点对第一存取接口的调用时,检测数据库集群代理对应的服务端集群中是否存在可扩容服务端;若数据库集群代理对应的服务端集群中存在可扩容服务端,则通过将当前目标数据写入可扩容服务端,使服务端集群成为已扩容服务端集群;根据区块链节点调用第一存取接口时传递的参数,存取已扩容服务端集群中对应于参数的数据。本申请的技术方案实现了对节点的存储空间的扩容,保证了区块链节点在存取服务端集群中对应于参数的数据时具有足够的空间。参数的数据时具有足够的空间。参数的数据时具有足够的空间。

【技术实现步骤摘要】
区块链节点存取数据的方法、设备和计算机可读存储介质


[0001]本专利技术涉及分布式领域,特别涉及一种区块链节点存取数据的方法、设备和计算机可读存储介质。

技术介绍

[0002]现有的区块链节点存取数据的方法中,节点在读写键值数据库(kvdb)时,都是通过直接调用键值数据库底层所提供的读写接口来实现。由于现有的kvdb所提供的存储机制为单机存储,而区块链的账本数据不断增加,单机总的存储空间固定,因此,随着时间的推移,相对于不断增加的账本数据而言,区块链节点存取数据时,单机存储机制将面临存储空间不足的问题。

技术实现思路

[0003]本申请提供一种区块链节点存取数据的方法、设备和计算机可读存储介质,以保证区块链节点在存取数据时具有足够的存储空间。
[0004]一方面,本申请提供了一种区块链节点存取数据的方法,包括:
[0005]当收到区块链节点对第一存取接口的调用时,检测数据库集群代理对应的服务端集群中是否存在可扩容服务端,所述第一存取接口由所述数据库集群代理向所述区块链节点提供;
[0006]若所述数据库集群代理对应的服务端集群中存在可扩容服务端,则通过将当前目标数据写入所述可扩容服务端,使所述服务端集群成为已扩容服务端集群;
[0007]根据所述节点调用第一存取接口时传递的参数,存取所述已扩容服务端集群中对应于所述参数的数据。
[0008]可选地,所述检测数据库集群代理对应的服务端集群中是否存在可扩容服务端,包括:读取所述服务端集群中各服务端的状态;若所述服务端集群中存在状态为正在扩容的服务端,则确定所述数据库集群代理对应的服务端集群中存在可扩容服务端。
[0009]可选地,所述检测数据库集群代理对应的服务端集群中是否存在可扩容服务端之前,所述方法还包括:遍历服务端路由列表,所述服务端路由列表列出所述至少一个服务端及其路由信息;若所述至少一个服务端存在正在扩容的服务端,则在所述正在扩容的服务端的路由信息中添加正在扩容的标记。
[0010]可选地,所述通过将当前目标数据写入所述可扩容服务端,使所述服务端集群成为已扩容服务端集群,包括:获取所述服务端集群中原服务端存储的所述当前目标数据;根据所述可扩容服务端和所述当前目标数据中每个数据的关键字,重新确定所述每个数据对应的目标存储节点,所述目标存储节点包括所述原服务端和所述可扩容服务端;将所述每个数据写入对应的目标存储节点;将所述写入数据的可扩容服务端的状态更新为扩容完成,并更新全局数据版本号。
[0011]可选地,所述获取所述服务端集群中原服务端存储的所述当前目标数据,包括:向
所述原服务端发送数据请求;接收所述原服务端根据所述数据请求调用目标数据库提供的遍历接口后返回的所述当前目标数据,所述当前目标数据包括所述当前目标数据中每个数据的关键字。
[0012]可选地,所述根据所述可扩容服务端和所述当前目标数据中每个数据的关键字,重新确定所述每个数据对应的目标存储节点,包括:计算所述每个数据的关键字对应的哈希值;将所述关键字对应的哈希值对所述原服务端与所述可扩容服务端的总个数取模,以所述取模所得值作为所述每个数据对应的目标存储节点的标识。
[0013]可选地,所述将所述每个数据写入对应的目标存储节点,包括:对于所述每个数据,按照具有相同标识的目标存储节点的数据分为一组进行分组;向所述具有相同标识的目标存储节点发送批处理请求,以使所述具有相同标识的目标存储节点调用目标数据库提供的批处理接口,向所述目标数据库写入所述分组后的每一组数据。
[0014]可选地,所述根据所述区块链节点调用第一存取接口时传递的参数,存取所述已扩容服务端集群中对应于所述参数的数据,包括:根据所述区块链节点调用第一存取接口时传递的参数,确定所述参数对应的目标服务端;向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目标服务端的数据库读取或向所述目标服务端的数据库写入对应于所述参数的数据。
[0015]可选地,当所述第一存取接口为读数据的接口或所述第一存取接口为写单个数据的接口时,所述区块链节点调用第一存取接口时传递的参数包括所述区块链节点要存取的数据的关键字和全局数据版本号,当所述第一存取接口为批量写数据的接口时,所述区块链节点调用第一存取接口时传递的参数包括所述区块链节点要存取的数据的关键字和全局数据版本号或键值对和所述全局数据版本号,所述键值对为所述关键字和所述关键字对应的值。
[0016]可选地,所述当收到区块链节点对第一存取接口的调用时,检测数据库集群代理对应的服务端集群中是否存在可扩容服务端之前,所述方法还包括:检测历史目标数据的每个数据是否完成写入目标存储节点。
[0017]可选地,所述检测历史目标数据的每个数据是否完成写入目标存储节点,包括:从本地缓存读取用于存储键值对的指定文件;若所述本地缓存不存在所述用于存储键值对的指定文件,则确定所述历史目标数据已完成写入所述目标存储节点。
[0018]可选地,所述根据所述节点调用第一存取接口时传递的参数,存取所述已扩容服务端集群中对应于所述参数的数据之前,所述方法还包括:检测数据库集群代理对应的服务端集群中是否存在可扩容服务端;若所述数据库集群代理对应的服务端集群中存在可扩容服务端,则通过将历史目标数据写入所述可扩容服务端实现对所述服务端集群的扩容;对于所述历史目标数据的每个数据,按照具有相同标识的目标存储节点的数据分为一组进行分组;向所述具有相同标识的目标存储节点发送批处理请求,以使所述具有相同标识的目标存储节点调用目标数据库提供的批处理接口,向所述目标数据库写入所述对历史目标数据分组后的每一组数据。
[0019]可选地,所述通过将当前目标数据写入所述可扩容服务端,使所述服务端集群成为已扩容服务端集群之前,还包括:通过加载服务端路由列表对所述数据库集群代理进行
初始化,以建立所述数据库集群代理与目标存储节点的连接。
[0020]另一方面,本申请提供了一种区块链节点存取数据的装置,包括:
[0021]检测模块,用于当收到区块链节点对第一存取接口的调用时,检测数据库集群代理对应的服务端集群中是否存在可扩容服务端,所述第一存取接口由所述数据库集群代理向所述区块链节点提供;
[0022]扩容模块,用于若所述数据库集群代理对应的服务端集群中存在可扩容服务端,则通过将当前目标数据写入所述可扩容服务端,使所述服务端集群成为已扩容服务端集群;
[0023]存取模块,用于根据所述节点调用第一存取接口时传递的参数,存取所述已扩容服务端集群中对应于所述参数的数据。
[0024]第三方面,本申请提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如上任一实施例所述的区块链节点存取数据的方法中的步骤。
[0025]第四方面,本申请提供了一种计算本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链节点存取数据的方法,其特征在于,所述方法包括:当收到区块链节点对第一存取接口的调用时,检测数据库集群代理对应的服务端集群中是否存在可扩容服务端,所述第一存取接口由所述数据库集群代理向所述区块链节点提供;若所述数据库集群代理对应的服务端集群中存在可扩容服务端,则通过将当前目标数据写入所述可扩容服务端,使所述服务端集群成为已扩容服务端集群;根据所述区块链节点调用第一存取接口时传递的参数,存取所述已扩容服务端集群中对应于所述参数的数据。2.如权利要求1所述区块链节点存取数据的方法,其特征在于,所述检测数据库集群代理对应的服务端集群中是否存在可扩容服务端,包括:读取所述服务端集群中各服务端的状态;若所述服务端集群中存在状态为正在扩容的服务端,则确定所述数据库集群代理对应的服务端集群中存在可扩容服务端。3.如权利要求1或2所述区块链节点存取数据的方法,其特征在于,所述检测数据库集群代理对应的服务端集群中是否存在可扩容服务端之前,所述方法还包括:遍历服务端路由列表,所述服务端路由列表列出所述至少一个服务端及其路由信息;若所述至少一个服务端存在正在扩容的服务端,则在所述正在扩容的服务端的路由信息中添加正在扩容的标记。4.如权利要求1所述区块链节点存取数据的方法,其特征在于,所述通过将当前目标数据写入所述可扩容服务端,使所述服务端集群成为已扩容服务端集群,包括:获取所述服务端集群中原服务端存储的所述当前目标数据;根据所述可扩容服务端和所述当前目标数据中每个数据的关键字,重新确定所述每个数据对应的目标存储节点,所述目标存储节点包括所述原服务端和所述可扩容服务端;将所述每个数据写入对应的目标存储节点;将所述写入数据的可扩容服务端的状态更新为扩容完成,并更新全局数据版本号。5.如权利要求4所述区块链节点存取数据的方法,其特征在于,所述获取所述服务端集群中原服务端存储的所述当前目标数据,包括:向所述原服务端发送数据请求;接收所述原服务端根据所述数据请求调用目标数据库提供的遍历接口后返回的所述当前目标数据,所述当前目标数据包括所述当前目标数据中每个数据的关键字。6.如权利要求4所述区块链节点存取数据的方法,其特征在于,所述根据所述可扩容服务端和所述当前目标数据中每个数据的关键字,重新确定所述每个数据对应的目标存储节点,包括:计算所述每个数据的关键字对应的哈希值;将所述关键字对应的哈希值对所述原服务端与所述可扩容服务端的总个数取模,以所述取模所得值作为所述每个数据对应的目标存储节点的标识。7.如权利要求4所述区块链节点存取数据的方法,其特征在于,所述将所述每个数据写入对应的目标存储节点,包括:对于所述每个数据,按照具有相同标识的目标存储节点的数据分为一组进行分组;
向所述具有相同标识的目标存储节点发送批处理请求,以使所述具有相同标识的目标存储节点调用目标数据库提供的批处理接口,向所述目标数据库写入所述分组后的每一组数据。8.如权利要求1所述区块链节点存取数据的方法,其特征在于,所述根据所述区块链节点调用第一存取接口时传递的参数,存取所述已扩容服务端集群中对应于所述参数的数据,包括:根据所述区块链节点调用第一存取接口时传递的参数,确定所述参数对应的目标服务端;向所述参数对应的目标服务端发送数据存取请求,以使所述参数对应的目标服务端调用所述目标服务端的数据库提供的第二存取接口,从所述目...

【专利技术属性】
技术研发人员:曹崇瑞赖奕宇
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1