文件迁移方法、装置、存储介质及电子设备与流程

文档序号:29128437发布日期:2022-03-05 00:50阅读:74来源:国知局
文件迁移方法、装置、存储介质及电子设备与流程

1.本公开涉及区块链技术领域,具体地,涉及一种文件迁移方法、装置、存储介质及电子设备。


背景技术:

2.由于区块链具有去中心化、集体维护、高可信、可追溯、不可篡改、共识机制、智能合约等功能特性,所以区块链在越来越多的业务领域得以应用。区块链以链式结构存储账本数据,并以共识机制以及密码学等方式来保障账本数据的不可篡改,任何篡改操作都会导致整个账本不可用。简而言之,区块链账本只支持账本数据查询操作和账本数据写入操作,不支持账本数据修改操作和账本数据删除操作。由于区块链账本数据的不可删除,因此随着时间推移,区块链账本数据不断追加会导致账本数据“膨胀”隐患。
3.相关技术中,为了避免账本数据“膨胀”隐患,可将区块链的账本数据存储到分布式存储系统中,然而,久而久之,分布式存储系统中的各个存储节点之间可能存在负载不均衡的问题。


技术实现要素:

4.本公开的目的是提供一种文件迁移方法、装置、存储介质及电子设备,以解决相关技术中存在的问题。
5.为了实现上述目的,本公开实施例的第一部分提供一种文件迁移方法,该方法应用于分布式存储系统,所述分布式存储系统包括多个存储节点,每一所述存储节点用于存储区块链账本数据,所述方法包括:
6.针对任一所述存储节点,在所述存储节点上存储的总账本数据量大于所述多个存储节点的总账本数据量均值的情况下,根据所述存储节点的磁盘剩余内存、磁盘占用率、所述总账本数据量、以及热点数据占比率中的至少一种信息判断是否对所述存储节点上存储的至少部分账本数据进行文件迁移;
7.在确定对所述存储节点上存储的至少部分账本数据进行文件迁移的情况下,对所述存储节点进行文件迁移处理。
8.可选地,所述对所述存储节点进行文件迁移处理,包括:
9.将所述存储节点确定为待迁移存储节点,并根据所述待迁移存储节点上存储的所述总账本数据量、所述多个存储节点的所述总账本数据量均值、以及预设影响因子计算所述待迁移存储节点上待迁移账本数据的数据总量;
10.根据所述数据总量以及单个账本数据的数据量确定所述待迁移账本数据的个数;
11.从所述待迁移存储节点中确定对应所述个数的所述待迁移账本数据;
12.针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点,并将所述待迁移账本数据存储到所述目标迁移存储节点。
13.可选地,所述从所述待迁移存储节点中确定对应所述个数的所述待迁移账本数
据,包括:
14.获取所述待迁移存储节点上各所述账本数据的被查询次数;
15.根据所述待迁移存储节点上各所述账本数据的被查询次数,计算平均查询次数;
16.针对所述待迁移存储节点上的每一所述账本数据,在确定所述账本数据对应的被查询次数少于所述平均查询次数的情况下,将所述账本数据确定为候选待迁移账本数据,以得到候选待迁移账本数据池;
17.从所述候选待迁移账本数据池中随机选择对应所述个数的所述待迁移账本数据。
18.可选地,所述针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点,包括:
19.确定除所述待迁移存储节点之外的第一候选存储节点池;
20.确定存储有所述待迁移账本数据的主本文件或副本文件的抵触存储节点;
21.从所述第一候选存储节点池中排除所述抵触存储节点,得到第二候选存储节点池;
22.从所述第二候选存储节点池中选择符合预设条件的所述目标迁移存储节点。
23.可选地,所述针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点,包括:
24.确定除所述待迁移存储节点之外的第一候选存储节点池;
25.确定存储有所述待迁移账本数据的主本文件或副本文件的抵触存储节点;
26.从所述第一候选存储节点池中排除所述抵触存储节点,得到第二候选存储节点池;
27.从所述第二候选存储节点池中排除其他待迁移存储节点,得到第三候选存储节点池;
28.从所述第三候选存储节点池中选择符合预设条件的所述目标迁移存储节点。
29.可选地,所述预设条件包括磁盘剩余内存大于预设内存、磁盘占用率小于预设占用率、热点数据占比率小于预设占比率、响应时长小于预设时长中的至少一者。
30.可选地,所述根据所述存储节点的磁盘剩余内存、磁盘占用率、所述总账本数据量、以及热点数据占比率中的至少一种信息判断是否对所述存储节点上存储的至少部分账本数据进行文件迁移,包括:
31.将所述磁盘剩余内存、所述磁盘占用率、所述总账本数据量、以及所述热点数据占比率输入训练完成的支持向量机,得到所述支持向量机输出的表征是否进行文件迁移处理的结果。
32.本公开实施例的第二部分提供一种文件迁移装置,所述装置应用于分布式存储系统,所述分布式存储系统包括多个存储节点,每一所述存储节点用于存储区块链账本数据,所述装置包括:
33.判断模块,用于针对任一所述存储节点,在所述存储节点上存储的总账本数据量大于所述多个存储节点的总账本数据量均值的情况下,根据所述存储节点的磁盘剩余内存、磁盘占用率、所述总账本数据量、以及热点数据占比率中的至少一种信息判断是否对所述存储节点上存储的至少部分账本数据进行文件迁移;
34.执行模块,用于在确定对所述存储节点上存储的至少部分账本数据进行文件迁移
的情况下,对所述存储节点进行文件迁移处理。
35.可选地,所述执行模块包括:
36.第一计算子模块,用于将所述存储节点确定为待迁移存储节点,并根据所述待迁移存储节点上存储的所述总账本数据量、所述多个存储节点的所述总账本数据量均值、以及预设影响因子计算所述待迁移存储节点上待迁移账本数据的数据总量;
37.第一确定子模块,用于根据所述数据总量以及单个账本数据的数据量确定所述待迁移账本数据的个数;
38.第二确定子模块,用于从所述待迁移存储节点中确定对应所述个数的所述待迁移账本数据;
39.迁移子模块,用于针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点,并将所述待迁移账本数据存储到所述目标迁移存储节点。
40.可选地,所述第二确定子模块包括:
41.获取子模块,用于获取所述待迁移存储节点上各所述账本数据的被查询次数;
42.第二计算子模块,用于根据所述待迁移存储节点上各所述账本数据的被查询次数,计算平均查询次数;
43.第三确定子模块,用于针对所述待迁移存储节点上的每一所述账本数据,在确定所述账本数据对应的被查询次数少于所述平均查询次数的情况下,将所述账本数据确定为候选待迁移账本数据,以得到候选待迁移账本数据池;
44.第一选择子模块,用于从所述候选待迁移账本数据池中随机选择对应所述个数的所述待迁移账本数据。
45.可选地,所述迁移子模块包括:
46.第四确定子模块,用于确定除所述待迁移存储节点之外的第一候选存储节点池;
47.第五确定子模块,用于确定存储有所述待迁移账本数据的主本文件或副本文件的抵触存储节点;
48.第一排除子模块,用于从所述第一候选存储节点池中排除所述抵触存储节点,得到第二候选存储节点池;
49.第二选择子模块,用于从所述第二候选存储节点池中选择符合预设条件的所述目标迁移存储节点。
50.可选地,所述迁移子模块包括:
51.第六确定子模块,用于确定除所述待迁移存储节点之外的第一候选存储节点池;
52.第七确定子模块,用于确定存储有所述待迁移账本数据的主本文件或副本文件的抵触存储节点;
53.第二排除子模块,用于从所述第一候选存储节点池中排除所述抵触存储节点,得到第二候选存储节点池;
54.第三排除子模块,从所述第二候选存储节点池中排除其他待迁移存储节点,得到第三候选存储节点池;
55.第三选择子模块,用于从所述第三候选存储节点池中选择符合预设条件的所述目标迁移存储节点。
56.可选地,所述预设条件包括磁盘剩余内存大于预设内存、磁盘占用率小于预设占用率、热点数据占比率小于预设占比率、响应时长小于预设时长中的至少一者。
57.可选地,所述判断模块包括:
58.输入子模块,用于将所述磁盘剩余内存、所述磁盘占用率、所述总账本数据量、以及所述热点数据占比率输入训练完成的支持向量机,得到所述支持向量机输出的表征是否进行文件迁移处理的结果。
59.本公开实施例的第三部分提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一部分中任一项所述方法的步骤。
60.本公开实施例的第四部分提供一种电子设备,包括:
61.存储器,其上存储有计算机程序;
62.处理器,用于执行所述存储器中的所述计算机程序,以实现第一部分中任一项所述方法的步骤。
63.采用上述技术方案,至少能够达到如下的有益技术效果:
64.针对用于存储区块链账本数据的分布式存储系统中的任一存储节点,在该存储节点上存储的总账本数据量大于所有存储节点的总账本数据量均值的情况下,说明该存储节点上的数据存储量与其他存储节点的数据存储量不均衡,进而说明该存储节点可能与其他存储节点负载不均衡。根据该存储节点的磁盘剩余内存、磁盘占用率、总账本数据量、以及热点数据占比率中的至少一种信息判断是否对该存储节点上存储的至少部分账本数据进行文件迁移。在确定对该存储节点上存储的至少部分账本数据进行文件迁移的情况下,对该存储节点进行文件迁移处理。通过对该存储节点进行文件迁移处理,可以降低该存储节点的总账本数据量,以及降低访问该存储节点上存储的账本数据所造成的负载。也就是说,针对分布式存储系统中的每一存储节点采用本公开的上述方法,不仅可以使各存储节点的数据存储量更加平衡,还可以使各存储节点的负载更加均衡。
65.本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
66.附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
67.图1是根据本公开一示例性实施例示出的一种文件迁移方法的流程图。
68.图2是根据本公开一示例性实施例示出的一种区块链账本数据存储系统的框图。
69.图3是根据本公开一示例性实施例示出的一种区块链以及区块链账本数据存储系统的框图。
70.图4是根据本公开一示例性实施例示出的一种文件迁移装置的框图。
71.图5是根据本公开一示例性实施例示出的一种电子设备的框图。
具体实施方式
72.以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
73.图1是根据本公开一示例性实施例示出的一种文件迁移方法的流程图。该文件迁
移方法应用于分布式存储系统,分布式存储系统包括多个存储节点,每一存储节点用于存储区块链账本数据。如图1所示,该文件迁移方法包括以下步骤:
74.s11、针对任一所述存储节点,在所述存储节点上存储的总账本数据量大于所述多个存储节点的总账本数据量均值的情况下,根据所述存储节点的磁盘剩余内存、磁盘占用率、所述总账本数据量、以及热点数据占比率中的至少一种信息判断是否对所述存储节点上存储的至少部分账本数据进行文件迁移。
75.一般情况下,在存储节点上存储的总账本数据量大于根据所有存储节点的总账本数据量计算的总账本数据量均值的情况下,说明该存储节点上存储的数据量与分布式存储系统中的一些存储节点存储的数据量不均衡。在该存储节点上存储的数据量与分布式存储系统中的一些存储节点存储的数据量不均衡的情况下,访问该存储节点上存储的账本数据的负载与访问其他存储节点上存储的账本数据的负载也可能不均衡。当然,在该存储节点上存储的数据量与分布式存储系统中的一些存储节点存储的数据量不均衡的情况下,访问该存储节点上存储的账本数据的负载与访问其他存储节点上存储的账本数据的负载也可能是均衡的,因为各账本数据被访问、查询的次数是可以不一样的,所以因访问各账本数据而对存储节点造成的负载可以是不一样的。
76.因此,可以针对任一存储节点,在存储节点上存储的总账本数据量大于多个存储节点的总账本数据量均值的情况下,进一步根据存储节点的磁盘剩余内存、磁盘占用率、总账本数据量、以及热点数据占比率中的至少一种信息判断是否需要对存储节点上存储的至少部分账本数据进行文件迁移。
77.s12、在确定对所述存储节点上存储的至少部分账本数据进行文件迁移的情况下,对所述存储节点进行文件迁移处理。
78.采用上述文件迁移方法,针对用于存储区块链账本数据的分布式存储系统中的任一存储节点,在该存储节点上存储的总账本数据量大于所有存储节点的总账本数据量均值的情况下,说明该存储节点上的数据存储量与其他存储节点的数据存储量不均衡。根据该存储节点的磁盘剩余内存、磁盘占用率、总账本数据量、以及热点数据占比率中的至少一种信息判断是否对该存储节点上存储的至少部分账本数据进行文件迁移。在确定对该存储节点上存储的至少部分账本数据进行文件迁移的情况下,对该存储节点进行文件迁移处理。通过对该存储节点进行文件迁移处理,可以降低该存储节点的总账本数据量,以及降低访问该存储节点上存储的账本数据所造成的负载。也就是说,针对分布式存储系统中的每一存储节点采用本公开的上述方法,不仅可以使各存储节点的数据存储量更加平衡,还可以使各存储节点的负载更加均衡。
79.由于本公开的文件迁移方法可以应用于分布式存储系统,而分布式存储系统可以是图2所示的区块链账本数据存储系统(如图2所示,该区块链账本数据存储系统是一种分布式存储系统)。所以本公开的文件迁移方法可以应用于图2所示的区块链账本数据存储系统。更详细地,本公开的文件迁移方法具体可以应用于图2中的账本数据存储服务模块120。为了使本领域普通技术人员更加容易理解本公开的文件迁移方法。下面先对图2所示的分布式存储系统进行介绍。
80.图2是根据本公开一示例性实施例示出的一种区块链账本数据存储系统的框图,如图2所示,所述系统100包括账本访问服务模块110、账本数据存储服务模块120、以及存储
节点集群130;
81.所述账本访问服务模块110用于,响应于接收到区块链节点发起的账本数据存储请求,存储待存储账本数据的账本元信息,并将所述待存储账本数据以及账本数据标识发送至所述账本数据存储服务模块120,所述账本数据存储请求中携带所述待存储账本数据以及所述账本元信息,所述账本元信息包括所述账本数据标识,所述待存储账本数据是所述区块链节点中的第一区块对应的账本数据,所述账本元信息还包括用于表征所述第一区块与第二区块之间的链式关系的数据,所述第二区块是所述区块链节点中所述第一区块的上一区块;
82.所述账本数据存储服务模块120用于,响应于接收到所述待存储账本数据以及所述账本数据标识,根据预设账本写入策略以及所述待存储账本数据生成账本写入请求,并将所述账本写入请求发送至所述存储节点集群130中的目标存储主节点;
83.所述目标存储主节点用于,根据所述账本写入请求存储所述待存储账本数据,并在存储所述待存储账本数据之后向所述账本数据存储服务模块120反馈存储所述待存储账本数据的第一物理地址,以使所述账本数据存储服务模块存储所述账本数据标识与所述第一物理地址之间的映射关系。
84.基于图3示出的区块链节点进行解释,区块链节点中存储有区块链,区块链中的一个区块对应一个区块链账本文件,一个区块链账本文件包括区块数据(即是指区块头和区块体中的数据)以及链下存储的相应的账本数据。
85.在本公开实施例中,一个区块链节点对应一个区块链账本数据存储系统100,该区块链账本数据存储系统100用于实现在链下存储该区块链节点上的所有区块对应的账本数据。其中,账本数据具体用于记录具体的账本内容(例如交易明细)。
86.当区块链节点需要对新产生的待存储账本数据进行存储时,可向账本访问服务模块110发起账本数据存储请求,该账本数据存储请求中包括待存储账本数据以及账本元信息。
87.账本访问服务模块110响应于接收到区块链节点发起的账本数据存储请求,可存储账本数据存储请求中携带的账本元信息。账本元信息可包括账本数据标识,例如账本数据标识为图3中所示的数据标识id。
88.在一些实施方式中,账本元信息还可以包括用于表征第一区块与第二区块之间的链式关系的数据。例如,第一区块的账本数据哈希值和第二区块的账本数据哈希值;又例如,第一区块的账本id和第二区块的账本id;又例如,第一区块的区块哈希值和第二区块的区块哈希值,区块哈希值根据整个区块(即区块头和区块体)中的数据进行哈希计算得到。
89.在一些实施方式中,账本元信息还可以包括以下任意一种或多种信息:时间戳、账本通道名称、账本数据名称、账本数据量等。应当解释的是,通道(channel)是指,在企业级联盟链场景中,有时需要一种保密的交易机制,比如说几个参与(区块链)节点希望做的交易不向未参与节点公开,那么这几个参与节点形成一个隔离通道,该通道对应一个大账本,该大账本包括每一次保密交易生成的账本文件,每一个账本文件的账本数据中详细记录了该次保密交易的内容。
90.账本访问服务模块110存储待存储账本数据的账本元信息的同时或之后,可将待存储账本数据以及账本数据标识发送至账本数据存储服务模块120。
91.账本数据存储服务模块120响应于接收到待存储账本数据以及账本数据标识,根据预设账本写入策略以及待存储账本数据生成账本写入请求,并将账本写入请求发送至存储节点集群130中的目标存储主节点。其中,目标存储主节点是账本数据存储服务模块120基于预设账本写入策略而确定的。
92.目标存储主节点响应于接收到账本写入请求,根据账本写入请求存储待存储账本数据,并在成功存储待存储账本数据之后向账本数据存储服务模块120反馈存储待存储账本数据的第一物理地址。其中,第一物理地址包括以下一种或多种信息:目标存储主节点的(主机)名称、存储待存储账本数据的文件存储地址以及偏移量等。此处需说明的是,账本数据存储在任意存储器上的物理地址均由段地址和偏移地址两部分组成,本公开中文件存储地址表征的是段地址,偏移量表征的是偏移地址。
93.在一些实施方式中,第一物理地址还可以包括存储账本数据的具体起始地址和结束地址。
94.账本数据存储服务模块120接收到目标存储主节点反馈的第一物理地址之后,将待存储账本数据的账本数据标识与第一物理地址进行关联存储。
95.采用上述方式,在存储待存储账本数据的过程中,通过存储表征第一区块与第二区块之间的链式关系的数据,可以在逻辑上保障区块链账本数据的链式存储结构。通过存储账本数据标识与第一物理地址之间的映射关系,可在保障区块链账本数据的链式存储结构的基础上,实现将待存储账本数据存储在存储节点集群中的任一存储节点上的目的。因此,采用本公开的这种通过存储节点集群存储区块链账本数据的分布式存储方法,既可以保障区块链账本数据链式存储结构,又能够应对区块链账本数据膨胀的问题,达到存储海量的区块链账本数据的目的。而且还因可在存储节点集群中动态新增存储节点而使得存储系统具备动态扩容的能力。
96.在一些实施方式中,所述用于表征所述第一区块与第二区块之间的链式关系的数据,包括:所述第一区块的哈希值和所述第二区块的哈希值。
97.若用于表征第一区块与第二区块之间的链式关系的数据为第一区块的哈希值(即图3中所示的账本数据hash)和第二区块的哈希值。那么在账本数据读取场景下,可在从存储节点集群中读取到第一区块对应的账本数据的情况下,根据第一区块的哈希值对读取到的账本数据的正确/完整性进行校验。如此,可在保障区块链账本数据的链式存储结构的基础上,还可以保障存储节点集群中存储的账本数据不会被篡改,提升了分布式账本数据存储的安全性。
98.在一些实施方式中,所述账本数据存储服务模块120还用于根据所述待存储账本数据的所述账本数据标识计算哈希值,并根据所述哈希值从所述存储节点集群中确定所述目标存储主节点。
99.在具体实施时,可以根据哈希算法对账本数据标识进行计算得到相应地哈希值。再用哈希值除以存储节点集群中的存储节点总数,并取余数值,该余数值对应的存储节点即为目标存储主节点。示例地,假设根据待存储账本数据的账本数据标识计算得到的哈希值为15,存储节点集群包括4个存储节点,且各存储节点的编号分别为0、1、2、3。那么哈希值15除以4取余数为3。如此可将编号为3的存储节点确定为目标存储主节点。采用这种方式,由于根据哈希值除以存储节点总数s后所得到的余数值不大于存储节点总数s,所以余数值
的取值范围为[0,s-1],并且,在从0开始对存储节点集群中的各存储节点进行编码的情况下,存储节点的编码范围也为[0,s-1]。因此,这种方式能够针对任意哈希值(即无穷种哈希值中的任一种)计算并确定唯一一个对应的存储节点编号,而不用限制该任意哈希值的取值范围,即不用限制账本数据标识的取值范围,相应地,即不限制账本数据的数量。
[0100]
此外,采用这种方式,还能将多个待存储账本数据较为均匀的分配到各个存储节点中进行存储,以使各存储节点负载均衡。例如,假设有三个存储节点0、1、2,三个待存储账本数据a、b、c,且该三个待存储账本数据对应的哈希值依次为1、2、3。那么,采用上述确定目标存储主节点的方式,可将存储节点1作为待存储账本数据a的目标存储主节点。将存储节点2作为待存储账本数据b的目标存储主节点。将存储节点0作为待存储账本数据c的目标存储主节点。
[0101]
此处需要解释的是,哈希算法(又称摘要算法digest),作用是对任意一组输入数据进行计算,得到一个固定长度的输出值。
[0102]
在一些实施方式中,所述预设账本写入策略包括表征文件副本个数的预设数量,所述账本写入请求中包括目标存储从节点列表;
[0103]
所述账本数据存储服务模块120还用于,从所述存储节点集群130中的除所述目标存储主节点之外的其他存储节点中确定磁盘占用率最低的所述预设数量的目标存储从节点,以得到所述目标存储从节点列表;
[0104]
所述目标存储主节点还用于,基于所述目标存储从节点列表向每一所述目标存储从节点发送副本文件存储请求,以使各所述目标存储从节点存储所述待存储账本数据的副本文件。
[0105]
举例来说,假设预设数量的值为2,并假设存储节点集群为由存储节点a、存储节点b、存储节点c、存储节点d、存储节点e、存储节点f组成的集群。若账本数据存储服务模块120将存储节点b确定为目标存储主节点。那么,除目标存储主节点b之外的其他存储节点包括存储节点a、存储节点c、存储节点d、存储节点e、存储节点f。
[0106]
若存储节点a、存储节点c、存储节点d、存储节点e、存储节点f的磁盘占用率依次降低,那么从存储节点a、存储节点c、存储节点d、存储节点e、存储节点f中确定磁盘占用率最低的2个目标存储从节点分别为存储节点e和存储节点f。即目标存储从节点列表包括存储节点e和存储节点f。
[0107]
目标存储主节点(如存储节点b)向每一目标存储从节点(如存储节点e、存储节点f)发送副本文件存储请求,副本文件存储请求包括待存储账本数据的副本文件。目标存储从节点(存储节点e、存储节点f)接收副本文件存储请求,并存储待存储账本数据的副本文件。其中,需说明的是副本文件是指对源文件进行复制粘贴后所得到的文本文件。
[0108]
采用这种账本数据分布式备份存储的方式,可保障账本数据的数据安全,避免账本数据丢失。例如,可以避免目标存储主节点因故障或掉线而导致的无法读取到目标存储主节点中存储的账本数据的问题。
[0109]
在一些实施方式中,账本写入请求中还可以包括主本文件与副本文件的写入方式,写入方式为可以为同步写入或异步写入方式中的一种。相应地,副本文件存储请求中也可以包括主本文件与副本文件的写入方式。写入方式可在预设账本写入策略中(基于不同场景)预先设置。值得说明的是,主本文件是指存储在主节点的账本数据,副本文件为存储
在从节点的账本数据。
[0110]
在主本文件与副本文件的写入方式为同步写入方式的情况下,需要在目标存储主节点和目标存储从节点均完成数据写入后,向区块链节点反馈存储成功的状态信息。如此可实现强事务一致性。其中,强事务一致性是指多个事务(如主本文件存储事务和副本文件存储事务)必须是使数据库从一个一致性状态(如未存储状态)变到另一个一致性状态(如存储成功状态)。
[0111]
在主本文件与副本文件的写入方式为异步写入方式的情况下,在目标存储主节点成功写入数据后,即可向区块链节点反馈存储成功的状态信息,无需等待目标存储从节点完成存储副本文件的过程。
[0112]
在一些实施方式中,所述账本数据存储服务模块120还用于,监控各所述存储节点的磁盘占用率,以基于各所述存储节点之间的磁盘占用率的大小关系从所述存储节点集群中确定所述目标存储从节点列表。
[0113]
在一些实施方式中,账本数据存储服务模块120可以周期性向各个存储节点发送“心跳”信号,“心跳”信号用于询问存储节点当前的磁盘占用率。存储节点接收到“心跳”信号后,可向账本数据存储服务模块120反馈自身当前的磁盘占用率。如此可实现账本数据存储服务模块120监控各存储节点的磁盘占用率的目的。
[0114]
在一些实施方式中,所述目标存储从节点用于,在存储所述待存储账本数据的副本文件之后,向所述目标存储主节点反馈存储所述待存储账本数据的副本文件的第二物理地址,以使所述目标存储主节点将所述第二物理地址反馈给所述账本数据存储服务模块120;所述账本数据存储服务模块还120用于,存储所述账本数据标识与所述第二物理地址之间的映射关系。
[0115]
基于前述实施例中存储节点b为目标存储主节点、存储节点e为目标存储从节点来举例说明,存储节点e存储待存储账本数据的副本文件之后,可将存储待存储账本数据的副本文件的第二物理地址反馈给存储节点b,第二物理地址可以包括存储节点e的主机名称、存储副本文件的文件存储地址以及偏移量等。存储节点b接收到存储节点e反馈的第二物理地址之后,将第二物理地址反馈给账本数据存储服务模块120。以便于账本数据存储服务模块120存储账本数据标识与第二物理地址之间的映射关系。
[0116]
如此,账本数据存储服务模块120既可以存储待存储账本数据的账本数据标识与第一物理地址的映射关系,又可以存储该账本数据标识和第二物理地址的映射关系。通过存储的映射关系,可在账本数据查询场景下,基于账本数据标识查询到与该账本数据标识对应的第一物理地址和/或第二物理地址,从而根据第一物理地址或第二物理地址均可以查询与该账本数据标识对应的账本数据。
[0117]
在一些实施方式中,所述账本访问服务模块110还用于,接收所述区块链节点发起的用于查询目标账本数据的第一账本数据查询请求,在根据所述第一账本数据查询请求中携带的目标账本数据标识确定所述存储节点集群中存储有所述目标账本数据的情况下,将所述第一账本数据查询请求发送给所述账本数据存储服务模块;所述账本数据存储服务模块120还用于,响应于接收到所述第一账本数据查询请求,根据所述目标账本数据标识获取对应的目标物理地址,以基于所述目标物理地址获取到所述存储节点集群中存储的所述目标账本数据,并将所述目标账本数据反馈给所述区块链节点。
[0118]
举例来说,在账本数据查询/读取场景下,区块链节点可向账本访问服务模块110发起用于查询/读取目标账本数据的第一账本数据查询请求,该第一账本数据查询请求中可携带目标账本数据标识。
[0119]
账本访问服务模块110响应于接收到区块链节点发起的第一账本数据查询请求,根据第一账本数据查询请求中携带的目标账本数据标识、以及所有已存储账本数据的账本元信息确定存储节点集群中是否存储有目标账本数据。并在确定存储节点集群中存储有目标账本数据的情况下,将第一账本数据查询请求发送给账本数据存储服务模块120。在确定存储节点集群中未存储有目标账本数据的情况下,向区块链节点反馈没有对应账本数据的结果。
[0120]
账本数据存储服务模块120在接收到第一账本数据查询请求的情况下,根据第一账本数据查询请求中携带的目标账本数据标识、各账本数据标识与第一物理地址和第二物理地址之间的映射关系获取对应的目标物理地址,以从目标物理地址对应的存储节点中获取到目标账本数据,从而将目标账本数据通过账本访问服务模块110反馈给区块链节点。
[0121]
采用这种方式,在读取账本数据的场景下,根据目标账本数据标识先确定存储节点集群中是否存储有目标账本数据。若不存在,则直接向区块链节点反馈不存在相应账本数据的信息。若存在,则进一步从账本数据存储服务模块120中获取存储该目标账本数据的目标物理地址,并基于目标物理地址读取到目标账本数据。
[0122]
由于账本数据存储服务模块120中可以存储每一账本数据的账本数据标识与第一物理地址和第二物理地址的映射关系。因此,在读取账本数据的场景中,从账本数据存储服务模块120获取到的目标物理地址可能为存储该账本数据的存储主节点所对应的第一物理地址,也可能为存储该账本数据的副本文件的存储从节点所对应的第二物理地址。
[0123]
因此,在一些实施方式中,所述目标物理地址包括多个物理地址,所述账本数据存储服务模块120还用于根据预设账本读取策略从所述多个物理地址中确定目标查询物理地址,并向所述目标查询物理地址对应的目标查询存储节点发送第二账本数据查询请求,以从所述目标查询存储节点查询到所述目标账本数据。
[0124]
其中,预设账本读取策略可以包括多个不同优先级的用于筛选查询地址的选择条件。根据优先级从高到低方向,依次对照相应的选择条件进行选择,以从多个目标物理地址中筛选得到一个目标查询物理地址。
[0125]
例如,假设存储目标账本数据的多个目标物理地址分别对应存储节点b、存储节点e和存储节点f。若第一优先级的选择条件为cpu占用率最低。那么在存储节点b、存储节点e和存储节点f的cpu占用率依次降低的情况下,可确定存储节点f所对应的目标物理地址为目标查询物理地址。
[0126]
而在存储节点b、存储节点e和存储节点f的cpu占用率均相同的情况下,需进一步根据第二优先级的选择条件进行筛选。若第二优先级的选择条件为磁盘io占用率(可理解为磁盘的繁忙程度)最低。那么在存储节点b、存储节点e和存储节点f的磁盘io占用率依次降低的情况下,可将存储节点f对应的目标物理地址确定为目标查询物理地址。
[0127]
而在存储节点e和存储节点f的磁盘io占用率相同且最小的情况下,需再进一步根据第三优先级的选择条件进行筛选。若第三优先级的选择条件为内存剩余空间容量最大,那么在存储节点e和存储节点f的内存剩余空间容量依次降低的情况下,可将存储节点e对
应的目标物理地址确定为目标查询物理地址。
[0128]
应当说明的是,用于筛选查询地址的选择条件的数量、优先级高低、条件内容可根据实际需求进行设置,而不应限制于上述举例。
[0129]
下面结合图2所示的分布式存储系统对文件迁移方法进行详细的实施例说明。在实施例中,是以将本公开文件迁移方法具体应用于图2中的账本数据存储服务模块120为例进行说明的。
[0130]
可选地,所述根据所述存储节点的磁盘剩余内存、磁盘占用率、所述总账本数据量、以及热点数据占比率中的至少一种信息判断是否对所述存储节点上存储的至少部分账本数据进行文件迁移,包括:将所述磁盘剩余内存、所述磁盘占用率、所述总账本数据量、以及所述热点数据占比率中的至少一种信息输入训练完成的支持向量机,得到所述支持向量机输出的表征是否进行文件迁移处理的结果。
[0131]
在一些实施方式中,所述账本数据存储服务模块120还用于:
[0132]
监控各所述存储节点的磁盘剩余容量(即磁盘剩余内存)、总账本数据量、以及热点数据占比率;针对任一所述存储节点,根据所述存储节点的所述磁盘剩余容量、所述磁盘占用率、所述总账本数据量、以及所述热点数据占比率确定是否对所述存储节点上存储的至少部分账本数据进行文件迁移。
[0133]
值得解释的是,任一存储节点的总账本数据量是指该存储节点已经存储的所有账本数据的数据总量。
[0134]
热点数据(redis)是指被引用(即访问/读取/查询)的次数大于预设次数的数据。
[0135]
热点数据占比率是指热点数据的数据总量与总账本数据量的比值。
[0136]
在一些实施方式中,可通过如下方式确定各个账本数据是否为热点账本数据:
[0137]
为每一账本数据设置热点变量参数,若该账本数据在前一单位时长(如60秒)内被引用,则该账本数据的热点变量参数增大第一预设值(如第一预设值为10、5、或者1等),若该账本数据在前一单位时长内未被引用,则该账本数据的热点变量参数减小第二预设值(如第二预设值为10、5、或者1等)。第一预设值和第二预设值可以相同,亦可以不相同。在该账本数据的热点变量参数大于预设阈值(如预设阈值为50)的情况下,该账本数据可被确定为热点数据。
[0138]
在一些实施方式中,所述根据所述存储节点的所述磁盘剩余容量、所述磁盘占用率、所述总账本数据量、以及所述热点数据占比率确定是否对所述存储节点上存储的至少部分账本数据进行文件迁移,包括:
[0139]
将所述磁盘剩余容量、所述磁盘占用率、所述总账本数据量、以及所述热点数据占比率输入训练完成的支持向量机,得到所述支持向量机输出的表征是否进行文件迁移的结果。
[0140]
其中,支持向量机(support vector machine,svm)是一种按监督学习方式训练得到的分类器。训练样本包括输入样本和输出样本,输入样本包括磁盘剩余容量样本、磁盘占用率样本、总账本数据量样本、以及热点数据占比率样本。输出样本为与输入样本对应的表征是否进行文件迁移的样本。
[0141]
为了便于本领域普通技术人员更加容易理解支持向量机的作用,下面对支持向量机的原理进行简单解释:
[0142]
由于支持向量机是对数据进行二元分类的广义线性分类器,所以其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。因此,首先可定义决策边界0=w
t
x+b=w1x1+w2x2+w3x3+w4x4+b,其中,x1表征磁盘剩余容量,x2表征磁盘占用率、x3表征总账本数据量、x4表征热点数据占比率,w1、w2、w3、w4、b为训练支持向量机的过程中需要求解的参数。训练支持向量机的目的即是为了求得最优的一组w1、w2、w3、w4、b。
[0143]
值得解释的是,决策边界可理解为空间问题中的区域,用于将支持向量机的输出标签划分为两个集合,一个集合表征进行文件迁移,另一个集合表征不进行文件迁移。即表征进行文件迁移时:w
t
x+b》0,yi》0。表征不进行文件迁移时w
t
x+b《0,yi《0。yi为输出标签。进一步地,将w
t
x+b》0和yi》0相乘,或者将w
t
x+b《0和yi《0相乘,均可得到y(w
t
x+b)》0。
[0144]
为了找到输出标签到决策边界的最远垂直距离,即为了求解变量x=(x1、x2、x3、x4)到决策边界的最远距离其中,可基于导数法求最大值原理,将对求最大值问题转换为对求最小导数值的问题即:
[0145][0146]
进一步的,采用拉格朗日乘子法(又称为拉格朗日乘数法)求该公式的最小值,构造拉格朗日公式如下:
[0147][0148]
其中,μi是拉格朗日乘子,用于将约束条件函数与原函数联系到一起。值得解释的是,拉格朗日乘子法是一种求原函数f(x1,x2,...)在约束条件函数g(x1,x2,...)=0的约束下的极值的方法。
[0149]
进一步地,使用高斯核函数替换(xixj),即δ表征标准差,在本公开的实施例中δ=2,n=4。
[0150]
将带入公式得到
[0151]
进一步地,采用smo算法(sequential minmal optimization,一种序列最小化算法)求μ1、μ2、μ3、μ4的最优解如下:
[0152][0153]
[0154][0155][0156]
带入|yi|=1、x1、x2、x3、x4的值、μi≥0后,计算出μ1、μ2、μ3、μ4、y1、y2、y3、y4的值。再使用kkt条件(karush

kuhn

tucker conditions,一种解决最优化问题的方法,与拉格朗日乘子相关),确定各需要求解的参数为:
[0157]
w1=μ1x1y1,
[0158]
w2=μ2x2y2,
[0159]
w3=μ3x3y3,
[0160]
w4=μ4x4y4,
[0161][0162]
在求得最优的一组w1、w2、w3、w4之后,得到的训练完成的支持向量机的函数可以表征为:
[0163][0164]
其中,-1可以表征不进行文件迁移,1可以表征进行文件迁移。
[0165]
此处需说明的是,在一些场景中,存储节点集群中可能存在某个存储节点的负载小、而另一个存储节点的负载大的现象,例如某个存储节点中的账本数据被频繁引用,而另一个存储节点中的账本数据被引用的次数较少的现象,这种现象表征该两个存储节点的负载不均衡。因此,为了使存储节点集群中各个存储节点之间的负载相对均衡,需平衡各个存储节点的负载。
[0166]
而在平衡各个存储节点的负载之前,需判断存储节点的负载高低。采用本公开的上述方式,针对任一存储节点,根据该存储节点的磁盘剩余容量、磁盘占用率、总账本数据量、以及热点数据占比率可以判断该存储节点的负载高低。在确定该存储节点的负载大的情况下,可对该存储节点进行文件迁移处理,以降低该存储节点的负载。由此,采用本公开的上述方式能够使存储节点集群中的各个存储节点之间更加的负载均衡。
[0167]
可选地,所述对所述存储节点进行文件迁移处理,包括:将所述存储节点确定为待迁移存储节点,并根据所述待迁移存储节点上存储的所述总账本数据量、所述多个存储节点的所述总账本数据量均值、以及预设影响因子计算所述待迁移存储节点上待迁移账本数据的数据总量;根据所述数据总量以及单个账本数据的数据量确定所述待迁移账本数据的个数;从所述待迁移存储节点中确定对应所述个数的所述待迁移账本数据;针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点,并将所述待迁移账本数据存储到所述目标迁移存储节点。
[0168]
示例地,所述账本数据存储服务模块120还用于执行以下步骤:
[0169]
在确定对所述存储节点上存储的至少部分账本数据进行文件迁移的情况下,将所
述存储节点确定为待迁移存储节点,并计算所述待迁移存储节点上待迁移账本数据的数据总量;根据所述数据总量以及单个账本数据的数据量确定所述待迁移账本数据的个数;从所述待迁移存储节点中确定对应所述个数的所述待迁移账本数据,以对所述待迁移账本数据进行文件迁移。
[0170]
一种实施方式,所述账本数据存储服务模块120用于通过如下公式计算所述待迁移存储节点上待迁移账本数据的数据总量:
[0171][0172]
其中,β表征所述待迁移账本数据的数据总量,γ表征所述待迁移存储节点上的总账本数据量,n表征所述存储节点集群中的存储节点总数,γi表征第i个存储节点的总账本数据量,μ表征影响因子。
[0173]
可选地,μ=1.68。
[0174]
示例地,假设存储节点集群为由存储节点a、存储节点b、以及存储节点c组成的集群。存储节点a存储有40gb的账本数据,存储节点b存储有20gb的账本数据,存储节点c存储有120gb的账本数据。在确定存储节点c为待迁移存储节点的情况下,通过公式计算得到待迁移账本数据的数据总量为19.2gb(即19.2
×
1024
×
1024
×
1024字节)。
[0175]
在计算得到待迁移存储节点上待迁移账本数据的数据总量之后,可以根据数据总量以及单个账本数据的数据量确定待迁移账本数据的个数。应当说明的是,单个账本数据的数据量是预先设定的,可以为64m、128m等。
[0176]
举例来说,假设单个账本数据的数据量为64m(即64
×
1024
×
1024字节),那么可通过如下公式计算得到待迁移账本数据的个数k:
[0177][0178]
应当说明的是,在一些实施方式中,还可以根据数据总量、单个账本数据的数据量、以及控制参数确定待迁移账本数据的个数,控制参数为正整数。例如,假设单个账本数据的数据量为64m(即64
×
1024
×
1024字节)、控制参数为2,那么可通过如下公式计算得到待迁移账本数据的个数k:
[0179]
或者,[]为取整运算符。
[0180]
在确定待迁移账本数据的个数之后,可从待迁移存储节点中确定对应个数的待迁移账本数据,并对待迁移账本数据进行文件迁移。
[0181]
在一些实施方式中,从待迁移存储节点中确定对应个数的待迁移账本数据的方式可以包括:从待迁移存储节点中随机确定对应个数的待迁移账本数据。
[0182]
可选地,所述从所述待迁移存储节点中确定对应所述个数的所述待迁移账本数据,包括:获取所述待迁移存储节点上各所述账本数据的被查询次数;根据所述待迁移存储节点上各所述账本数据的被查询次数,计算平均查询次数;针对所述待迁移存储节点上的每一所述账本数据,在确定所述账本数据对应的被查询次数少于所述平均查询次数的情况下,将所述账本数据确定为候选待迁移账本数据,以得到候选待迁移账本数据池;从所述候
选待迁移账本数据池中随机选择对应所述个数的所述待迁移账本数据。
[0183]
例如,在一些实施方式中,所述账本数据存储服务模块120从所述待迁移存储节点中确定对应所述个数的所述待迁移账本数据,可以包括以下步骤:
[0184]
获取所述待迁移存储节点上各所述账本数据的被查询次数;根据所述待迁移存储节点上各所述账本数据的被查询次数,计算平均查询次数;针对所述待迁移存储节点上的每一所述账本数据,在确定所述账本数据对应的被查询次数少于所述平均查询次数的情况下,将所述账本数据确定为候选待迁移账本数据,以得到候选待迁移账本数据池;从所述候选待迁移账本数据池中随机选择对应所述个数的所述待迁移账本数据。
[0185]
示例地,假设待迁移存储节点上有账本数据a、账本数据b、账本数据c、账本数据d。账本数据a的历史被查询次数为10次,账本数据b的历史被查询次数为15次,账本数据c的历史被查询次数为20次,账本数据d的历史被查询次数为25次。那么平均查询次数为(10+15+20+25)/4=17.5。由于账本数据a、账本数据b的被查询次数均小于17.5,因此可将账本数据a、账本数据b确定为候选待迁移账本数据,得到候选待迁移账本数据池包括账本数据a、账本数据b。
[0186]
进一步地,在确定候选待迁移账本数据池包括账本数据a、账本数据b的情况下,可从候选待迁移账本数据池中随机选择对应个数的待迁移账本数据。示例地,假设个数为1,那么可将账本数据a或者账本数据b确定为待迁移账本数据。
[0187]
在一些实施方式中,可基于各个候选待迁移账本数据的被查询次数的大小,从候选待迁移账本数据池中选择对应个数的被查询次数最小的待迁移账本数据。示例地,假设个数为1,在候选待迁移账本数据a的被查询次数为10,且候选待迁移账本数据b的被查询次数为15的情况下,由于10小于15,所以可将候选待迁移账本数据a确定为待迁移账本数据。
[0188]
采用这种方式,将被查询次数小于平均查询次数的账本数据确定为候选待迁移账本数据,可尽量保证热点数据不被迁移,以避免热点数据在被迁移时导致的数据访问故障。例如热点数据在被迁移时存在的暂时无法访问的故障。
[0189]
可选地,所述针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点,包括:确定除所述待迁移存储节点之外的第一候选存储节点池;确定存储有所述待迁移账本数据的主本文件或副本文件的抵触存储节点;从所述第一候选存储节点池中排除所述抵触存储节点,得到第二候选存储节点池;从所述第二候选存储节点池中选择符合预设条件的所述目标迁移存储节点。
[0190]
示例地,所述账本数据存储服务模块120还用于执行以下步骤:
[0191]
针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点,并向所述目标迁移存储节点发送文件迁移请求;所述目标迁移存储节点用于,存储所述文件迁移请求中携带的所述待迁移账本数据,并将存储所述待迁移账本数据的第三物理地址反馈给所述账本数据存储服务模块,以使所述账本数据存储服务模块更新所述待迁移账本数据的第一物理地址或第二物理地址。
[0192]
示例地,假设存储节点集群为由存储节点a、存储节点b、存储节点c、存储节点d、存储节点e、存储节点f组成的集群。若账本数据存储服务模块120将存储节点b确定为待迁移存储节点。那么,除待迁移存储节点b之外的其他存储节点包括存储节点a、存储节点c、存储节点d、存储节点e、存储节点f。针对每一待迁移账本数据,可从存储节点a、存储节点c、存储
节点d、存储节点e、存储节点f中选择一个目标迁移存储节点。
[0193]
由于待迁移账本数据可能为主本文件亦可能为副本文件,因此,在对该待迁移账本数据进行文件迁移之后,需将存储该待迁移账本数据的第三物理地址反馈给账本数据存储服务模块120,以使账本数据存储服务模块120相应更新该待迁移账本数据的第一物理地址或第二物理地址。
[0194]
在一些实施方式中,所述账本数据存储服务模块120针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点的方式,可以包括以下步骤:
[0195]
根据所述待迁移账本数据的账本数据标识查询对应的目标第一物理地址和目标第二物理地址;其中,目标第一物理地址和目标第二物理地址中的一个地址对应待迁移存储节点,剩余地址对应存储节点为抵触存储节点。排除所述目标第一物理地址和目标第二物理地址对应的存储节点,得到第二候选存储节点池;从所述第二候选存储节点池中选择符合预设条件的目标迁移存储节点。
[0196]
应当说明的是,同一账本数据的主本文件和副本文件,或者同一账本数据的副本文件和副本文件不应存储在同一存储节点。若同一账本数据的主本文件和副本文件,或者同一账本数据的副本文件和副本文件存储在一个存储节点,则不仅浪费该存储节点的存储资源,还在该存储节点宕机后该账本数据的主本文件和/或副本文件无法被引用。
[0197]
针对每一待迁移账本数据,为了避免将相同账本数据(即同一账本数据的主本文件和副本文件,或者同一账本数据的副本文件和副本文件)存储在同一存储节点。可根据该待迁移账本数据的账本数据标识从账本数据存储服务模块120中存储的账本数据标识与第一物理地址、账本数据标识与第二物理地址的映射关系中查询对应的目标第一物理地址和目标第二物理地址。通过排除目标第一物理地址和目标第二物理地址对应的存储节点,可得到第二候选存储节点池。
[0198]
在确定第二候选存储节点池之后,可从第二候选存储节点池中选择符合预设条件的目标迁移存储节点。
[0199]
在一些实施方式中,所述预设条件包括磁盘剩余内存大于预设内存、磁盘占用率小于预设占用率、热点数据占比率小于预设占比率、响应时长小于预设时长中的至少一者。
[0200]
示例地,预设内存可以为10g,预设占用率可以为65%,预设占比率可以为50%,预设时长可以为5秒。针对第二候选存储节点池中的每一候选存储节点,在该候选存储节点的磁盘剩余内存大于10g、磁盘占用率小于65%、热点数据占比率小于50%、响应时间小于5秒的情况下,可将该候选存储节点确定为目标迁移存储节点。
[0201]
值得说明的是,响应时长是指存储节点接收到需求方的请求信息的时间与该存储节点将请求的目标信息反馈给需求方的时间的差值。响应时长用于评估存储节点的性能高低。
[0202]
为了避免将待迁移账本数据迁移到其他待迁移存储节点,所述针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点,包括:确定除所述待迁移存储节点之外的第一候选存储节点池;确定存储有所述待迁移账本数据的主本文件或副本文件的抵触存储节点;从所述第一候选存储节点池中排除所述抵触存储节点,得到第二候选存储节点池;从所述第二候选存储节点池中排除其他待迁移存储
节点,得到第三候选存储节点池;从所述第三候选存储节点池中选择符合预设条件的所述目标迁移存储节点。
[0203]
示例地,所述账本数据存储服务模块120针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点的方式,可以包括:
[0204]
根据所述待迁移账本数据的账本数据标识查询对应的目标第一物理地址和目标第二物理地址;
[0205]
排除所述目标第一物理地址和所述目标第二物理地址对应的存储节点,得到第二候选存储节点池;
[0206]
从所述第二候选存储节点池中排除其他待迁移存储节点,得到第三候选存储节点池;
[0207]
从所述第三候选存储节点池中选择符合预设条件的目标迁移存储节点。
[0208]
示例地,假设存储节点集群为由存储节点a、存储节点b、存储节点c、存储节点d、存储节点e、存储节点f组成的集群。若账本数据存储服务模块120将存储节点b和e确定为待迁移存储节点。在针对待迁移存储节点b上的待迁移账本数据a进行文件迁移时,根据待迁移账本数据a的账本元信息查询对应的目标第一物理地址和目标第二物理地址。假设目标第一物理地址对应存储节点b、且目标第二物理地址对应存储节点f。那么排除存储节点b和存储节点f之后,得到的第二候选存储节点池包括存储节点a、存储节点c、存储节点d、存储节点e。进一步地,从第二候选存储节点池中排除其他待迁移存储节点e,得到第三候选存储节点池包括存储节点a、存储节点c、存储节点d。进而可从存储节点a、存储节点c、存储节点d中选择符合预设条件的目标迁移存储节点来存储待迁移账本数据a。
[0209]
图4是根据本公开一示例性实施例示出的一种文件迁移装置的框图。该文件迁移装置应用于分布式存储系统,分布式存储系统包括多个存储节点,每一存储节点用于存储区块链账本数据,如图4所示,该装置400包括:
[0210]
判断模块410,用于针对任一所述存储节点,在所述存储节点上存储的总账本数据量大于所述多个存储节点的总账本数据量均值的情况下,根据所述存储节点的磁盘剩余内存、磁盘占用率、所述总账本数据量、以及热点数据占比率中的至少一种信息判断是否对所述存储节点上存储的至少部分账本数据进行文件迁移;
[0211]
执行模块420,用于在确定对所述存储节点上存储的至少部分账本数据进行文件迁移的情况下,对所述存储节点进行文件迁移处理。
[0212]
采用上述装置,针对用于存储区块链账本数据的分布式存储系统中的任一存储节点,在该存储节点上存储的总账本数据量大于所有存储节点的总账本数据量均值的情况下,说明该存储节点上的数据存储量与其他存储节点的数据存储量不均衡。根据该存储节点的磁盘剩余内存、磁盘占用率、总账本数据量、以及热点数据占比率中的至少一种信息判断是否对该存储节点上存储的至少部分账本数据进行文件迁移。在确定对该存储节点上存储的至少部分账本数据进行文件迁移的情况下,对该存储节点进行文件迁移处理。通过对该存储节点进行文件迁移处理,可以降低该存储节点的总账本数据量,以及降低访问该存储节点上存储的账本数据所造成的负载。也就是说,针对分布式存储系统中的每一存储节点采用本公开的上述方法,不仅可以使各存储节点的数据存储量更加平衡,还可以使各存储节点的负载更加均衡。
[0213]
可选地,所述执行模块420包括:
[0214]
第一计算子模块,用于将所述存储节点确定为待迁移存储节点,并根据所述待迁移存储节点上存储的所述总账本数据量、所述多个存储节点的所述总账本数据量均值、以及预设影响因子计算所述待迁移存储节点上待迁移账本数据的数据总量;
[0215]
第一确定子模块,用于根据所述数据总量以及单个账本数据的数据量确定所述待迁移账本数据的个数;
[0216]
第二确定子模块,用于从所述待迁移存储节点中确定对应所述个数的所述待迁移账本数据;
[0217]
迁移子模块,用于针对每一所述待迁移账本数据,从除所述待迁移存储节点之外的其他存储节点中选择目标迁移存储节点,并将所述待迁移账本数据存储到所述目标迁移存储节点。
[0218]
可选地,所述第二确定子模块包括:
[0219]
获取子模块,用于获取所述待迁移存储节点上各所述账本数据的被查询次数;
[0220]
第二计算子模块,用于根据所述待迁移存储节点上各所述账本数据的被查询次数,计算平均查询次数;
[0221]
第三确定子模块,用于针对所述待迁移存储节点上的每一所述账本数据,在确定所述账本数据对应的被查询次数少于所述平均查询次数的情况下,将所述账本数据确定为候选待迁移账本数据,以得到候选待迁移账本数据池;
[0222]
第一选择子模块,用于从所述候选待迁移账本数据池中随机选择对应所述个数的所述待迁移账本数据。
[0223]
可选地,所述迁移子模块包括:
[0224]
第四确定子模块,用于确定除所述待迁移存储节点之外的第一候选存储节点池;
[0225]
第五确定子模块,用于确定存储有所述待迁移账本数据的主本文件或副本文件的抵触存储节点;
[0226]
第一排除子模块,用于从所述第一候选存储节点池中排除所述抵触存储节点,得到第二候选存储节点池;
[0227]
第二选择子模块,用于从所述第二候选存储节点池中选择符合预设条件的所述目标迁移存储节点。
[0228]
可选地,所述迁移子模块包括:
[0229]
第六确定子模块,用于确定除所述待迁移存储节点之外的第一候选存储节点池;
[0230]
第七确定子模块,用于确定存储有所述待迁移账本数据的主本文件或副本文件的抵触存储节点;
[0231]
第二排除子模块,用于从所述第一候选存储节点池中排除所述抵触存储节点,得到第二候选存储节点池;
[0232]
第三排除子模块,从所述第二候选存储节点池中排除其他待迁移存储节点,得到第三候选存储节点池;
[0233]
第三选择子模块,用于从所述第三候选存储节点池中选择符合预设条件的所述目标迁移存储节点。
[0234]
可选地,所述预设条件包括磁盘剩余内存大于预设内存、磁盘占用率小于预设占
用率、热点数据占比率小于预设占比率、响应时长小于预设时长中的至少一者。
[0235]
可选地,所述判断模块410包括:
[0236]
输入子模块,用于将所述磁盘剩余内存、所述磁盘占用率、所述总账本数据量、以及所述热点数据占比率输入训练完成的支持向量机,得到所述支持向量机输出的表征是否进行文件迁移处理的结果。
[0237]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0238]
图5是根据一示例性实施例示出的一种电子设备700的框图。该电子设备可以为图2中所示的账本数据存储服务模块120。如图5所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(i/o)接口704,以及通信组件705中的一者或多者。
[0239]
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的文件迁移方法中的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,简称sram),电可擦除可编程只读存储器(electrically erasable programmable read-only memory,简称eeprom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),可编程只读存储器(programmable read-only memory,简称prom),只读存储器(read-only memory,简称rom),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(near field communication,简称nfc),2g、3g、4g、nb-iot、emtc、或其他5g等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件705可以包括:wi-fi模块,蓝牙模块,nfc模块等等。
[0240]
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(application specific integrated circuit,简称asic)、数字信号处理器(digital signal processor,简称dsp)、数字信号处理设备(digital signal processing device,简称dspd)、可编程逻辑器件(programmable logic device,简称pld)、现场可编程门阵列(field programmable gate array,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的文件迁移方法。
[0241]
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的文件迁移方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行
以完成上述的文件迁移方法。
[0242]
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的文件迁移方法的代码部分。
[0243]
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
[0244]
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
[0245]
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1