一种数据写入速率的自适应限流方法、装置、设备及介质与流程

文档序号:27103563发布日期:2021-10-27 18:00阅读:82来源:国知局
一种数据写入速率的自适应限流方法、装置、设备及介质与流程

1.本发明涉及分布式存储系统领域,尤其是涉及一种数据写入速率的自适应限流方法、装置、设备及介质。


背景技术:

2.在分布式存储领域中,特殊情况下我们需要考虑对系统内部数据操作,例如缓存下刷、日志合并等场景的写入速率进行控制,比如突发性写入的大量数据,超过一定的阈值后,由于硬盘性能瓶颈,会使数据读取时延增高,影响读性能,进而影响前端业务。在分布式存储系统内部的一些数据写入操作,如果不进行速率控制的话会与用户业务竞争,使前端用户业务受影响。
3.现在的速率限流方式,一种是通过计数器限制单位时间内请求的数量,但是这种方式不容易确定单个请求的io(input/output,输入/输出)操作大小是否一致,以及及单位时间内请求数量控制在多少比较合适,所以一般限流效果不理想;另一种速率限流方式是通过限制单位时间内io总流量的方式,不过以固定的大小进行流量控制,无法避免数据量暴增的情况即写入数据量骤增到最高限制的值。
4.综上,现有数据写入速率限制方法并不能有效限制数据写入速率,限制效果不够理想,可靠性不高。


技术实现要素:

