一种分布式存储系统及其副本选择方法

文档序号:31799081发布日期:2022-10-14 18:18阅读:52来源:国知局
一种分布式存储系统及其副本选择方法

1.本发明属于分布式存储技术领域,更具体地,涉及一种分布式存储系统及其副本选择方法。


背景技术:

2.随着手机、可穿戴设备和各种传感器的普及,物联网设备的数量迅速增加。根据爱立信2021年的移动报告显示,全球2021年建立的物联网连接有146亿个,预计到2027年这一数字将增加到302亿个。这些设备被用来支持各种应用,包括道路安全服务、实时视频分析、游戏、增强现实和虚拟现实等应用。然而由于计算、存储和能量的限制,这些应用程序只能收集数据,然后将其转移到具有强大处理能力的云数据中心进行处理。在云计算的支持下,用户可以通过使用功能不太强大的设备来运行这些应用。
3.但是在云计算模式中,数据经过多次跳转从边缘发送到云端,将导致请求处理产生巨大的延迟。并且如此多的物联网设备,每时每刻都产生着大量的数据,所有的数据都转发到云端进行处理,将占用大量的网络带宽。为此,出现了一种新的计算模式边缘计算。边缘计算通过在网络边缘部署边缘服务器来提供计算和存储服务,从而能够在边缘直接处理用户数据,降低请求的延迟并节省边缘和云之间的网络带宽。此外,随着传输路径的缩短,传输的可靠性也得到了提高。
4.在边缘部署存储服务允许终端设备高速访问数据,降低数据访问的响应延迟,这对于普遍延迟敏感的应用非常重要。但是受许多可变性来源的影响,分布式存储系统各节点常常会出现性能波动,从而影响系统服务质量。并且在边缘环境中,由于用户的位置变化以及时变的动态网络都会导致系统服务质量出现变化。副本选择策略,作为一种广泛使用的为提高系统服务质量的请求调度方法,通过为请求选择延迟最低的边缘服务器,能够有效降低每个请求的处理时延。与其他方法相比(例如,冗余请求、重新发出请求等),副本选择不会增加系统的负载。并且副本选择是分布式存储系统中不可缺少的一环(当一个请求到达时,总需要为其选择一个服务器提供服务)。因此,在边缘环境中研究副本选择策略来保障系统的服务质量十分必要。但是,当前传统的副本选择策略往往设置在客户端,无法快速适应边缘服务器状态的变化。为了解决上述问题,现有的副本选择策略多设置在服务器端,以感知服务器的性能,主要包括基于客户端的副本选择策略和基于中心节点的副本选择策略;其中,基于客户端的副本选择策略因其缺少完整的服务器状态信息导致对服务器延迟估计不准确,且多选择节点难以协调容易出现负载振荡,这些都会导致请求延迟升高;而基于中心节点的副本选择策略通过额外的中心节点为所有客户端执行副本选择任务,在边缘场景中使用云数据中心作为副本选择节点,将请求发送到一个云数据中心,在云数据中心中为每个请求选择服务能力最好的边缘服务器,存在请求转发,将引入额外的响应延迟,且在边缘这种地理分布的环境中,请求转发产生的延迟将更大。
5.为了降低边缘环境中请求处理延迟,保障系统的服务质量,实现性能和可靠性的兼顾,如何设计便于副本选择的分布式存储系统,以及在分布式存储系统中对副本选择方
法进行优化成为一个亟需解决的问题。


技术实现要素:

6.针对现有技术的以上缺陷或改进需求,本发明提供了一种分布式存储系统及其副本选择方法,用于解决现有技术响应延迟较高的技术问题。
7.为实现上述目的,第一方面,本发明提供了一种分布式存储系统,包括:云端和服务器端;其中,服务器端包括:多个分布式分布的边缘服务器;每个边缘服务器中均部署有一个actor网络;云端部署有多个critic网络,其数量与边缘服务器的数量相同,一个critic网络对应一个actor网络;
8.上述分布式存储系统的运行过程包括:
9.在每一时刻t,每一个边缘服务器均执行以下操作:边缘服务器采集其所在网络环境的当前状态数据作为其状态信息,并输入到其内部的用于进行边缘服务器服务质量评分的actor网络中,得到其评分;边缘服务器将其状态信息和所有边缘服务器的评分发送至云端中对应的critic网络中得到其评价结果后,以最大化评价结果为目标,对其内部的actor网络进行训练;
10.在每一时刻t,云端执行以下操作:收集所有边缘服务器发送过来的信息,并在收集完t时刻下所有边缘服务器发送过来的信息后,计算t-1时刻的奖励值r
t-1
,并将对应的元组信息存入经验池中;当经验池存满数据时,从经验池中随机采样元组信息数据对每一个critic网络同时进行训练;其中,上述元组信息包括:t-1时刻所有边缘服务器的状态信息、t-1时刻所有边缘服务器的评分、t-1时刻的奖励值和t时刻所有边缘服务器的状态信息。
11.进一步优选地,上述t-1时刻的奖励值r
t-1
为:
[0012][0013][0014][0015]
其中,n为边缘服务器的数量;为第i个边缘服务器的平均延迟;为所有边缘服务器的平均延迟的平均值;为第i个边缘服务器处理的请求数;为第i个边缘服务器处理的请求数的平均值。
[0016]
进一步优选地,云端在每一时刻t下执行操作的过程中,在经验池未存满数据或者critic网络训练完成后,判断从时刻t开始所经过的时长是否大于预设时间周期,若是,则从经验池中获取不同时刻下各边缘服务器的评分,计算得到每一个边缘服务器的评分平均值;以各边缘服务器的评分平均值的中位数为划分点,将边缘服务器划分为低延迟边缘服务器和高延迟边缘服务器;其中,低延迟边缘服务器的评分平均值大于或等于划分点,高延迟边缘服务器的评分平均值小于划分点;分别采用两个根桶结构对边缘服务器进行分区,分别记为low桶和high桶;将个低延迟边缘服务器放置在low桶中,将n/2个的高延迟边缘服务器放置在high桶中;在low桶中选择个低延迟边缘服务器、在high桶中选择
m/2高延迟边缘服务器放置副本;否则,云端在该时刻t下的操作结束;其中,n为边缘服务器的数量;m为副本数量。
[0017]
进一步优选地,上述actor网络包括:actor在线网络和actor目标网络;critic网络包括critic在线网络和critic目标网络;
[0018]
上述分布式存储系统的运行过程包括:
[0019]
在每一时刻t,每一个边缘服务器均执行以下操作:边缘服务器采集其所在网络环境的当前状态数据作为其状态信息,并分别输入到其内部的actor在线网络和actor目标网络中,得到actor在线网络输出的评分和actor目标网络输出的评分;边缘服务器将其状态信息和所有边缘服务器的actor在线网络输出的评分发送至云端中对应的critic在线网络中得到其评价结果后,以最大化评价结果为目标,对其内部的actor在线网络进行训练;且每训练若干轮后,基于actor在线网络的参数对actor目标网络进行更新;
[0020]
在每一时刻t,云端执行以下操作:收集所有边缘服务器发送过来的信息,并在收集完t时刻下所有边缘服务器发送过来的信息后,计算t-1时刻的奖励值,并将对应的元组信息存入经验池中;当经验池存满数据时,从经验池中随机采样元组信息数据对各critic网络同时进行训练;上述元组信息包括:t-1时刻所有边缘服务器的状态信息s
t-1
、t-1时刻所有边缘服务器的actor在线网络输出的评分a
t-1
、t-1时刻的奖励值r
t-1
、t时刻所有边缘服务器的状态信息s
t
以及t时刻所有边缘服务器的actor目标网络输出的评分a

