一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

流量控制、集群资源保障方法、设备及存储介质与流程

2022-02-21 04:19:13 来源:中国专利 TAG:


1.本技术涉及云计算技术领域,尤其涉及一种流量控制、集群资源保障方法、设备及存储介质。


背景技术:

2.云平台提供的容器服务可使用分布式存储系统存储用户在kubernetes集群中的元信息。在公有云的场景中,多个用户(即多租户)可共享一个数据库集群,从而提升数据库集群利用率,降低成本。
3.但是,多个用户共享一个数据库集群时,多个共享用户可产生大流量的访问请求,这种大流量访问可能导致集群整体不可用或者服务质量下降。现有的流量控制方式,具有部署成本较高的问题。因此,有待提出一种新的解决方案。


技术实现要素:

4.本技术的多个方面提供一种流量控制、集群资源保障方法、设备及存储介质,用以降低多租户场景下的流量控制成本,提升多用户场景下的流量控制的准确性。
5.本技术实施例还提供一种流量控制方法,包括:存储节点接收用户的访问请求;从数据量索引信息中,查询所述访问请求对应的数据量;所述数据量索引信息,用于保存所述存储节点的不同用户在所述存储节点中的可访问数据的数据量;根据所述访问请求对应的数据量以及预设的流量阈值,对所述访问请求进行流量控制。
6.进一步可选地,所述数据量索引信息,采用采用键-值存储结构进行存储;从数据量索引信息中,查询所述访问请求对应的数据量,包括:根据所述用户的标识以及所述访问请求携带的数据标识,确定待查询的键;在所述数据量索引信息中,查询所述待查询的健对应的值,得到所述访问请求的数据量。
7.进一步可选地,根据所述访问请求对应的数据量以及预设的流量阈值,对所述访问请求进行流量控制,包括:确定令牌桶,所述令牌桶的令牌投放速率与所述流量阈值对应;根据所述访问请求对应的数据量,计算所述访问请求所需的令牌数;根据所述令牌桶的剩余令牌数以及所述访问请求所需的令牌数,采用令牌桶算法,对所述访问请求进行流量控制。
8.进一步可选地,所述流量阈值包括:所述存储节点的全局流量阈值,或者,所述用户的单用户流量阈值;根据所述令牌桶的剩余令牌数以及所述访问请求所需的令牌数,采用令牌桶算法,对所述访问请求进行流量控制,包括:判断所述令牌桶中的剩余令牌数是否小于所述访问请求所需的令牌数;若所述令牌桶中的剩余令牌数小于所述访问请求所需的令牌数,则对所述访问请求进行访问异常处理。
9.进一步可选地,所述令牌桶包括:第一令牌桶以及第二令牌桶;所述第一令牌桶的令牌投放速率与所述存储节点的全局流量阈值对应;所述第二令牌桶的令牌投放速率与所述用户的单用户流量阈值对应;根据所述令牌桶的剩余令牌数以及所述访问请求所需的令
牌数,采用令牌桶算法,对所述访问请求进行流量控制,包括:判断所述第一令牌桶中的剩余令牌数是否小于所述访问请求所需的令牌数;若所述第一令牌桶中的剩余令牌数大于或者等于所述访问请求所需的令牌数,则判断所述第二令牌桶中的剩余令牌数是否小于所述访问请求所需的令牌数;若所述第二令牌桶中的剩余令牌数小于所述访问请求所需的令牌数,则对所述访问请求进行访问异常处理。
10.进一步可选地,根据所述访问请求对应的数据量以及预设的流量阈值,对所述访问请求进行流量控制之前,还包括:读取为所述存储节点动态配置的流量策略文件;从所述流量策略文件中,解析得到流量控制操作的启动指令,所述启动指令包括:全局流量控制指令,和/或,单用户流量控制指令;根据所述启动指令,开启所述存储节点的全局流量控制,和/或,单个用户流量控制。
11.进一步可选地,读取为所述存储节点动态配置的流量策略文件之后,还包括:从所述流量策略文件中,解析得到流量控制类型,和/或,流量控制阈值;其中,所述流量控制类型,包括:写入流量控制和/或读取流量控制;其中,所述流量控制阈值,包括:全局流量阈值,和/或,单用户流量阈值。
12.本技术实施例还提供一种数据库集群资源保障方法,所述数据库集群包括多个存储节点,任一存储节点的存储资源被多个用户共享使用;所述方法包括:所述数据库集群中的任一存储节点接收用户的访问请求;从数据量索引信息中,查询所述访问请求对应的数据量;所述数据量索引信息,用于保存所述存储节点的不同用户在所述存储节点中的可访问数据的数据量;根据所述访问请求对应的数据量以及预设的流量阈值,对所述访问请求进行流量控制。
13.本技术实施例还提供一种服务器,包括:存储器、处理器以及通信组件;所述存储器用于存储一条或多条计算机指令;所述处理器用于执行所述一条或多条计算机指令以用于:执行本技术实施例提供的方法中的步骤。
14.本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被处理器执行时能够实现本技术实施例提供的方法中的步骤。
15.本技术实施例提供的流量控制方法中,存储节点接收到用户的访问请求后,可从数据量索引信息中,查询该访问请求对应的数据量,并可根据查询到的数据量以及预设的流量阈值,对访问请求进行流量控制。基于这种实施方式,一方面,存储节点可自主实现访问压力的预测,极大降低了流量控制所需的计算资源的成本。另一方面,存储节点基于访问请求对应的真实数据量进行压力预测,可预测得到访问请求产生的真实压力,从而有利于根据不同的访问请求之间的差异性,精准地进行流量控制。
附图说明
16.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
17.图1为基于proxy(数据库代理组件或者代理服务器)进行流量控制的示意图;
18.图2为本技术一示例性实施例提供的流量控制方法的流程示意图;
19.图3为本技术一示例性实施例提供的数据量索引信息的存储结构的示意图;
20.图4为本技术一示例性实施例提供的存储节点内部的模块及其相互调用关系的示
意图;
21.图5为本技术一示例性实施例提供的服务器的结构示意图。
具体实施方式
22.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
23.云平台提供的容器服务可使用分布式存储系统(例如etcd存储系统)存储用户在kubernetes集群中的元信息。在公有云的场景中,多个用户可共享一个数据库集群,从而提升数据库集群利用率,降低成本。
24.但是,多个用户共享一个数据库集群时,多个共享用户可产生大流量的访问请求,这种大流量访问可能导致集群整体不可用或者服务质量下降。
25.在一种etcd数据库集群的解决方案中,如图1所示,可在客户端与数据库集群etcd之间部署proxy(数据库代理组件或者代理服务器),对用户的读写请求产生的qps(query per second,每秒查询率)进行统计,并基于qps统计结果预估用户的请求压力,从而根据预估到的压力值进行流量限制。若用户的请求压力在数据库集群的压力接收范围内,则proxy可将用户的访问请求转发至数据库集群etcd,否则可向客户端返回错误码(例如被限流错误对应的错误码)。
26.但是,在这种解决方案中,需要额外的计算资源(例如内存、处理器等)运行proxy,增加了流量控制所需的成本。当etcd集群中包含的etcd节点较多时,所需的proxy的数量增加,将耗费大量的计算资源。
27.另外,在这种解决方案中,用户的访问请求的需由客户端发送至proxy,再由proxy转发至对应的etcd节点,这一数据链路较长,当出现稳定性问题时,不易进行排查。
28.同时,在这种解决方案中,基于qps预估访问压力的准确性较低。例如,某个用户在etcd集群中存放有大量数据,用户的一个全量查询将返回大量数据,从而对etcd集群产生较大的压力,甚至可能导致集群出现oom(out of memory,内存溢出)异常。若某个用户在etcd集群中存放的数据量较小,则对用户的查询次数进行限制,将导致用户需要通过多次查询才能够访问到少量的数据,极大影响用户的查询效率。
29.针对上述技术问题,在本技术一些实施例中,提供了一种解决方案,该解决方案可基于qos(quality of service,服务质量)进行流量控制。以下结合附图,详细说明本技术各实施例提供的技术方案。
30.图2为本技术一示例性实施例提供的流量控制方法的流程示意图,如图2所示,该方法包括:
31.步骤201、存储节点接收用户的访问请求。
32.步骤202、从数据量索引信息中,查询所述访问请求对应的数据量;所述数据量索引信息,用于保存所述存储节点的不同用户在所述存储节点中的可访问数据的数据量。
33.步骤303、根据所述访问请求对应的数据量以及预设的流量阈值,对所述访问请求进行流量控制。
34.本实施例由存储节点执行。该存储节点,可以是任一数据库集群中的一台服务器。该服务器可实现为常规服务器、云服务器、云主机、虚拟中心、弹性计算实例等服务器等设备,本实施例对此不做限制。其中,服务器设备的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,不再赘述。
35.其中,该数据库集群,可以是etcd集群、oracle集群、redis集群等数据库集群,本实施例包含但不限于此。数据库集群可以部署在公有云上,以向多用户提供远端的数据库服务。存储节点,可以是上述数据库集群中的一台部署有存储系统的服务器。例如,数据库集群实现为etcd集群时,该存储节点可实现为一台部署有etcd存储系统的服务器,该服务可称为etcd节点(即etcd后端)。当数据库集群实现为oracle集群时,该存储节点可实现为一台部署有oracle存储系统的服务器。其中,用户,指的是使用存储节点提供的数据库服务的用户,或称数据库服务的租户。用户的访问请求,可由数据库服务提供的客户端发送,该客户端运行在用户持有的终端设备上。该终端设备可以是手机、平板电脑、计算机设备等,用户可通过上述终端设备上运行的插件、应用程序或者浏览器等客户端发起针对存储节点的访问请求。
36.其中,客户端与存储节点之间可建立通信连接,进而,客户端可与该通信连接向存储节点发送访问请求。客户端与存储节点之间的通信连接,可基于有线通信方式或者无线通信方式实现。其中,无线通信方式包括蓝牙、zigbee、红外线、wifi(wireless-fidelity,无线保真技术)等短距离通信方式,也包括lora等远距离无线通信方式,还可包括基于移动网络的无线通信方式。其中,当通过移动网络通信连接时,移动网络的网络制式可以为2g(gsm)、2.5g(gprs)、3g(wcdma、td-scdma、cdma2000、utms)、4g(lte)、4g (lte )、5g、wimax等中的任意一种。
37.在本实施例中,存储节点中部署有服务质量管理模块(qos manager)以及流量控制模块(limiter)。其中,服务质量管理模块用于对存储节点的流量控制功能进行整体管理。流量控制模块用于在服务质量管理模块的管理下,实现流量控制。其中,服务质量管理模块以及流量控制模块,可作为功能模块运行在存储节点上,存储节点可启动对应的线程执行上述两个模块对应的功能。相较于现有技术中额外部署proxy进行qps统计的方式而言,这种在存储节点上启动两个线程实现流量控制的方式,不需要额外占用较多的计算资源,可极大降低流量控制的成本。
38.在本实施例中,存储节点可基于流量控制模块,从数据量索引信息中,查询用户在存储节点中将要访问的目标数据的数据量,作为该访问请求的数据量。其中,数据量索引信息,用于保存存储节点的不同用户在存储节点中的可访问数据的数据量。用户的可访问数据,可以是用户存储在存储节点中的数据,也可以是云端的其他服务提供的可供用户使用的资源数据,本实施例不做限制。其中,用户的访问请求中,可携带需要访问的目标数据的数据标识,根据该目标数据的数据标识,可从数据量索引信息中查询到该用户的访问请求对应的数据量。
39.其中,同一用户的不同访问请求对应的数据量不同,不同用户的访问请求对应的数据量也可能不同。基于查询数据量索引信息的方式,可准确地获取每次访问请求的对应的数据量,有利于根据实际的数据量大小,灵活地对存储节点的访问压力进行预测,从而实现精准流量控制。
40.在本实施例中,针对任一用户的访问请求,存储节点查询到该访问请求对应的数据量后,可基于流量控制模块,根据访问请求对应的数据量以及预设的流量阈值,对用户的访问请求进行流量控制。
41.其中,流量阈值可根据存储节点能够承受的访问压力进行设置,本实施例不对该流量阈值的具体取值进行限制。
42.在一些实施例中,存储节点进行流量控制时,可进行全局流量控制。该全局流量控制,是指对存储节点整体的访问流量进行控制,该整体的访问流量可由多个用户产生。在进行全局流量控制时,该流量阈值可包括全局流量阈值。该全局流量阈值可用于描述存储节点在单位时间内所能承受的流量的上限值。例如,某一存储节点的全局流量阈值为30m/s,或者为50m/s。
43.在另一些实施例中,存储节点进行流量控制时,可进行单用户流量控制。该单用户流量控制,是指对单个用户对存储节点的访问流量进行控制。在进行单用户流量控制时,该流量阈值可包括单用户流量阈值。单用户流量阈值,可用于描述用户在单位时间内可使用的流量的上限值。其中,存储节点向多个用户提供服务时,多个用户可具有相同的单用户流量阈值,也可具有不同的单用户流量阈值,本实施例不做限制。例如,用户a的单用户流量阈值为5m/s,用户b的单用户流量阈值为3m/s。
44.在本实施例中,存储节点接收到用户的访问请求后,可从数据量索引信息中,查询该访问请求对应的数据量,并可根据查询到的数据量以及预设的流量阈值,对访问请求进行流量控制。基于这种实施方式,一方面,存储节点可自主实现访问压力的预测,极大降低了流量控制所需的计算资源的成本。另一方面,存储节点基于访问请求对应的真实数据量进行压力预测,可预测得到访问请求产生的真实压力,从而有利于根据不同的访问请求之间的差异性,精准地进行流量控制。
45.在一些示例性的实施例中,可预先建立用户的可访问数据的数据量索引信息,以便于存储节点在接收到访问请求后,从预设的数据量索引信息中,查询该访问请求对应的数据量。
46.可选地,存储节点可获取存储节点的不同用户各自对应的可访问数据的数据量,并采用键-值(key-value)存储结构,对该不同用户各自对应的可访问数据的数据量进行存储,得到数据量索引信息。其中,可将用户的标识以及数据的标识作为键,将数据的数据量作为值。
47.基于此,流量控制模块从数据量索引信息中,查询访问请求对应的数据量时,可根据发送该访问请求的用户的标识以及该访问请求携带的数据标识,确定待查询的键;在数据量索引信息中,查询该键对应的值,得到访问请求的数据量。
48.可选地,该数据量索引信息可采用b tree(b 树)的数据结构进行存储。如图3所示,b tree包含三层节点,中间层的节点用于存储用户标识,以区分共享存储节点的多个用户。每一中间层的节点,可对应多个叶子节点,用户的可访问数据的标识以及数据量存储在叶子节点中。例如,用户a的数据量索引信息为:[key=a/pod,value=size:3],[key=a/pod1,value=size:4]。用户b的数据量索引信息为:[key=b/pod,value=size:2]。用户b的数据量索引信息为:[key=c/pod,value=size:6],[key=c/pod2,value=size:9]。其中,size为表示数据量的字段。
[0049]
在本实施例中,数据量索引信息可由存储节点中的数据量索引模块维护。其中,该数量索引模块可向流量控制模块提供多个操作接口,包括:查询接口、更新接口、删除接口以及写入接口。
[0050]
可选地,查询接口,可包括:单个查询接口以及全量查询接口中的至少一种。流量控制模块可根据访问请求携带的数据查询范围,调用单个查询接口或全量查询接口,查询访问请求对应的数据量。
[0051]
其中,单个查询接口用于查询某个键对应的值。例如,沿用上述例子,流量控制模块可调用该单个查询接口,查询key=a/pod的值。该单个查询接口返回的值为value=size:3。
[0052]
其中,全量查询接口,用于查询某个用户对应的所有键对应的值的总和。例如,沿用上述例子,流量控制模块可调用该全量查询接口,查询key=a/pod以及key=a/pod1的值。该全量查询接口返回的值为size:7。
[0053]
其中,更新接口、删除接口以及写入接口,用于对数据量索引信息进行更新。当用户的访问请求对该用户的可访问数据进行修改后,数据量索引模块可调用对应的接口,实时更新该数据量索引信息。
[0054]
可选地,流量控制模块可根据用户的数据删除操作,调用数据量索引模块提供的删除接口,删除b tree中对应的键-值对。例如,用户a删除pod时,数据量索引模块可在b tree中删除存储有键-值对[key=a/pod,value=size:3]的叶子节点。
[0055]
可选地,流量控制模块可根据用户的数据写入操作,调用数据量索引模块提供的写入接口,在b tree中新增键-值对。例如,用户b新增数据量大小为5的pod2时,数据量索引模块可在b tree中增加用户b的叶子节点,该新增的叶子节点存储的键-值对为:[key=b/pod2,value=size:5]。
[0056]
可选地,流量控制模块可根据用户的数据修改操作,调用数据量索引模块提供的更新接口,在b tree中修改键-值对中的值的大小。例如,用户c从pod中删除一部分数据时,数据量索引模块可在b tree中更新key=c/pod对应的值。
[0057]
基于上述接口,存储节点可灵活地对数据量索引信息进行使用并维护,为流量控制提供良好的数据基础。
[0058]
在这种实施方式中,通过建立用户的可访问数据的数据量对应的索引信息,可记录每个用户的可访问数据的真实大小,在用户发起访问请求时,可在执行用户的访问请求之前,准确地预估出用户的请求压力的大小。该预估出的请求压力可反映出存储节点的真实压力,从而准确地实现流量控制。
[0059]
在一些示例性的实施例中,流量控制模块可根据访问请求对应的数据量以及预设的流量阈值,采用令牌桶算法(token bucket)对用户的访问请求进行流量控制。以下将进行具体说明。
[0060]
在令牌桶算法中,存在一具有特定容量的令牌桶,假设令牌桶的容量为b。可设置令牌投放速率为r/s,即,每秒钟有r个令牌被投放至令牌桶。当令牌桶中存放有b个令牌后,新投放的令牌将会被丢弃。当一个n个字节的数据包到达时,若令牌桶中剩余的令牌数大于或者等于n个,则可从令牌桶中删除n个令牌,并将该数据包发送至网络。若该令牌桶中剩余的令牌数小于n个,则可认为该数据包被限流。
[0061]
基于上述令牌桶算法进行流量控制时,可选地,可确定流量控制算法所使用的令牌桶,该令牌桶的令牌投放速率与预设的流量阈值对应。其中,流量阈值可以为存储节点每秒承受的流量的上限值。令牌投放速率可以为每秒向令牌桶投放的令牌的数量。
[0062]
流量控制模块可根据用户的访问请求对应的数据量,计算该访问请求所需的令牌数,并根据令牌桶的剩余令牌数以及访问请求所需的令牌数,采用令牌桶算法,对该访问请求进行流量控制。
[0063]
在一些实施例中,可设置一个比特(bit)对应一个令牌,可设置一个字节(byte)对应一个令牌,也可设置一个千字节(kb)对应一个令牌,具体可根据访问请求的数据量的上下限范围设置,本实施例不做限制。
[0064]
可选地,以一个字节对应一个令牌为例,根据用户的访问请求对应的数据量,计算该访问请求所需的令牌数时,可将访问请求对应的数据量转化为字节流,其中,一个字节对应令牌桶中的一个令牌。例如,用户的某一访问请求对应的数据量为2kb,转化为字节流后,该访问请求对应的字节数为2048byte。那么执行该访问请求所需的令牌数为2048个。在一些可选的实施例a中,存储节点可提供全局限流功能。
[0065]
在这种实施例中,流量控制模块所使用的流量阈值包括:存储节点的全局流量阈值。可选地,令牌桶的令牌投放速率可以等于该全局流量阈值。例如,假设全局流量阈值为30m/s时,若一个字节对应一个令牌时,则可按照(30*1024*1024)/s的速率,向令牌桶中投放令牌。
[0066]
流量控制模块根据令牌桶的剩余令牌数以及访问请求所需的令牌数,采用令牌桶算法,对访问请求进行流量控制,时,可判断令牌桶中的剩余令牌数是否小于该访问请求所需的令牌数。若令牌桶中的剩余令牌数小于访问请求所需的令牌数,则对该访问请求进行访问异常处理。若令牌桶中的剩余令牌数大于或者等于访问请求所需的令牌数,则执行该访问请求,并从令牌桶的剩余令牌数中减去该访问请求所需的令牌数。
[0067]
基于沿用上述例子,若令牌桶中剩余的令牌数大于或者等于2048个,则执行该访问请求。若令牌桶中剩余的令牌数小于2048个,则可对该访问请求进行访问异常处理。
[0068]
在一些可选的实施例b中,存储节点可提供单用户限流功能。
[0069]
在这种实施例中,流量控制模块所使用的流量阈值包括:用户的单用户流量阈值。可选地,令牌桶的令牌投放速率可以等于该单用户流量阈值。例如,假设单用户流量阈值为5m/s时,若一个字节对应一个令牌时,则可按照(5*1024*1024)/s的速率,向令牌桶中投放令牌。
[0070]
流量控制模块根据令牌桶的剩余令牌数以及访问请求所需的令牌数,采用令牌桶算法,对所述访问请求进行流量控制时,可判断令牌桶中的剩余令牌数是否小于访问请求所需的令牌数;若令牌桶中的剩余令牌数小于访问请求所需的令牌数,则对访问请求进行访问异常处理。若令牌桶中的剩余令牌数大于或者等于访问请求所需的令牌数,则执行该访问请求,并从令牌桶的剩余令牌数中减去该访问请求所需的令牌数。
[0071]
在一些可选的实施例c中,存储节点可同时提供全局限流功能以及单用户限流功能。
[0072]
在这种实施方式中,用于执行令牌桶算的令牌桶可包括:第一令牌桶以及第二令牌桶。其中,第一令牌桶的令牌投放速率与存储节点的全局流量阈值对应,用于进行全局限
流操作。第二令牌桶的令牌投放速率与用户的单用户流量阈值对应,用于执行单用户的限流操作。
[0073]
例如,假设全局流量阈值为100m/s,单用户流量阈值为10m/s。若一个字节对应一个令牌,则可按照(100*1024*1024)/s的速率,向第一令牌桶中投放令牌,并按照(10*1024*1024)/s的速率,向第二令牌桶中投放令牌。
[0074]
其中,当存储节点上具有多个用户时,每个用户的单用户流量阈值可以相同,也可以不同,本实施例不做限制。
[0075]
其中,针对某一用户的访问请求,流量控制模块可先进行全局限流操作,再进行单用户限流操作。即,采用令牌桶算法对所述访问请求进行流量控制时,流量控制模块可首先判断第一令牌桶中的剩余令牌数是否小于访问请求所需的令牌数;若第一令牌桶中的剩余令牌数大于或者等于该访问请求所需的令牌数,则可认为全局流量并未超过限流阈值。接下来,流量控制模块判断第二令牌桶中的剩余令牌数是否小于访问请求所需的令牌数;若第二令牌桶中的剩余令牌数大于或者等于访问请求所需的令牌数,则执行该访问请求,并从第二令牌桶的剩余令牌数中减去该访问请求所需的令牌数。若第二令牌桶中的剩余令牌数小于访问请求所需的令牌数,则对所述访问请求进行访问异常处理。
[0076]
在上述实施例中,实现了精准的全局限流、单用户限流以及全局和单用户同时限流。在全局限流和单用户限流并存的场景中,流量控制模块可支持“超卖”限流。即,单用户流量阈值与用户数量的乘积得到的流量总数,大于全局流量阈值。例如,假设,全局流量阈值为30m/s,存储节点被30个用户共享时,可设置单用户流量阈值为5m/s。相对于将单用户流量阈值设置为1m/s的方案而言,这种“超卖”的方案,可充分利用存储节点的资源,可优先保证部分用户具有较好的服务质量。
[0077]
在本技术的上述以及下述各实施例中,在多种限流的场景下,当访问请求所需的令牌数不足时,流量控制模块对访问请求进行访问异常处理。可选地,该访问异常处理可包括:将访问请求添加至等待队列中,直至令牌桶中累计足够可用的令牌数。在这种实施方式中,可预先设置等待时长阈值,例如可将等待时长阈值设置为10s、5s等。若访问请求在等待队列中的等待时长超过预设的等待时长阈值后,令牌数仍旧不足,则可进行超时重试。
[0078]
可选地,流量控制模块对问请求进行访问异常处理,还可包括:向客户端返回访问请求出现错误的提示信息。其中,该提示消息可包含访问繁忙、服务器当前压力大的信息,并可提示用户稍后重试。
[0079]
可选地,流量控制模块对访问请求进行访问异常处理,可包括:对目标数据的数据分片进行访问,该数据分片的大小与第二令牌桶中的剩余令牌数对应。在这种实施方式中,可将用户的可访问数据进行分片处理,得到多个数据分片。其中,每个分片的大小可根据需求设置。例如,在一些实施例中,可设置每个数分片的大小为20b、50b或者100b等等。当第二令牌桶中的剩余令牌数与数据分片的大小匹配时,则可从访问请求对应的目标数据中读取一个数据分片。基于这种实施方式,可在流量限制的情况下,采用分批次的方式访问目标数据,满足部分场景的数据访问需求。
[0080]
在上述各实施例的基础上,本技术实施例还提供了一种热加载限流策略的方式,该热加载限流策略的操作可基于存储节点中的服务质量配置模块实现。可选地,根据访问请求对应的数据量以及预设的流量阈值,对访问请求进行流量控制之前,存储节点可基于
服务质量配置模块读取为存储节点动态配置的流量策略文件。其中,该流量策略文件可以是开发人员通过开发终端下发的。
[0081]
存储节点获取到流量策略文件后,可对该流量策略文件进行解析,以从流量策略文件中,解析得到流量控制操作的启动指令。其中,启动指令可包括:全局流量控制指令,和/或,单用户流量控制指令。开发人员可根据流量控制的需求,在流量策略文件中配置全局流量控制指令、单用户流量控制指令或者同时配置全局流量控制指令和单用户流量控制指令。
[0082]
若启动指令包括全局流量控制指令,则存储节点可根据全局流量控制指令,开启存储节点的全局流量控制。在全局流量控制开启后,可基于前述实施例a执行流量控制方法。
[0083]
若启动指令包括单用户流量控制指令,则存储节点可根据该全局流量控制指令,开启存储节点的单个用户流量控制。在单用户流量控制开启后,可基于前述实施例b执行流量控制方法。
[0084]
若启动指令包括全局流量控制指令以及单用户流量控制指令,则存储节点可根据这两种启动指令,开启存储节点的全局流量控制以及单个用户流量控制。在全局流量控制以及单用户流量控制开启后,可基于前述实施例c执行流量控制方法。
[0085]
在一些可选的实施例中,流量策略文件除可配置是否开启流量控制的指令外,还可进一步配置流量控制类型和/或流量控制阈值。其中,其中,流量控制类型,可包括:写入流量控制和/或读取流量控制。流量控制阈值,包括:全局流量阈值,和/或,单用户流量阈值。
[0086]
基于此,存储节点在读取为存储节点动态配置的流量策略文件之后,还可进一步从该流量策略文件中,解析得到流量控制类型,和/或,流量控制阈值。基于该流量控制类型,可启动写入流量控制操作,或者,读取流量控制操作,或者同时启动写入流量控制操作以及读取流量控制操作。其中,该全局流量阈值可用于前述实施例记载的全局流量控制操作中,该单用户流量阈值可用于前述实施例记载的单用户流量控制操作中,不再赘述。
[0087]
基于上述实施例,可通过流量策略文件对流量控制的配置参数进行灵活变动,可在对存储节点进行重启的情况下实现流量控制策略的热更新,进一步降低了对用户侧的应用产生的影响。
[0088]
图5以存储节点实现为etcd节点为例,示意了基于etcd节点实现的流量控制方法。如图5所示,etcd节点中新增服务质量管理模块、流量控制模块、数据量索引模块以及服务质量配置模块。其中,服务质量管理模块与etcd节点中的etcd backend(etcd的存储引擎)连接,且与新增的流量控制模块和服务质量配置模块连接。其中,流量控制模块与新增的数据量索引模块连接。
[0089]
在向用户提供数据库服务时,etcd节点可通过远程过程调用接口(grpc api)接收客户端发送的访问请求。接收到访问请求后,etcd节点中的etcd backend可将访问请求发送至服务质量管理模块。服务质量管理模块可调用流量控制模块,从数据量索引模块中查询数据量索引信息,得到该访问请求的数据量。
[0090]
获取到访问请求的数据量后,服务质量管理模块可调用流量控制模块,基于令牌桶算法进行限流控制。在限流控制之前,服务质量管理模块可从服务质量管理模块中,热加
载流量控制的策略文件。该策略文件中,可指示限流方式,即全局限流、单用户限流或者同时进行全局限流和单用户限流。该策略文件中,还可指示限流阈值。服务质量管理模块从策略文件中解析到限流方式以及限流阈值后,可根据限流方式启动对应的限流操作,并调用流量控制模块根据限流阈值以及查询到的数据量进行限流计算。
[0091]
若流量控制模块的计算结果指示无限流,则可读取访问请求所需的数据,并返回操作结果。若流量控制模块的计算结果指示有限流,则可将该访问请求加入等待队列中进行排队等待,并判断该访问请求是否在延迟范围内排到服务。若为是,则返回操作结果;若为否,则可返回限流错误码,或者进行超时重试,不在赘述。
[0092]
在这种实施方式中,将限流功能内聚到了etcd节点内部,可避免引入额外的数据库代理组件,降低了限流功能的部署成本;同时,未引入额外的数据库代理组件的情况下,缩短了用户的数据请求的链路长度,有利于在限流功能故障时快速进行问题排查。
[0093]
除前述实施例提供的流量控制方法之外,本技术实施例还提供了一种数据库集群的资源保障方法。该数据库集群包括多个存储节点,任一存储节点的存储资源被多个用户共享使用。其中,该数据库集群,可以是etcd集群、oracle集群、redis集群等数据库集群,本实施例包含但不限于此。数据库集群可以部署在公有云上,以向多用户提供远端的数据库服务。存储节点,可以是上述数据库集群中的一台部署有存储系统的服务器。
[0094]
其中,为保障数据库集群能向多个共享用户提供高质量的数据库服务,数据库集群中的每个节点可执行前述各实施例记载的流量控制方法。即,数据库集群中的任一存储节点接收用户的访问请求,并从数据量索引信息中,查询该访问请求对应的数据量。其中,该数据量索引信息,用于保存该存储节点的不同用户在该存储节点中的可访问数据的数据量。获取到访问请求对应的数据量后,存储节点可根据访问请求对应的数据量以及预设的流量阈值,对该访问请求进行流量控制。
[0095]
当数据库集群中的每个节点均执行上述流量控制方法后,每个存储节点可存储节点基于访问请求对应的真实数据量进行压力预测,可预测得到访问请求产生的真实压力,从而有利于根据不同的访问请求之间的差异性,精准地进行流量控制。当每个节点均实现精准的流量控制操作后,数据库集群的服务性能将得到良好保障。
[0096]
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤201至步骤204的执行主体可以为设备a;又比如,步骤201和202的执行主体可以为设备a,步骤203的执行主体可以为设备b;等等。
[0097]
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
[0098]
需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
[0099]
图5示意了本技术一示例性实施例提供的服务器的结构示意图,该服务器适用于前述实施例提供的流量控制方法。如图5所示,该服务器包括:存储器501、处理器502以及通信组件503。
[0100]
其中,存储器501可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0101]
存储器501,用于存储计算机程序,并可被配置为存储其它各种数据以支持在服务器上的操作。这些数据的示例包括用于在服务器上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
[0102]
处理器502,与存储器501耦合,用于执行存储器501中的计算机程序,以用于:通过通信组件503接收用户的访问请求;从数据量索引信息中,查询所述访问请求对应的数据量;所述数据量索引信息,用于保存所述存储节点的不同用户在所述存储节点中的可访问数据的数据量;根据所述访问请求对应的数据量以及预设的流量阈值,对所述访问请求进行流量控制。
[0103]
进一步可选地,所述数据量索引信息,采用采用键-值存储结构进行存储;处理器502在从数据量索引信息中,查询所述访问请求对应的数据量,包括:根据所述用户的标识以及所述访问请求携带的数据标识,确定待查询的键;在所述数据量索引信息中,查询所述待查询的健对应的值,得到所述访问请求的数据量。
[0104]
进一步可选地,处理器502在根据所述访问请求对应的数据量以及预设的流量阈值,对所述访问请求进行流量控制时,具体用于:确定令牌桶,所述令牌桶的令牌投放速率与所述流量阈值对应;根据所述访问请求对应的数据量,计算所述访问请求所需的令牌数;根据所述令牌桶的剩余令牌数以及所述访问请求所需的令牌数,采用令牌桶算法,对所述访问请求进行流量控制。
[0105]
进一步可选地,所述流量阈值包括:所述存储节点的全局流量阈值,或者,所述用户的单用户流量阈值;处理器502在根据所述令牌桶的剩余令牌数以及所述访问请求所需的令牌数,采用令牌桶算法,对所述访问请求进行流量控制时,具体用于:判断所述令牌桶中的剩余令牌数是否小于所述访问请求所需的令牌数;若所述令牌桶中的剩余令牌数小于所述访问请求所需的令牌数,则对所述访问请求进行访问异常处理。
[0106]
进一步可选地,所述令牌桶包括:第一令牌桶以及第二令牌桶;所述第一令牌桶的令牌投放速率与所述存储节点的全局流量阈值对应;所述第二令牌桶的令牌投放速率与所述用户的单用户流量阈值对应;处理器502在根据所述令牌桶的剩余令牌数以及所述访问请求所需的令牌数,采用令牌桶算法,对所述访问请求进行流量控制时,具体用于:判断所述第一令牌桶中的剩余令牌数是否小于所述访问请求所需的令牌数;若所述第一令牌桶中的剩余令牌数大于或者等于所述访问请求所需的令牌数,则判断所述第二令牌桶中的剩余令牌数是否小于所述访问请求所需的令牌数;若所述第二令牌桶中的剩余令牌数小于所述访问请求所需的令牌数,则对所述访问请求进行访问异常处理。
[0107]
进一步可选地,处理器502在对所述访问请求进行访问异常处理时,具体用于:将所述访问请求添加至等待队列中;或者,返回所述访问请求出现错误的提示信息;或者,对所述访问请求对应的目标数据的数据分片进行访问,所述数据分片的大小与所述第二令牌桶中的剩余令牌数对应。
[0108]
进一步可选地,处理器502在根据所述访问请求对应的数据量以及预设的流量阈
值,对所述访问请求进行流量控制之前,还用于:读取为所述存储节点动态配置的流量策略文件;从所述流量策略文件中,解析得到流量控制操作的启动指令,所述启动指令包括:全局流量控制指令,和/或,单用户流量控制指令;根据所述启动指令,开启所述存储节点的全局流量控制,和/或,单个用户流量控制。
[0109]
进一步可选地,处理器502在读取为所述存储节点动态配置的流量策略文件之后,还用于:从所述流量策略文件中,解析得到流量控制类型,和/或,流量控制阈值;其中,所述流量控制类型,包括:写入流量控制和/或读取流量控制;其中,所述流量控制阈值,包括:全局流量阈值,和/或,单用户流量阈值。
[0110]
图5中仅示意性给出部分组件,并不意味着服务器只包括图5所示组件。
[0111]
其中,通信组件503被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如wifi,2g、3g、4g或5g,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件可基于近场通信(nfc)技术、射频识别(rfid)技术、红外数据协会(irda)技术、超宽带(uwb)技术、蓝牙(bt)技术和其他技术来实现。
[0112]
本实施例中,服务器接收到用户的访问请求后,可从数据量索引信息中,查询该访问请求对应的数据量,并可根据查询到的数据量以及预设的流量阈值,对访问请求进行流量控制。基于这种实施方式,一方面,存储节点可自主实现访问压力的预测,极大降低了流量控制所需的计算资源的成本。另一方面,存储节点基于访问请求对应的真实数据量进行压力预测,可预测得到访问请求产生的真实压力,从而有利于根据不同的访问请求之间的差异性,精准地进行流量控制。
[0113]
相应地,本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由服务器执行的各步骤。
[0114]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0115]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0116]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0117]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计
算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0118]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0119]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0120]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0121]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0122]
以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献