5.本发明为了解决现有技术中存在的问题,创新提出了一种数据写入速率的自适应限流方法、装置、设备及介质,有效解决由于现有数据写入速率限制造成限制效果不够理想的问题,有效的提高了数据写入速率限制的可靠性。
6.本发明第一方面提供了一种数据写入速率的自适应限流方法,应用于分布式存储系统中,包括:
7.对多个io实例进行数据写入控制;
8.获取每个io实例中待写入的数据写入请求,并解析获取数据写入请求中包含的待写入的数据量;
9.根据待写入的数据量判断当前第一周期内可写入的数据量进行对比,如果当前第一周期内可写入的数据量不小于待写入的数据量,控制待写入的数据写入,并更新当前第一周期内可写入的数据量;如果当前第一周期内可写入的数据量小于待写入的数据量,将待写入的数据写入请求放入等待队列,等待下一个第一周期判断执行;
10.判断当前时间间隔是否满足第二周期,如果满足,根据第二周期内存在数据写入请求等待的第一周期的数量进行数据写入速率自适应调整,根据调整后的数据写入速率设置当前第一周期内可写入的数据量;其中,第二周期为多个第一周期。
11.可选地,根据第二周期内存在数据写入请求等待的第一周期的数量进行数据写入速率调整具体是:
12.获取当前第二周期内存在数据写入请求等待的第一周期的数量;
13.确定存在数据写入请求等待的第一周期的数量与第二周期内包含第一周期的数量之间比值;
14.根据比值与预设数值的关系,调整下一第二周期内的每个第一周期中的数据写入速率。
15.进一步地,其中预设数值包括第一预设阈值、第二预设阈值、第三预设阈值,第一预设阈值小于第二预设阈值,且第二预设阈值小于第三预设阈值,根据比值与预设数值的关系,调整下一第二周期内的每个第一周期中的数据写入速率具体包括:
16.如果比值小于第一预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第一调整比例的乘积;
17.如果比值大于第一预设阈值且小于第二预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第二调整比例的乘积;
18.如果比值大于第二预设阈值且小于第三预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第三调整比例的乘积;
19.如果比值大于第三预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第四调整比例的乘积;其中,第一调整比例、第二调整比例、第三调整比例、第四调整比例依次增大,且第一调整比例、第二调整比例小于1,第四调整比例大于1。
20.可选地,根据调整后的数据写入速率设置当前第一周期内可写入的数据量具体是:
21.当前第一周期内可写入的数据量为调整后的数据写入速率均分至各个第一周期内。
22.可选地,等待队列中多个待写入的数据写入请求根据待写入的数据写入请求的优先级顺序被下一个第一周期判断执行。
23.进一步地,根据待写入的数据写入请求的优先级顺序具体是:
24.等待队列中,高优先级io实例对应的待写入的数据写入请求优先级高于低优先级io实例对应的待写入的数据写入请求;和/或,
25.等待队列中相同优先级io实例对应的待写入的数据写入请求中,先入队的待写入的数据写入请求优先级高于后入队的待写入的数据写入请求。
26.可选地,对多个io实例进行数据写入控制之前还包括:
27.进行初始化参数配置以及接口配置,其中,初始化参数配置包括:数据写入最高速率、第一周期、第二周期、当前第一周期内可写入的数据量;初始化接口配置包括:io实例中数据写入请求调用接口、数据写入速率获取接口、数据写入速率设置接口、数据写入速率调整接口、当前第一周期内可写入的数据量调整接口。
28.本发明第二方面提供了一种数据写入速率的自适应限流装置,应用于分布式存储系统中,包括:
29.控制模块,对多个io实例进行数据写入控制;
30.获取解析模块,获取每个io实例中待写入的数据写入请求,并解析获取数据写入请求中包含的待写入的数据量;
31.对比模块,根据待写入的数据量判断当前第一周期内可写入的数据量进行对比,如果当前第一周期内可写入的数据量不小于待写入的数据量,控制待写入的数据写入,并更新当前第一周期内可写入的数据量;如果当前第一周期内可写入的数据量小于待写入的数据量,将待写入的数据写入请求放入等待队列,等待下一个第一周期判断执行;
32.调整模块,判断当前时间间隔是否满足第二周期,如果满足,根据第二周期内存在数据写入请求等待的第一周期的数量进行数据写入速率自适应调整,根据调整后的数据写入速率设置当前第一周期内可写入的数据量;其中,第二周期为多个第一周期。
33.本发明第三方面提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如本发明第一方面所述的数据写入速率的自适应限流方法的步骤。
34.本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一方面所述的数据写入速率的自适应限流方法的步骤。
35.本发明采用的技术方案包括以下技术效果:
36.1、本发明有效解决由于现有数据写入速率限制造成限制效果不够理想的问题,有效的提高了数据写入速率限制的可靠性。
37.2、本发明技术方案通过将数据写入速率控制在可配置的范围内并能够动态修改,能够避免突发性大量数据写入对硬盘造成压力使读请求阻塞的情况,周期性的根据数据写入压力进行速率调整,又能够有效的避免系统性能随写入速率不同而波动的情况,使得分布式存储系统业务能够平稳运行。
38.3、本发明技术方案中根据第二周期内存在数据写入请求等待的第一周期的数量可以进行数据写入速率自适应调整,根据调整后的数据写入速率设置当前第一周期内可写入的数据量,使得当前第一周期内可以写入的数据量能够根据上一个第二周期内的数据写入压力情况进行调整,以实现自适应调整,提高了数据写入速率调整的便利性以及及时性。
39.4、本发明技术方案中等待队列中多个待写入的数据写入请求根据待写入的数据写入请求的优先级顺序被下一个第一周期判断执行,便于等待队列中优先级高的数据写入请求可以优先被执行,提高了数据写入速率调整的适应性以及便利性。
40.应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
41.为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1为本发明方案中实施例一方法的一流程示意图;
43.图2为本发明方案中实施例一方法中步骤s7的流程示意图;
44.图3为本发明方案中实施例一方法中步骤s71的流程示意图;
45.图4为本发明方案中实施例一方法的另一流程示意图;
46.图5为本发明方案中实施例二装置的一结构示意图;
47.图6为本发明方案中实施例二装置的另一结构示意图;
48.图7为本发明方案中实施例三设备的结构示意图。
具体实施方式
49.为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
50.实施例一
51.如图1所示,本发明提供了一种数据写入速率的自适应限流方法,应用于分布式存储系统中,包括:
52.s1,对多个io实例进行数据写入控制;
53.s2,获取每个io实例中待写入的数据写入请求,并解析获取数据写入请求中包含的待写入的数据量;
54.s3,根据待写入的数据量判断当前第一周期内可写入的数据量进行对比,判断当前第一周期内可写入的数据量是否不小于待写入的数据量,如果判断结果为是,则执行步骤s4;如果判断结果为否,则执行步骤s5;
55.s4,控制待写入的数据写入,并更新当前第一周期内可写入的数据量;
56.s5,将待写入的数据写入请求放入等待队列,等待下一个第一周期判断执行;
57.s6,判断当前时间间隔是否满足第二周期,如果判断结果为是,则执行步骤s7,如果判断结果为否,则执行步骤s2;
58.s7,根据第二周期内存在数据写入请求等待的第一周期的数量进行数据写入速率自适应调整,根据调整后的数据写入速率设置当前第一周期内可写入的数据量;其中,第二周期为多个第一周期。
59.其中,在步骤s1中,对多个io实例进行数据写入控制具体可以是通过多个io实例进行共享实现,也可以通过其他方式实现,本发明在此不做限制。
60.在步骤s2中,io实例中的数据由writer接口(写入接口)进行数据写入,writer接口通过request(bytes)接口(io实例中数据写入请求调用接口)发送请求,申请数据写入,bytes为待写入的数据量。
61.在步骤s4中,控制待写入的数据写入,并更新当前第一周期内可写入的数据量具体是:允许writer接口写入待写入的数据,并将当前第一周期内可写入的数据量(avail_bytes)减去当前第一周期内已写入的数据量(bytes)。
62.在步骤s5中,将待写入的数据写入请求放入等待队列,等待下一个第一周期判断执行,即重新执行步骤s3。
63.在步骤s6中,判断当前时间间隔是否达到第二周期,即是否达到多个第一周期,如
果达到多个第一周期,则满足第二周期;如果未达到多个第一周期,则不满足第二周期。例如,第一周期为1ms,第二周期为多个1ms,具体地,可以是100个第一周期,即100ms,则当前时间间隔为100个第一周期(1ms),则满足第二周期(100ms)。
64.如图2所示,步骤s7具体包括:
65.s71,根据第二周期内存在数据写入请求等待的第一周期的数量进行数据写入速率自适应调整;
66.s72,根据调整后的数据写入速率设置当前第一周期内可写入的数据量。
67.在步骤s71