t
;其中,;其中,;其中,为t-1时刻下第i个边缘服务器的状态信息;为t-1时刻下第i个边缘服务器的actor在线网络输出的评分;为t时刻下第i个边缘服务器的状态信息;为t时刻下第i个边缘服务器的actor目标网络输出的评分;n为边缘服务器的数量。
[0021]
进一步优选地,从经验池中随机采样元组信息数据对各critic网络进行训练的方法,包括:
[0022]
记采样得到的第j个元组信息数据为(sb,ab,rb,s
b+1
,a'
b+1
);其中,);其中,);其中,为b时刻下第i个边缘服务器的状态信息;为b时刻下第i个边缘服务器的actor在线网络输出的评分;为b+1时刻下第i个边缘服务器的actor目标网络输出的评分;
[0023]
基于采样得到的元组信息数据获取每一个边缘服务器的评价结果和对应的评价标签;其中,基于第j个元组信息数据得到的第i个边缘服务器的评价结果为将和ab输入至第i个critic在线网络所得的评价结果;基于第j个元组信息数据得到的第i个边缘服务器的评价标签rb为b时刻的奖励值;γ为奖励折扣率;为将和a′
b+1
输入至第i个critic目标网络所得的评价结果;
[0024]
通过最小化每一个边缘服务器的评价结果与对应的评价标签之间的差异,对各critic在线网络进行训练;且每训练若干轮后,基于critic在线网络的参数对对应的critic目标网络进行更新。
[0025]
第二方面,本发明提供了一种基于上述分布式存储系统的副本选择方法,包括:在分布式存储系统的运行过程中,当服务器端接收到副本访问请求时,基于边缘服务器的评分对各边缘服务器进行排名,选择排名最高、且存在数据副本的边缘服务器作为副本选择的节点进行数据访问。
[0026]
进一步优选地,分布式存储系统中的所有边缘服务器构成一个ceph系统;ceph系统对每一个存在数据副本的边缘服务器的评分进行归一化后,作为边缘服务器所对应的affinity-primary参数值,并基于affinity-primary参数值选择进行数据访问的边缘服务器。
[0027]
进一步优选地,ceph系统采用max-min归一化方法对每一个存在数据副本的边缘服务器的评分进行归一化。
[0028]
第三方面,本发明提供了一种副本选择系统,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时执行本发明第二方面所提供的副本选择方法。
[0029]
第四方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述存储介质所在设备执行本发明第二方面所提供的副本选择方法。
[0030]
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
[0031]
1、本发明提供了一种分布式存储系统,在云端和边缘服务器端部署不同的网络结构;由于边缘到云端具有较大的延迟,且针对边缘环境中存在多种影响系统服务质量的因素,同时考虑到边缘服务器的评分值是一个连续的数值,本发明在每个边缘服务器中设置actor网络来快速计算每个边缘服务器的评分(排名),而不是通过云端统一计算评分再分发;另外在云端部署critic网络以综合考虑所有actor网络的信息进行联合的动作评价;且actor网络基于对应的critic网络输出的评价结果进行训练,critic网络基于从经验池中随机采样得到的数据进行训练,actor网络和critic网络的训练过程相互独立且持续进行,从而能够在每一时刻均对各边缘服务器的服务质量进行准确评分,并通过在服务器之间维护一份服务器排名并分发给客户端的方式,使得副本选择具有完整的服务器状态信息且没有转发延迟开销,大大减少了云边数据的传输开销,能够更好地适应边缘环境中的副本选择,降低边缘环境中请求处理延迟,实现性能和可靠性的兼顾。
[0032]
2、本发明所提供的分布式存储系统,其中,actor网络和critic网络均为双网络结构,大大提高了学习的稳定性,进而提高了副本选择的准确性。
[0033]
3、本发明所提供的分布式存储系统,考虑到数据存取服务是状态的数据存取服务,数据访问请求只能在存在数据副本的服务器之间进行副本选择,副本的放置位置将会影响到副本选择策略的有效性,本发明根据服务器排名的期望,通过双根桶结构来调整副本的放置位置,从而使得请求能够选择更低延迟的服务器,进而降低了请求处理时延。
[0034]
4、由于侵入系统去修改副本的选择将会涉及到大量的系统内部既有机制,想要完
美的将副本选择机制嵌入进现有的系统非常困难,本发明所提供的副本选择方法针对ceph系统已有的内部机制设计额外的处理流程来改变副本的选择,每得到一次边缘服务器的评分后,对边缘服务器的评分进行归一化,作为该边缘服务器的osd节点的affinity-primary参数值,ceph系统将会基于affinity-primary参数值选择其主osd节点作为副本选择的节点进行数据访问,即排名最高、且存在数据副本的边缘服务器。
附图说明
[0035]
图1为本发明实施例1提供的一种分布式存储系统的结构示意图;
[0036]
图2为本发明实施例1提供的actor网络结构示意图;
[0037]
图3为本发明实施例1提供的critic网络结构图;
[0038]
图4为本发明实施例1提供的边缘环境下多代理强化学习数据流图;
[0039]
图5为本发明实施例1提供的双“根桶”结构示意图;
[0040]
图6为本发明实施例1提供的双“根桶”结构中的规则实现;
[0041]
图7为本发明实施例2提供的在read-only、read-heavy和update-heavy三种负载下不同副本选择策略的平均延迟结果示意图;
[0042]
图8为本发明实施例2提供的在read-only负载下使用3种不同策略各节点在每个时刻的平均响应延迟结果示意图;
[0043]
图9为本发明实施例2提供的在read-only负载下不同客户端数量对三种副本选择策略的延迟影响示意图。
具体实施方式
[0044]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0045]
实施例1、
[0046]
一种分布式存储系统,如图1所示,包括:云端和服务器端;其中,服务器端包括:多个分布式分布的边缘服务器;每个边缘服务器中均部署有一个actor网络;云端部署有多个critic网络,其数量与边缘服务器的数量相同,一个critic网络对应一个actor网络;
[0047]
上述分布式存储系统的运行过程包括:
[0048]
服务器端的运行过程:
[0049]
在每一时刻t,每一个边缘服务器均执行以下操作:边缘服务器采集其所在网络环境的当前状态数据作为其状态信息,并输入到其内部的用于进行边缘服务器服务质量评分的actor网络中,得到其评分;边缘服务器将其状态信息和所有边缘服务器的评分发送至云端中对应的critic网络中得到其评价结果后,以最大化评价结果为目标,对其内部的actor网络进行训练;
[0050]
需要说明的是,每一个边缘服务器运行一个osd进程,包含一个osd节点。所有的边缘服务器构成一个ceph系统,对边缘服务器的评分进行归一化后,作为每一个边缘服务器的osd节点的affinity-primary参数值,ceph系统可以基于affinity-primary参数值选择
其主osd节点作为副本选择的节点进行数据访问,即排名最高、且存在数据副本的边缘服务器。具体地,可以采用tanh归一化、sigmoid归一化、max-min归一化等归一化方法。优选地,采用max-min归一化方法对边缘服务器的评分进行归一化,相比于其他归一化方法(如tanh归一化、sigmoid归一化)能够更完整的保留原始的数据信息。
[0051]
在一种可选实施方式下,边缘服务器主要包括ceph系统模块、信息采集模块、评分模块和适配器模块;
[0052]
评分模块:评分模块主要由深度确定性策略梯度(deep deterministic policy gradient,ddpg)强化学习中的actor网络组成,它根据边缘服务器单独采集到的信息为边缘服务器输出动作(评分),并将一组状态信息、动作和性能等信息发送给云端。
[0053]
适配器模块:因为侵入系统根据评分改变副本选择将涉及到大量的系统内部流程,这个模块专门用于对接具体系统,根据具体系统将评分转变成可以改变副本选择的机制。具体地,针对ceph系统已有的内部机制设计额外的处理流程来改变副本的选择,由于ceph系统中对象放置的osd节点是直接通过crush算法计算出来的,并且对象的读写操作都是通过主osd节点来完成的,主osd承载着系统很多的处理逻辑。如果直接根据评分(排名)侵入系统去改变请求的目标osd节点,将牵扯到大量的系统内部既有机制。因此,本发明考虑从主osd节点的选取入手,通过改变对象对应的主osd节点来改变副本选择的节点。在ceph中通过“抽签算法”来进行osd节点的选取,从所有节点中选出签最长的三个osd节点(三副本)作为数据的放置节点。在这最初始的osd顺序中,主osd节点就是签最长的节点。随后,为了更多的动态性还对主osd节点的选取设计了处理流程,ceph系统提供了affinity-primary参数来控制每个osd节点成为主osd节点的概率。在ceph系统中affinity-primary的区间范围设置为[0,1],而通过神经网络输出的评分值显然是超过这个范围的,因此需要将神经网络输出的值映射到这个区间内。本实施例中考虑使用max-min归一化方法进行映射。相比于其他归一化方法(如tanh归一化、sigmoid归一化)能够更完整的保留原始的数据信息,如公式所示为:
[0054]
云端的运行过程:
[0055]
在每一时刻t,云端执行以下操作:收集所有边缘服务器发送过来的信息,并在收集完t时刻下所有边缘服务器发送过来的信息后,计算t-1时刻的奖励值r
t-1
,并将对应的元组信息存入经验池中;当经验池存满数据时,从经验池中随机采样元组信息数据对每一个critic网络同时进行训练;其中,上述元组信息包括:t-1时刻所有边缘服务器的状态信息、t-1时刻所有边缘服务器的评分、t-1时刻的奖励值和t时刻所有边缘服务器的状态信息。
[0056]
本实施例中,上述t-1时刻的奖励值r
t-1
为:
[0057][0058][0059][0060]
其中,n为边缘服务器的数量;为第i个边缘服务器的平均延迟;为所有边缘服
务器的平均延迟的平均值;为第i个边缘服务器处理的请求数;为第i个边缘服务器处理的请求数的平均值。
[0061]
在一种可选实施方式下,云端主要包括奖励计算模块、经验池模块、评价模块和副本放置优化模块。
[0062]
奖励计算模块:奖励计算模块需要维护上一次的状态和动作信息,并接收本次的状态和动作信息,以及计算上一轮的系统整体奖励值,并将《上次状态,上次动作,奖励值,本次状态,actor目标网络本次输出的动作》元组信息存入经验池中。需要说明的是,奖励计算模块需要维护t-1时刻的所有信息(即t-1时刻的状态s
t-1
和动作信息a
t-1
),并收集t时刻所有边缘服务器的信息(即t时刻的状态s
t
和动作信息a'
t
)。之后可以通过t时刻的信息计算出t-1时刻的奖励值r
t-1
,并将元组(s
t-1
,a
t-1
,r
t-1
,s
t
,a'
t
)信息存储到经验池中。具体地,奖励值如何计算对于强化学习至关重要,本实施例使用每个节点处理的请求数来衡量奖励值的大小,当节点的平均延迟小于整体平均延迟时,请求数具有一个正奖励反馈,t时刻每个节点处理的请求数定义为同时考虑到延迟越低的节点处理请求应该获得越多的奖励,因此不同节点的请求数应具有不同的奖励权重。拥有权重信息,那么将不再是所有请求都具有奖励反馈,而是每个节点处理的请求数与均值的差才具有奖励反馈,代表多处理或少处理请求的奖励反馈(基于每个节点处理请求数相等考虑)。每个节点具有奖励反馈的请求数定义如公式所示:由于每个节点奖励权重与延迟相关,考虑直接使用每个节点的平均延迟与整体平均延迟的差来表示权重参数,如公式所示:那么最后奖励值的计算定义如公式所示:
[0063]
评价模块:评价模块由ddpg强化学习中的critic网络组成,它对actor网络的动作信息进行评价。critic网络输出的评价值将作为actor网络学习的“监督信息”,并从经验池中采样历史数据对自身进行训练学习。
[0064]
副本放置优化模块:考虑到存储系统提供的是有状态的数据存取服务,副本的放置位置将影响到选择策略的可选节点。考虑对数据进行迁移,优化副本的放置位置,从而更好的进行副本选择。
[0065]
需要说明的是,actor网络的输入为每个边缘服务器观测到的自身状态信息定义为s,输出为评分(动作)定义为a。在一种可选实施方式下,actor网络的具体实现结构如图2所示,整个actor网络由两个全连接层(linear layer)和一个relu激活层组成。考虑到边缘服务器资源有限,为了更少的计算开销,marlrs将全连接层的输出(或输入)即中间的隐藏层定义为50维。actor网络两个全连接层的权重矩阵分别定义为w
a1
,w
a2
,权重矩阵的维度分别为len(s)
×
50、50
×
1,其中len(s)为状态的维度。那么actor网络表示的计算公式为:a=relu(s*w
a1
)*w
a2