s72中,第一周期内数据写入速率不进行调整,只有当满足第二周期后,才会对下一第二周期内的数据写入速率进行调整,即第二周期内,每个第一周期的数据写入速率相同,即第二周期内,每个当前第一周期内初始的可写入的数据量相同。
68.具体地,如图3所示,步骤s71具体包括:
69.s711,获取当前第二周期内存在数据写入请求等待的第一周期的数量;
70.s712,确定存在数据写入请求等待的第一周期的数量与第二周期内包含第一周期的数量之间比值;
71.s713,根据比值与预设数值的关系,调整下一第二周期内的每个第一周期中的数据写入速率。
72.在步骤s711中,获取当前第二周期内存在数据写入请求等待的第一周期的数量,即当前第二周期内,存在因为当前第一周期内可写入的数据量耗尽导致数据写入请求等待的第一周期的数量a;
73.在步骤s712中,计算存在数据写入请求等待的第一周期的数量a与第二周期内包含第一周期的数量b之间比值c,即c=a/b。
74.在步骤s713中,预设数值可以包括第一预设阈值、第二预设阈值、第三预设阈值,第一预设阈值小于第二预设阈值,且第二预设阈值小于第三预设阈值,根据比值与预设数值的关系,调整下一第二周期内的每个第一周期中的数据写入速率具体是:
75.如果比值小于第一预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第一调整比例的乘积,其中,第一预设数值可以是1%,即比值小于1%时,可以适当降低下一第二周期内的每个第一周期中的数据写入速率,第一调整比例可以是0.1,也可以适当调整,本发明在此不做限制;
76.如果比值大于第一预设阈值且小于第二预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第二调整比例的乘积,其中,第二预设数值可以是50%,即比值大于1%且小于50%时,可以适当降低下一第二周期内的每个第一周期中的数据写入速率,第一调整比例可以是0.95,也可以适当调整,本发明在此不做限制;
77.如果比值大于第二预设阈值且小于第三预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第三调整比例的乘积,其中,第三预设数值可以是90%,即比值小于90%且大于50%时,可以适当增加或降低下一第二周期内的每个第一周期中的数据写入速率,第一调整比例可以是0.98