[0066]
critic网络的作用是对actor网络的计算结果进行评价,即critic网络的输出就是actor网络学习的“监督信息”。actor网络的结果越好,则critic网络的输出结果为正值
且越大;actor网络的结果越差,则critic网络的输出结果为负值且越小。critic网络的作用是对actor网络的计算结果进行评价,即critic网络的输出就是actor网络学习的“监督信息”。actor网络的结果越好,则critic网络的输出结果为正值且越大;actor网络的结果越差,则critic网络的输出结果为负值且越小。critic网络需要同时输入actor网络的输入s和actor网络的输出a。在一种可选实施方式下,critic网络的具体实现结构如图3所示,输入的s和a都分别使用一个全连接层计算出中间结果分别定义为mids和mida,两个全连接层的权重矩阵分别定义为w
cs
和w
ca
,矩阵维度分别定义为len(s)
×
200和n
×
200,n为边缘服务器数量。mids和mida的计算分别为mids=s*wcs和mida=a*w
ca
。则网络的中间输出结果根据以下所示进行线性求和计算,具体为:mid=mids+mida+b;其中b为噪声矩阵。然后和actor网络一样经过一个激活函数和全连接层计算出评价结果q。定义最后一个全连接层的权重矩阵为wc,那么critic网络表示的计算公式如公式所示:q=relu(mid)*wc。
[0067]
进一步地,由于边缘到云端具有较大的延迟,本发明在每个边缘服务器中设置actor网络来快速计算每个节点评分(排名),而不是通过云端统一计算评分再分发。而critic网络需要综合考虑所有actor网络的信息进行联合的动作评价,且为了更好的训练网络需要从经验池中随机采样一批数据同时进行学习,在云端部署所有的critic网络(其中一个actor网络对应一个critic网络,即第i个actor网络对应第i个critic网络,i=1,2,

,n)。并且为了提高学习的稳定性,在一种可选实施方式下,actor网络和critic网络都采用双网络设置。具体地,上述actor网络包括:actor在线网络和actor目标网络;critic网络包括critic在线网络和critic目标网络;通过critic在线网络每个时刻对actor在线网络的动作进行评价。
[0068]
上述分布式存储系统的运行过程包括:
[0069]
在每一时刻t,每一个边缘服务器均执行以下操作:边缘服务器采集其所在网络环境的当前状态数据作为其状态信息,并分别输入到其内部的actor在线网络和actor目标网络中,得到actor在线网络输出的评分和actor目标网络输出的评分;边缘服务器将其状态信息和所有边缘服务器的actor在线网络输出的评分发送至云端中对应的critic在线网络中得到其评价结果后,以最大化评价结果为目标,对其内部的actor在线网络进行训练;且每训练若干轮后,基于actor在线网络的参数对actor目标网络进行更新;
[0070]
在每一时刻t,云端执行以下操作:收集所有边缘服务器发送过来的信息,并在收集完t时刻下所有边缘服务器发送过来的信息后,计算t-1时刻的奖励值,并将对应的元组信息存入经验池中;当经验池存满数据时,从经验池中随机采样元组信息数据对各critic网络同时进行训练;上述元组信息包括:t-1时刻所有边缘服务器的状态信息s
t-1
、t-1时刻所有边缘服务器的actor在线网络输出的评分a
t-1
、t-1时刻的奖励值r
t-1
、t时刻所有边缘服务器的状态信息s
t
以及t时刻所有边缘服务器的actor目标网络输出的评分a

t
;其中,;其中,;其中,为t-1时刻下第i个边缘服务器的状态信息;为t-1时刻下第i个边缘服务器的actor在线网络输出的评分;为t
时刻下第i个边缘服务器的状态信息;为t时刻下第i个边缘服务器的actor目标网络输出的评分;n为边缘服务器的数量。
[0071]
具体地,从经验池中随机采样元组信息数据对critic网络进行训练的方法,包括:
[0072]
经验池中采样得到的元组信息数据的总数量为b;记采样得到的第j个元组信息数据为(sb,ab,rb,s
b+1
,a'
b+1
);其中,);其中,);其中,为b时刻下第i个边缘服务器的状态信息;为b时刻下第i个边缘服务器的actor在线网络输出的评分;为b+1时刻下第i个边缘服务器的actor目标网络输出的评分;
[0073]
基于采样得到的元组信息数据获取每一个边缘服务器的评价结果和对应的评价标签;其中,基于第j个元组信息数据得到的第i个边缘服务器的评价结果为将和ab输入至第i个critic在线网络所得的评价结果;基于第j个元组信息数据得到的第i个边缘服务器的评价标签rb为b时刻的奖励值;γ为奖励折扣率;为将和a

b+1
输入至第i个critic目标网络所得的评价结果;
[0074]
通过最小化每一个边缘服务器的评价结果与对应的评价标签之间的差异,对各critic在线网络进行训练;且每训练若干轮后,基于critic在线网络的参数对对应的critic目标网络进行更新。
[0075]
需要说明的是,在actor和critic的双网络结构中,在线网络和目标网络具有相同的网络模型设置,只是网络间的权重参数不同;具体地,actor在线网络和actor目标网络的结构相同,均同上述actor网络的结构,这里不做赘述。critic在线网络和critic目标网络的结构相同,均同上述critic网络的结构,这里不做赘述。在线网络权重实时更新(单步),目标网络权重则是在在线网络更新n步之后,根据在线网络权重进行网络参数的更新。
[0076]
具体地,分别记actor在线网络、actor目标网络、critic在线网络和critic目标网络的神经网络计算过程分别定义为函数μ(i)、μ'(i)、q(i)和q'(i),神经网络的整体参数分别定义为和,其中i表示边缘服务器的编号。为了进一步说明上述分布式存储系统的运行过程,下面以图4所示的边缘环境下多代理强化学习数据流图为例来说明边缘环境中actor网络和critic网络完整的数据流过程:
[0077]
1)首先,边缘服务器之间具有时钟同步处理。到时刻t时,所有边缘服务器都观测获得自身的环境状态信息,状态信息定义为
[0078]
2)然后,将状态信息作为actor在线网络的输入,经过神经网络计算得出t时刻的动作公式定义为然后每个边缘服务器直接执行动作
[0079]
3)将元组信息和额外的奖励值计算信息发送到云端的奖励计算模块。考虑到critic目标网络的输入依赖于actor目标网络的输出,因此在此阶段将输入
actor目标网络进行计算,网络输出定义为公式定义为如果不在此阶段将信息计算出来,那么每次critic目标网络执行计算时,都需要从云端发送数据到边缘,由边缘的actor目标网络计算后再将相应数据发送到云端,这种做法将产生额外的开销。在此阶段完成相应的计算可以节省不必要的开销。
[0080]
4)奖励计算模块汇总所有边缘服务器信息且维护着t-1时刻的信息。因此能够根据t时刻的信息计算出t-1时刻的系统全局奖励r
t-1
。然后将元组(s
t-1
,a
t-1
,r
t-1
,s
t
,a'
t
)信息存入经验池中,以供critic网络进行随机采样学习。
[0081]
5)critic网络从经验池中随机采样b个元组数据。如阶段4)中元组信息所示;具体地,记采样得到的第j个元组信息数据为(sb,ab,rb,s
b+1
,a'
b+1
)。
[0082]
6)与阶段5)是完全平行的过程,互不干扰。用相应的critic在线网络对t时刻actor在线网络的行为进行评价,评价结果定义为公式定义为输入critic在线网络的信息为对应actor在线网络的状态和联合动作和联合动作
[0083]
7)将第j个元组信息数据中的和a