1.03,也可以适当调整,本发明在此不做限制;
78.如果比值大于第三预设阈值,下一第二周期内的每个第一周期中的数据写入速率
为当前第二周期内的每个第一周期中数据写入速率与第四调整比例的乘积;其中,第一调整比例、第二调整比例、第三调整比例、第四调整比例依次增大,且第一调整比例、第二调整比例小于1,第四调整比例大于1,当比值大于90%时,可以适当增加下一第二周期内的每个第一周期中的数据写入速率,第一调整比例可以是1.05,也可以适当调整,本发明在此不做限制。
79.具体地,在速率调整时,首先由数据写入速率获取接口(getbytespersecond())获取当前第二周期内每个第一周期的数据写入速率(old_bytes_per_sec),可以通过数据写入速率调整接口(tune())、数据写入速率设置接口(setbytespersecond(int64_tbytes_per_sec))调整下一个第二周期内每个第一周期的数据写入速率,也可以通过其他方式实现速率调整,本发明在此不做限制。
80.其中,步骤s72中,根据调整后的数据写入速率设置当前第一周期内可写入的数据量具体是:
81.当前第一周期内可写入的数据量为调整后的数据写入速率均分至各个第一周期内。即当前第一周期内可写入的数据量(avail_bytes)=调整后的数据写入速率(bytes_per_sec,以秒为例)*第一周期时间间隔/第一周期单位与秒的换算,第一周期以ms为例,即当前第一周期内可写入的数据量(avail_bytes)=调整后的数据写入速率(bytes_per_sec)*第一周期时间间隔(ms)/1000000。
82.优选的,当等待队列中包含多个io实例的待写入的数据写入请求或者同一io实例中的多个待写入的数据写入请求时,可以针对等待队列中多个待写入的数据写入请求设置优先级顺序,等待队列中多个待写入的数据写入请求根据待写入的数据写入请求的优先级顺序被下一个第一周期判断执行。
83.具体地,根据待写入的数据写入请求的优先级顺序具体是:
84.等待队列中,高优先级io实例对应的待写入的数据写入请求优先级高于低优先级io实例对应的待写入的数据写入请求;和/或,
85.等待队列中相同优先级io实例对应的待写入的数据写入请求中,先入队的待写入的数据写入请求优先级高于后入队的待写入的数据写入请求。
86.具体地,针对io实例标识进行优先级排序,在待写入的数据写入请求设置对应的io实例标识,标识中携带有该io实例的优先级,以实现高优先级io实例对应的待写入的数据写入请求优先级高于低优先级io实例对应的待写入的数据写入请求。
87.如图4所示,对多个io实例进行数据写入控制之前还包括:
88.s0,进行初始化参数配置以及接口配置。
89.其中,初始化参数配置包括:数据写入最高速率(refill_bytes)、第一周期(refill_period_us)、第二周期(refill_period_us*n)、当前第一周期内可写入的数据量(avail_bytes)、速率调整限制方式(auto_tuned,根据比值与预设数值关系调整下一第二周期数据写入速率);所有初始化参数配置均支持动态修改,即包括:增加、修改、删除等,初始化接口配置包括:io实例中数据写入请求调用接口(request(const int64_t bytes))、数据写入速率获取接口(getbytespersecond())、数据写入速率设置接口(setbytespersecond(int64_t bytes_per_sec))、数据写入速率调整接口(tune())、当前第一周期内可写入的数据量调整接口(refill()),接口同样也可以支持动态修改,即包
括:增加、修改、删除等。
90.需要说明的是,本发明技术方案可以通过组件的方式执行,组件名称可以是rate_limiter,通过初始化配置组件接口、初始化配置组件参数、组件与io实例共享等,执行本发明技术方案中的各个步骤(s0

s7),也可以通过其他方式实现,只要能够实现本发明步骤即可,本发明在此不做限制。
91.本发明有效解决由于现有数据写入速率限制造成限制效果不够理想的问题,有效的提高了数据写入速率限制的可靠性。
92.本发明技术方案通过将数据写入速率控制在可配置的范围内并能够动态修改,能够避免突发性大量数据写入对硬盘造成压力使读请求阻塞的情况,周期性的根据数据写入压力进行速率调整,又能够有效的避免系统性能随写入速率不同而波动的情况,使得分布式存储系统业务能够平稳运行。
93.本发明技术方案中根据第二周期内存在数据写入请求等待的第一周期的数量可以进行数据写入速率自适应调整,根据调整后的数据写入速率设置当前第一周期内可写入的数据量,使得当前第一周期内可以写入的数据量能够根据上一个第二周期内的数据写入压力情况进行调整,以实现自适应调整,提高了数据写入速率调整的便利性以及及时性。
94.本发明技术方案中等待队列中多个待写入的数据写入请求根据待写入的数据写入请求的优先级顺序被下一个第一周期判断执行,便于等待队列中优先级高的数据写入请求可以优先被执行,提高了数据写入速率调整的适应性以及便利性。
95.实施例二
96.如图5所示,本发明技术方案还提供了一种数据写入速率的自适应限流装置,应用于分布式存储系统中,包括:
97.控制模块101,对多个io实例进行数据写入控制;
98.获取解析模块102,获取每个io实例中待写入的数据写入请求,并解析获取数据写入请求中包含的待写入的数据量;
99.对比模块103,根据待写入的数据量判断当前第一周期内可写入的数据量进行对比,如果当前第一周期内可写入的数据量不小于待写入的数据量,控制待写入的数据写入,并更新当前第一周期内可写入的数据量;如果当前第一周期内可写入的数据量小于待写入的数据量,将待写入的数据写入请求放入等待队列,等待下一个第一周期判断执行;
100.调整模块104,判断当前时间间隔是否满足第二周期,如果满足,根据第二周期内存在数据写入请求等待的第一周期的数量进行数据写入速率自适应调整,根据调整后的数据写入速率设置当前第一周期内可写入的数据量;其中,第二周期为多个第一周期。
101.在控制模块101中,对多个io实例进行数据写入控制具体可以是通过多个io实例进行共享实现,也可以通过其他方式实现,本发明在此不做限制。
102.在获取解析模块102中,io实例中的数据由writer接口(写入接口)进行数据写入,writer接口通过request(bytes)接口(io实例中数据写入请求调用接口)发送请求,申请数据写入,bytes为待写入的数据量。
103.在对比模块103中,控制待写入的数据写入,并更新当前第一周期内可写入的数据量具体是:允许writer接口写入待写入的数据,并将当前第一周期内可写入的数据量(avail_bytes)减去当前第一周期内已写入的数据量(bytes)。
104.将待写入的数据写入请求放入等待队列,等待下一个第一周期判断执行,判断当前时间间隔是否达到第二周期,即是否达到多个第一周期,如果达到多个第一周期,则满足第二周期;如果未达到多个第一周期,则不满足第二周期。例如,第一周期为1ms,第二周期为多个1ms,具体地,可以是100个第一周期,即100ms,则当前时间间隔为100个第一周期(1ms),则满足第二周期(100ms)。
105.如图2所示,调整模块104中执行步骤具体包括:
106.根据第二周期内存在数据写入请求等待的第一周期的数量进行数据写入速率自适应调整;
107.根据调整后的数据写入速率设置当前第一周期内可写入的数据量。
108.在调整模块104中,第一周期内数据写入速率不进行调整,只有当满足第二周期后,才会对下一第二周期内的数据写入速率进行调整,即第二周期内,每个第一周期的数据写入速率相同,即第二周期内,每个当前第一周期内初始的可写入的数据量相同。
109.具体地,调整模块104执行的步骤一(根据第二周期内存在数据写入请求等待的第一周期的数量进行数据写入速率自适应调整)具体包括:获取当前第二周期内存在数据写入请求等待的第一周期的数量;确定存在数据写入请求等待的第一周期的数量与第二周期内包含第一周期的数量之间比值;根据比值与预设数值的关系,调整下一第二周期内的每个第一周期中的数据写入速率。
110.获取当前第二周期内存在数据写入请求等待的第一周期的数量,即当前第二周期内,存在因为当前第一周期内可写入的数据量耗尽导致数据写入请求等待的第一周期的数量a;
111.计算存在数据写入请求等待的第一周期的数量a与第二周期内包含第一周期的数量b之间比值c,即c=a/b。
112.预设数值可以包括第一预设阈值、第二预设阈值、第三预设阈值,第一预设阈值小于第二预设阈值,且第二预设阈值小于第三预设阈值,根据比值与预设数值的关系,调整下一第二周期内的每个第一周期中的数据写入速率具体是:
113.如果比值小于第一预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第一调整比例的乘积,其中,第一预设数值可以是1%,即比值小于1%时,可以适当降低下一第二周期内的每个第一周期中的数据写入速率,第一调整比例可以是0.1,也可以适当调整,本发明在此不做限制;
114.如果比值大于第一预设阈值且小于第二预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第二调整比例的乘积,其中,第二预设数值可以是50%,即比值大于1%且小于50%时,可以适当降低下一第二周期内的每个第一周期中的数据写入速率,第一调整比例可以是0.95,也可以适当调整,本发明在此不做限制;
115.如果比值大于第二预设阈值且小于第三预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第三调整比例的乘积,其中,第三预设数值可以是90%,即比值小于90%且大于50%时,可以适当增加或降低下一第二周期内的每个第一周期中的数据写入速率,第一调整比例可以是0.98

1.03,也可以适当调整,本发明在此不做限制;
116.如果比值大于第三预设阈值,下一第二周期内的每个第一周期中的数据写入速率为当前第二周期内的每个第一周期中数据写入速率与第四调整比例的乘积;其中,第一调整比例、第二调整比例、第三调整比例、第四调整比例依次增大,且第一调整比例、第二调整比例小于1,第四调整比例大于1,当比值大于90%时,可以适当增加下一第二周期内的每个第一周期中的数据写入速率,第一调整比例可以是1.05,也可以适当调整,本发明在此不做限制。
117.其中,调整模块104执行的步骤二(根据调整后的数据写入速率设置当前第一周期内可写入的数据量)具体是:
118.当前第一周期内可写入的数据量为调整后的数据写入速率均分至各个第一周期内。即当前第一周期内可写入的数据量(avail_bytes)=调整后的数据写入速率(bytes_per_sec,以秒为例)*第一周期时间间隔/第一周期单位与秒的换算,第一周期以ms为例,即当前第一周期内可写入的数据量(avail_bytes)=调整后的数据写入速率(bytes_per_sec)*第一周期时间间隔(ms)/1000000。
119.优选的,当等待队列中包含多个io实例的待写入的数据写入请求或者同一io实例中的多个待写入的数据写入请求时,可以针对等待队列中多个待写入的数据写入请求设置优先级顺序,等待队列中多个待写入的数据写入请求根据待写入的数据写入请求的优先级顺序被下一个第一周期判断执行。
120.具体地,根据待写入的数据写入请求的优先级顺序具体是:
121.等待队列中,高优先级io实例对应的待写入的数据写入请求优先级高于低优先级io实例对应的待写入的数据写入请求;和/或,
122.等待队列中相同优先级io实例对应的待写入的数据写入请求中,先入队的待写入的数据写入请求优先级高于后入队的待写入的数据写入请求。
123.具体地,针对io实例标识进行优先级排序,在待写入的数据写入请求设置对应的io实例标识,标识中携带有该io实例的优先级,以实现高优先级io实例对应的待写入的数据写入请求优先级高于低优先级io实例对应的待写入的数据写入请求。
124.如图6所示,本发明实施例中还提供的一种数据写入速率的自适应限流装置还包括:
125.初始化配置模块100,进行初始化参数配置以及接口配置。
126.其中,初始化配置模块100的初始化参数配置包括:数据写入最高速率(refill_bytes)、第一周期(refill_period_us)、第二周期(refill_period_us*n)、当前第一周期内可写入的数据量(avail_bytes)、速率调整限制方式(auto_tuned,根据比值与预设数值关系调整下一第二周期数据写入速率);所有初始化参数配置均支持动态修改,即包括:增加、修改、删除等,初始化接口配置包括:io实例中数据写入请求调用接口(request(const int64_tbytes))、数据写入速率获取接口(getbytespersecond())、数据写入速率设置接口(setbytespersecond(int64_t bytes_per_sec))、数据写入速率调整接口(tune())、当前第一周期内可写入的数据量调整接口(refill()),接口同样也可以支持动态修改,即包括:增加、修改、删除等。
127.需要说明的是,本发明技术方案可以通过组件的方式执行,组件名称可以是rate_limiter,通过初始化配置组件接口、初始化配置组件参数、组件与io实例共享等,包括本实
施例中的各个模块,也可以通过其他方式实现,只要能够实现本发明步骤即可,本发明在此不做限制。
128.本发明有效解决由于现有数据写入速率限制造成限制效果不够理想的问题,有效的提高了数据写入速率限制的可靠性。
129.本发明技术方案通过将数据写入速率控制在可配置的范围内并能够动态修改,能够避免突发性大量数据写入对硬盘造成压力使读请求阻塞的情况,周期性的根据数据写入压力进行速率调整,又能够有效的避免系统性能随写入速率不同而波动的情况,使得分布式存储系统业务能够平稳运行。
130.本发明技术方案中根据第二周期内存在数据写入请求等待的第一周期的数量可以进行数据写入速率自适应调整,根据调整后的数据写入速率设置当前第一周期内可写入的数据量,使得当前第一周期内可以写入的数据量能够根据上一个第二周期内的数据写入压力情况进行调整,以实现自适应调整,提高了数据写入速率调整的便利性以及及时性。
131.本发明技术方案中等待队列中多个待写入的数据写入请求根据待写入的数据写入请求的优先级顺序被下一个第一周期判断执行,便于等待队列中优先级高的数据写入请求可以优先被执行,提高了数据写入速率调整的适应性以及便利性。
132.实施例三
133.如图7所示,本发明技术方案还提供了一种电子设备,包括:存储器201,用于存储计算机程序;处理器202,用于执行所述计算机程序时实现如实施例一所述的数据写入速率的自适应限流方法的步骤。
134.本技术实施例中的存储器201用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。可以理解,存储器201可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read