b+1
输入至输入critic目标网络获得公式定义为利用奖励值rb和计算出critic在线网络学习所需的“监督信息”(与监督式学习的标签存在区别,critic在线网络的标签依赖于系统中本身正在学习的critic目标网络),基于第j个元组信息数据得到的第i个边缘服务器的评价标签为:
[0084][0085]
其中γ为奖励折扣率。
[0086]
8)在线网络进行前向传播并计算梯度,是在线网络训练学习过程的第一步。actor和critic网络都执行这一个过程,但并不是同时的(在不同的机器上)且针对的训练数据也不同。在最原始的ddpg网络设计中,actor网络和critic网络都是使用同一批采样的数据进行训练学习,但是现在actor网络和critic网络分属不同的机器上,且经验池放在云端。如果再使用原模型的做法,将产生额外的开销(且具有时延性)。因此,本发明让actor网络只是针对t时刻的数据进行学习,而critic网络则是从经验池中随机采样b大小的数据同时进行训练学习。
[0087]
9)此阶段计算相应网络的损失值,对在线网络参数进行反向传播更新。critic在线网络使用阶段中前向传播,将第j个元组信息数据中的和ab输入至第i个critic在线网络所得的评价结果记为其中与标签计算损失值公式如公式所示:
[0088][0089]
其中,b为批采样数据的大小。
[0090]
进一步地,actor在线网络则直接使用critic在线网络的评价信息作为行为好坏的评判标准,越大说明actor网络做出的决策越好,因此actor在线网络要朝着更有可能获得更大的方向修改网络的权重参数。定义actor在线网络的损失函数如公式所示:
[0091][0092]
然后进行反向传播分别更新actor在线网络和critic在线网络的参数μ(i)和q(i)。
[0093]
10)在在线网络实时更新n步之后,需要依赖在线网络的权重信息对目标网络的网络权重进行更新。但并不是直接将在线网络权重参数信息进行完整复制,而是定义一个学习率τ,目标网络每次从在线网络学习一部分内容,这一过程被称为软更新(soft update)。目标网络参数更新公式分别如公式所示:
[0094][0095][0096]
进一步地,在一种可选实施方式下,云端在每一时刻t下执行操作的过程中,在经验池未存满数据或者critic网络训练完成后,判断从时刻t开始所经过的时长是否大于预设时间周期(本实施方式下取值为600s),若是,则从经验池中获取不同时刻下各边缘服务器的评分,计算得到每一个边缘服务器的评分平均值;以各边缘服务器的评分平均值的中位数为划分点,将边缘服务器划分为低延迟边缘服务器和高延迟边缘服务器;其中,低延迟边缘服务器的评分平均值大于或等于划分点,高延迟边缘服务器的评分平均值小于划分点;分别采用两个根桶结构对边缘服务器进行分区,分别记为low桶和high桶;将个低延迟边缘服务器放置在low桶中,将n/2个的高延迟边缘服务器放置在high桶中;在low桶中选择个低延迟边缘服务器、在high桶中选择m/2高延迟边缘服务器放置副本;否则,云端在该时刻t下的操作结束;其中,n为边缘服务器的数量;m为副本数量。
[0097]
具体地,在上述可选实施方式下,上述分布式存储系统的整体流程包括:
[0098]
边缘部分:在每个时刻t,边缘服务器开始采集当前的状态数据,之后使用actor网络计算出动作。然后将动作进行适配操作并执行适配动作,同时将状态、动作和性能等信息发送到云端。最后等待云端的评价结果对actor网络进行训练学习。
[0099]
云端部分:云端收集完所有t时刻边缘服务器的信息后,开始计算t-1时刻的奖励值,并将相应的元组信息存入经验池以供critic网络采样学习。接着,云端使用critic网络对所有边缘服务器的行为进行评价。然后将评价结果发送给每个边缘服务器,同时判断经验池是否存满数据了。若有足够的数据,critic网络将从经验池中随机采样数据,对critic网络进行训练学习。若没有足够数据,则直接判断是否经过了副本放置调整的时间周期。是则直接开始从经验池中获取评分数据,计算每个服务器的服务性能期望。最后根据期望值对服务器进行分区,改变副本的放置位置。否则结束流程。
[0100]
需要说明的是,存储系统提供的是一个有状态的数据存取服务,这意味着数据访问请求只能在存在数据副本的边缘服务器之间进行选择,因此副本的放置将会影响到选择的决策。然而数据的放置是随机,因此在时刻t时可能出现有的数据的副本都在延迟较高的服务器上,访问这一部分数据的请求都将具有较高的延迟开销,并且只通过副本选择策略
无法很好的优化这一部分请求的响应延迟。如假设现在有8个边缘服务器,每个边缘服务器的响应延迟按2~9ms进行设置,并且现在有8个文件要放入存储系统中。假设存储系统使用3副本策略,那么每个边缘服务器将存储3个文件(考虑数据均匀分布),如果对数据进行随机放置,那么将可能出现有的数据的副本都存储在响应延迟较高的服务器中。为了解决上述问题,在一种方式下可以直接将文件进行交换保证所有数据在响应延迟较低的边缘服务器中,再通过副本选择策略,以保证所有数据的访问请求都能获得较低的响应延迟;然而,数据迁移是存在开销的且需要一定的时间来完成,并且在边缘场景下服务器之间存在着传输延迟,需要更多的时间来完成数据迁移任务。因此,副本的放置不能像副本的选择一样实时更新策略,副本放置应该比副本选择有着更大的策略更新时间周期,而如何衡量一段长时间周期内服务器的性能是一件比较困难的事。
[0101]
针对可能会出现这种数据放置的情况,本发明设计了一种基于排名期望的副本放置优化策略(记为rdrp),对数据进行迁移,以优化副本的放置,将相应的数据迁移放置到延迟更低的服务器中。考虑到本发明在每个时刻t都对边缘服务器进行过一次排名,且rdrp的目的就是为了更好的进行副本选择,因此,rdrp使用这段时间周期内服务器排名的期望来衡量副本放置优化时各边缘服务器能提供的性能排名。每个时刻t各服务器的评分为actor网络的输出定义一段长时间周期总共包含m个时刻,则每个服务器的排名期望如公式所示:
[0102][0103]
同时考虑到将数据的副本都放置在排名最高的节点,不仅会导致数据失衡而且该节点会遭受过多的请求导致响应延迟升高,从而打破这种数据放置策略的目的。因此,rdrp根据排名期望将边缘服务器分为延迟较低和延迟较高两部分,保证所有数据在延迟较低的边缘服务器中均衡的放置至少一份副本。具体地,结合ceph系统的内置规则来设计rdrp具体的实现过程,ceph系统为了实现更灵活的放置方式,在集群拓扑中设计了桶与规则的结构,通过桶与规则结合的方式可以实现各种各样灵活的数据放置策略。
[0104]
本发明根据较低延迟与较高延迟的分区设计,需要定义两个桶来分别放置不同预测评分的osd节点,然而这只解决的是osd节点的分区问题,具体的数据放置位置选择由规则进行控制。本发明通过设计两个“根桶”的方式并定义相应的规则流程来实现这一目标。在ceph系统中通过桶与规则结合的方式以不侵入系统的方式改变数据的放置位置。设计两个“根桶”的方式,如图5所示,双“根桶”分别定义为low桶和high桶,其中low桶放置具有较低延迟的节点,high桶则放置较高延迟的节点。low桶中放置个数量的host(即边缘服务器),high桶中则放置n/2个数量的host。定义数据的副本数量为m,则选择规则在low桶中将选择个host,在high桶中选择m/2个host,从而可以保证每个数据在较低延迟的节点中都存在着副本。
[0105]
本实施例以3副本和5个osd节点来展示具体的桶结构和规则定义的实现。表1展示了具体的桶结构详情。
[0106]
表1
[0107][0108]
如表1所示,其中包含7个桶的实现,首个字段表示桶的类型。剩下4个类型的字段为桶的具体定义信息,其中id表示桶的唯一标识号(在ceph中桶从-1开始往下编号,osd节点从0开始往上编号);alg表示桶中子桶或osd节点的放置选择算法(在放置算法的选择中,本发明考虑到需要改变桶结构对数据进行迁移,使用升级版的“抽签算法”straw2减少数据迁移量);hash表示在计算过程中用到的哈希函数(0代表默认函数jenkins1);item表示桶中放置的子桶或osd节点。
[0109]
如图6所示。其中ruleset代表在规则集中的唯一标识;type代表保存多副本的方式(复制或纠删码);最后的step则代表着具体的选择流程。在step中有三种类型的操作,分别是take、choose和emit。其中take表示获得一个“根桶”;choose表示选择子桶或osd节点,emit则是结束一个“根桶”的选择。在choose类型的操作中,第一个参数为选择的方式,本文使用的是firstn(深度优先遍历)方法;第二个参数为选择的个数;第三个参数为类别标识符;第四个参数则是具体类别(可以是桶或osd)。
[0110]
在系统运行时改变桶结构能够改变副本的放置位置,算法1为桶替换算法的伪代码,如表2所示。算法首先清空low和high两个“根桶”,然后根据期望排名分别往“根桶”中加入相应的host桶。
[0111]
表2
[0112][0113]
综上所述,本发明通过在服务器之间维护一份服务器排名并分发给客户端的方
式,使副本选择具有完整的服务器状态信息且没有转发延迟开销。然后,针对边缘环境中存在多种影响系统服务质量的因素,研究使用神经网络建立高维的性能模型,设计了一种基于多代理强化学习的性能建模方法。并通过对基础模型的结构和数据流进行调整,从而能够在云和边缘部署不同的网络结构加速副本选择策略的调整,且减少云边数据的传输开销。最后,考虑到副本放置位置将影响副本的选择,设计了一种基于排名期望的副本放置优化方法。根据服务器排名的期望,调整副本放置位置,从而使得请求能够选择更低延迟的服务器,降低请求处理时延。本发明能够更好适应边缘环境中的副本选择,实现性能和可靠性的兼顾。
[0114]
实施例2、
[0115]
一种基于实施例1所述分布式存储系统的副本选择方法,包括:
[0116]
在分布式存储系统的运行过程中,当服务器端接收到副本访问请求时,基于边缘服务器的评分对各边缘服务器进行排名,选择排名最高、且存在数据副本的边缘服务器作为副本选择的节点进行数据访问。
[0117]
优选地,分布式存储系统中的所有边缘服务器构成一个ceph系统;ceph系统对每一个存在数据副本的边缘服务器的评分进行归一化后,作为边缘服务器所对应的affinity-primary参数值,并基于affinity-primary参数值选择进行数据访问的边缘服务器。
[0118]
相关技术方案同实施例1,这里不做赘述。
[0119]
为了说明本发明所提供的副本选择方法的性能,分别对三种副本选择方法在三种负载中进行性能测试实验,其中,客户端数量设置为10。如图7所示为在read-only、read-heavy和update-heavy三种负载下不同副本选择策略的平均延迟结果,其中,横坐标表示具体的副本选择策略,纵坐标为相应的性能指标(平均延迟,以ms计算);其中,marlrs为本发明所提供的副本选择策略,集中的on-off和分散的drs-rt为现有的两种副本选择策略。从图7可以看出,集中的drs-rt方法比分散的on-off方法平均延迟更高,这是因为在边缘环境下(节点之间存在传输延迟),drs-rt方法存在着较高的请求转发的延迟开销。而本发明所提供的marlrs方法因为使用多代理强化学习建立高维模型且使用服务端排名的集中副本选择机制,相比于其他两种方法在三种负载下均有更低的响应延迟。但从不同负载的对比可以看出,marlrs与其他两种方法在写比例较高的负载下平均延迟降低比例最低,这是因为写操作具有同步开销,而marlrs对同步复制节点的选取不可控。
[0120]
进一步地,表3展示了在三种负载下,本发明所提供的marlrs相比于其他两种方法的平均延迟降低比例。具体来说,与on-off方法相比,平均延迟分别降低了8.89%、8.55%和2.47%。与drs-rt方法相比,平均延迟分别降低了11.78%、13.72%和10.07%。
[0121]
表3
[0122][0123]
进一步地,由于多种因素影响,分布式存储系统的性能是不稳定的,各节点处理请求的响应延迟不同。并且在边缘由于用户移动性,不同请求使用不同服务器也将获得不同
的响应延迟。本发明通过一段长时间的采集每个时刻系统的平均响应延迟来观测系统服务的稳定性,验证本发明所提供的marlrs的有效性。其中每个时刻间隔时长为1秒。具体地,如图8所示为在read-only负载下使用3种不同策略各节点在每个时刻的平均响应延迟。其中,从上往下分别代表marlrs、on-off和drs-rt三种方法;横坐标表示一个个时刻;本发明总共采集了1000个时刻的系统平均延迟数据,纵坐标表示延迟(以ms计)。从图中可以看出on-off方法存在较多的负载振荡时刻,这是因为使用客户端作为选择节点的方法只有局部视图且多选择节点难以协调策略从而容易造成振荡。从每个子图的整体趋势可以看到使用on-off和drs-rt方法系统整体平均延迟波动较大,说明这两者的方法没有很好的分配请求,本发明所提供的marlrs方法虽然也会出现波动,但是相比于其他两种方法整体趋势都更加平稳。经过一段长时间的观测,可以看到marlrs相比于on-off和drs-rt方法的副本选择策略都更加的有效,能够使系统响应延迟更加的稳定,提供更稳定的服务质量。
[0124]
进一步地,通过增加客户端的数量(增加系统整体负载)来观察不同副本选择策略的平均延迟变化。设置客户端的数量分别为10、20、30、40、50。测试在read-only工作负载下各副本选择策略的平均延迟。如图9所示为在read-only负载下不同客户端数量对三种副本选择策略的延迟影响,从图中可以看出,虽然随着客户端数量的增多(系统负载加大)三种策略的平均响应延迟均呈现上升趋势,但是与on-off方法相比,随着客户端数量的增加,本发明所提供的marlrs的平均延迟分别降低了8.89%、10.02%、11.34%、12.76%、14.43%;与drs-rt方法相比,随着客户端数量的增加,marlrs的平均延迟分别降低了11.78%、12.04%、12.12%、12.15%、11.88%。具体地,read-only负载下marlrs在不同客户端数量的平均延迟降低比例如表4所示:
[0125]
表4
[0126][0127]
从表4中的数据可以看出,随着客户端数量的增加,本发明所提供的marlrs相比于on-off有着更大的延迟降低效果。这说明了on-off方法随着客户端数量的增多(并发数增大),on-off的开关策略会降低选择效率,且更加难以协调决策降低负载振荡,从而导致较高的延迟。甚至在40个客户端数量时就超过的使用转发机制的drs-rt方法。同时,表中数据显示marlrs相比于drs-rt方法的延迟降低效果没有太大的变化,这是因为marlrs与drs-rt都是集中式决策。随着并发数的增加,marlrs这种每隔一个时刻决策的方法可能会出时刻内较高并发出现延迟升高的情况,但drs-rt也面临单点集中决策的并发量问题,导致出现较高的延迟。总的来说,随着客户端数量的增加marlrs方法的平均响应延迟优于其他两种方法。
[0128]
综上所述,本发明公开了一种分布式存储系统的副本选择方法,通过在服务器之间维护一份服务器排名并分发给客户端的方式,使副本选择具有完整的服务器状态信息且没有转发延迟开销。然后,针对边缘环境中存在多种影响系统服务质量的因素,研究使用神经网络建立高维的性能模型,设计了一种基于多代理强化学习的性能建模方法。并通过对基础模型的结构和数据流进行调整,从而能够在云和边缘部署不同的网络结构加速副本选
择策略的调整,且减少云边数据的传输开销。最后,考虑到副本放置位置将影响副本的选择,设计了一种基于排名期望的副本放置优化方法。根据服务器排名的期望,调整副本放置位置,从而使得请求能够选择更低延迟的服务器,降低请求处理时延。本发明能够更好适应边缘环境中的副本选择,实现性能和可靠性的兼顾。
[0129]
实施例3、
[0130]
一种副本选择系统,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时执行本发明实施例2所提供的副本选择方法。
[0131]
相关技术方案同实施例2,这里不做赘述。
[0132]
实施例4、
[0133]
一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述存储介质所在设备执行本发明实施例2所提供的副本选择方法。
[0134]
相关技术方案同实施例2,这里不做赘述。
[0135]
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1