only memory)、可擦除可编程只读存储器(eprom,erasable programmable read

only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read

only memory)、磁性随机存取存储器(fram,ferromagnetic random access memory)、快闪存储器(flashmemory)、磁表面存储器、光盘、或只读光盘(cd

rom,compact disc read

only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random accessmemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronousdynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本技术实施例描述的存储器201旨在包括但不限于这些和任意其它适合类型的存储器。上述本技术实施例揭示的方法可以应用于处理器
202中,或者由处理器202实现。处理器202可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器202中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器202可以是通用处理器、dsp(digital signal processing,即指能够实现数字信号处理技术的芯片),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器202可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器201,处理器202读取存储器201中的程序,结合其硬件完成前述方法的步骤。处理器202执行所述程序时实现本技术实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
135.本发明有效解决由于现有数据写入速率限制造成限制效果不够理想的问题,有效的提高了数据写入速率限制的可靠性。
136.本发明技术方案通过将数据写入速率控制在可配置的范围内并能够动态修改,能够避免突发性大量数据写入对硬盘造成压力使读请求阻塞的情况,周期性的根据数据写入压力进行速率调整,又能够有效的避免系统性能随写入速率不同而波动的情况,使得分布式存储系统业务能够平稳运行。
137.本发明技术方案中根据第二周期内存在数据写入请求等待的第一周期的数量可以进行数据写入速率自适应调整,根据调整后的数据写入速率设置当前第一周期内可写入的数据量,使得当前第一周期内可以写入的数据量能够根据上一个第二周期内的数据写入压力情况进行调整,以实现自适应调整,提高了数据写入速率调整的便利性以及及时性。
138.本发明技术方案中等待队列中多个待写入的数据写入请求根据待写入的数据写入请求的优先级顺序被下一个第一周期判断执行,便于等待队列中优先级高的数据写入请求可以优先被执行,提高了数据写入速率调整的适应性以及便利性。
139.实施例四
140.本发明技术方案还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一所述的数据写入速率的自适应限流方法的步骤。
141.例如包括存储计算机程序的存储器201,上述计算机程序可由处理器202执行,以完成前述方法所述步骤。计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、flash memory、磁表面存储器、光盘、或cd

rom等存储器。
142.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、
ram、磁碟或者光盘等各种可以存储程序代码的介质。
143.本发明有效解决由于现有数据写入速率限制造成限制效果不够理想的问题,有效的提高了数据写入速率限制的可靠性。
144.本发明技术方案通过将数据写入速率控制在可配置的范围内并能够动态修改,能够避免突发性大量数据写入对硬盘造成压力使读请求阻塞的情况,周期性的根据数据写入压力进行速率调整,又能够有效的避免系统性能随写入速率不同而波动的情况,使得分布式存储系统业务能够平稳运行。
145.本发明技术方案中根据第二周期内存在数据写入请求等待的第一周期的数量可以进行数据写入速率自适应调整,根据调整后的数据写入速率设置当前第一周期内可写入的数据量,使得当前第一周期内可以写入的数据量能够根据上一个第二周期内的数据写入压力情况进行调整,以实现自适应调整,提高了数据写入速率调整的便利性以及及时性。
146.本发明技术方案中等待队列中多个待写入的数据写入请求根据待写入的数据写入请求的优先级顺序被下一个第一周期判断执行,便于等待队列中优先级高的数据写入请求可以优先被执行,提高了数据写入速率调整的适应性以及便利性。
147.上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1