一种数据访问方法和应用服务器
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据访问方法和一种应用服务器。
背景技术
分布式系统(Distributed System)是建立在网络之上的软件系统。在分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就如同一个系统。因此,可以在分布式系统中采用集群构成的系统架构,而对于分布式系统中的访问请求,可以将访问请求分散到应用集群上提供服务。
如图1所述为一种分布式系统结构图,该分布式系统包括应用集群和存储集群。应用集群中包括多个应用服务器,且存储集群中包括多个存储服务器。针对应用服务器接收的业务访问请求,应用服务器会铜鼓数据访问请求向存储服务器获取存储数据。
其中,分布式系统采用固定的数据访问参数将访问同一、单一的存储服务器,如图1中,应用服务器1到n均的数据访问均访问存储服务器2。当该数据访问参数的对应的数据量较大,则在海量数据访问下就会出现存储服务器的网络带宽或IO资源被占满的情况,会导致该存储服务器不可用,继而引发访问雪崩的问题。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种数据访问方法,以防止由于访问量过大而导致存储服务器不可用的问题。
发明内容
本申请实施例所要解决的技术问题是提供一种数据访问方法,以防止由于访问量过大而导致存储服务器不可用的问题。
相应的,本申请实施例还提供了一种应用服务器,用以保证上述方法的实现及应用。
为了解决上述问题,本申请公开了一种数据访问方法,包括:预置存储集群的访问后缀列表,其中所述访问后缀列表中一个后缀对应所述存储集群中的一个存储服务器;获取数据访问参数,并确定所述数据访问参数对应的第一存储服务器;当检测到达到所述第一存储服务器的热点触发阈值时,从所述访问后缀列表中随机选取至少一个后缀,并为所述数据访问参数添加后缀;访问添加后缀的数据访问参数对应的第二存储服务器以获取存储数据。
可选的,所述的方法还包括对第一存储服务器的热点触发阈值进行检测的步骤:检测对所述第一存储服务器的数据访问信息是否达到所述第一存储服务器的以下任一种热点触发阈值:带宽热点触发阈值,和,访问热点触发阈值。
可选的,为预置存储集群的访问后缀列表,包括:基于所述存储集群中存储服务器的数量生成至少一个随机数;将每个随机数作为一个后缀生成访问后缀列表。
可选的,访问添加后缀的数据访问参数对应的第二存储服务器以获取存储数据,包括:随机选取一个添加后缀的数据访问参数;向所述添加后缀的数据访问参数对应的第二存储服务器发送数据访问请求,所述数据访问请求中包括所述添加后缀的数据访问参数;接收所述第二存储服务器基于所述数据访问请求反馈的存储数据。
可选的,还包括预先配置带宽热点触发阈值的步骤:针对所述第一存储服务器所在的存储集群,依次获取所述存储集群中每个存储服务器的带宽热点信息,其中所述带宽热点信息包括:所述存储服务器的带宽值、带宽预留比例值、业务数据大小以及应用集群中应用服务器的数量;按照每个存储服务器的带宽热点信息依次计算每个存储服务器的带宽热点触发阈值。
可选的,还包括预先配置访问热点触发阈值的步骤:针对所述第一存储服务器所在的存储集群,依次获取所述存储集群中每个存储服务器的访问热点信息,其中所述访问热点信息包括:所述存储服务器的数据访问阈值、访问量预留比例值以及应用集群中应用服务器的数量;按照每个存储服务器的访问热点信息依次计算每个存储服务器的访问热点触发阈值。
可选的,获取数据访问请求中数据访问参数之后,还包括:累计基于所述数据访问参数对所述第一存储服务器进行访问的数据访问信息;当所述数据访问信息超过预置的访问量监控阈值时,执行对第一存储服务器的热点触发阈值进行检测的步骤。
可选的,执行对第一存储服务器的热点触发阈值进行检测的步骤包括:检测对所述第一存储服务器的数据访问信息是否达到所述第一存储服务器的访问热点触发阈值;当未达到所述访问热点触发阈值时,所述的方法还包括:当从所述带宽热点参数表中检测到所述数据访问参数时,执行对第一存储服务器的带宽热点触发阈值进行检测的步骤。
可选的,所述的方法还包括:当检测到所述数据访问信息超过预置的带宽监控阈值时,将所述数据访问参数添加到所述带宽热点参数表中。
可选的,所述的方法还包括:当所述数据访问参数对应的数据发生变更时,对添加后缀的各数据访问参数对应的存储服务器中存储数据进行更新。
相应的,本申请还公开了一种应用服务器,包括:列表预置模块,用于预置存储集群的访问后缀列表,其中所述访问后缀列表中一个后缀对应所述存储集群中的一个存储服务器;获取模块,用于获取数据访问参数,并确定所述数据访问参数对应的第一存储服务器;后缀添加模块,用于当检测到达到所述第一存储服务器的热点触发阈值时,从所述访问后缀列表中随机选取至少一个后缀,并为所述数据访问参数添加后缀;访问模块,用于从添加后缀的数据访问参数对应的第二存储服务器中获取存储数据。
可选的,所述的应用服务器,还包括:第一检测模块,用于检测对所述第一存储服务器的数据访问信息是否达到所述第一存储服务器的以下任一种热点触发阈值:带宽热点触发阈值,和,访问热点触发阈值。
可选的,所述列表预置模块,包括:随机数生成子模块,用于基于所述存储集群中存储服务器的数量生成至少一个随机数;列表生成子模块,用于将每个随机数作为一个后缀生成访问后缀列表。
可选的,所述访问模块,包括:参数选取子模块,用于随机选取一个添加后缀的数据访问参数;发送子模块,用于向所述添加后缀的数据访问参数对应的第二存储服务器发送数据访问请求,所述数据访问请求中包括所述添加后缀的数据访问参数;接收子模块,用于接收所述第二存储服务器基于所述数据访问请求反馈的存储数据。
可选的,还包括:带宽热点触发阈值配置模块,用于针对所述第一存储服务器所在的存储集群,依次获取所述存储集群中每个存储服务器的带宽热点信息,其中所述带宽热点信息包括:所述存储服务器的带宽值、带宽预留比例值、业务数据大小以及应用集群中应用服务器的数量;按照每个存储服务器的带宽热点信息依次计算每个存储服务器的带宽热点触发阈值。
可选的,还包括:访问热点触发阈值配置模块,用于针对所述第一存储服务器所在的存储集群,依次获取所述存储集群中每个存储服务器的访问热点信息,其中所述访问热点信息包括:所述存储服务器的数据访问阈值、访问量预留比例值以及应用集群中应用服务器的数量;按照每个存储服务器的访问热点信息依次计算每个存储服务器的访问热点触发阈值。
可选的,还包括:访问信息累计模块,用于累计基于所述数据访问参数对所述第一存储服务器进行访问的数据访问信息;第二检测模块,用于当所述数据访问信息超过预置的访问量监控阈值时,触发第一检测模块执行对第一存储服务器的热点触发阈值的检测。
可选的,所述第一检测模块,用于检测对所述第一存储服务器的数据访问信息是否达到所述第一存储服务器的访问热点触发阈值;所述的应用服务器还包括:第三检测模块,用于当未达到所述访问热点触发阈值,且从所述带宽热点参数表中检测到所述数据访问参数时,触发第一检测模块执行对第一存储服务器的带宽热点触发阈值进行检测的步骤。
可选的,还包括:参数表添加模块,用于当检测到所述数据访问信息超过预置的带宽监控阈值时,将所述数据访问参数添加到所述带宽热点参数表中。
可选的,还包括:更新模块,用于当所述数据访问参数对应的数据发生变更时,对添加后缀的各数据访问参数对应的存储服务器中存储数据进行更新。
与现有技术相比,本申请实施例包括以下优点:
在本申请实施例中,预先配置存储集群的访问后缀列表,该访问后缀列表中一个后缀对应所述存储集群中的一个存储服务器,从而在当前数据访问参数达到对应第一存储服务器的热点触发阈值时,可以从该访问后缀列表中随机选取后缀添加给所述数据访问参数,由于每个添加后缀的数据访问参数对应存储集群中的一个存储服务器,可以从访问添加后缀的数据访问参数对应的第二存储服务器以获取存储数据,即不再访问数据访问参数对应的第一存储服务器,减少了第一存储服务器中的访问数据量,防止该服务器由于访问数据量过大而出现不可用甚至雪崩的问题。
附图说明
图1是背景技术提供的一种分布式系统结构图;
图2是本申请实施例一的数据访问方法的步骤流程图;
图3是本申请实施例提供的分布式系统结构框图;
图4是本发明实施例二所述的第一种数据访问方法的步骤流程图;
图5是本发明实施例二所述的第二种数据访问方法的步骤流程图;
图6是本发明实施例三所述的数据访问方法的步骤流程图;
图7是本申请实施例四的应用服务器的结构框图;
图8A、B和C是本申请实施例四的应用服务器的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例的核心构思之一在于,提出一种数据访问方法,以防止由于访问量过大而导致存储服务器不可用的问题。本申请实施例预先配置存储集群的访问后缀列表,该访问后缀列表中一个后缀对应所述存储集群中的一个存储服务器,从而在当前数据访问参数达到对应第一存储服务器的热点触发阈值时,可以从该访问后缀列表中随机选取后缀添加给所述数据访问参数,由于每个添加后缀的数据访问参数对应存储集群中的一个存储服务器,可以从访问添加后缀的数据访问参数对应的第二存储服务器以获取存储数据,即不再访问数据访问参数对应的第一存储服务器,减少了第一存储服务器中的访问数据量,防止该服务器由于访问数据量过大而出现不可用甚至雪崩的问题。
实施例一
参照图2,示出了本申请实施例一的数据访问方法的步骤流程图,具体可以包括如下步骤:
步骤202,预置存储集群的访问后缀列表。
如图3所示的分布式系统结构框图,在分布式数据访问系统包括应用集群和存储集群,其中,应用集群由1~n个应用服务器构成,n为正整数;存储集群由1~k个存储服务器构成,k为正整数。
对于应用集群中的应用服务器,在默认情况下,携带特定数据访问参数的数据访问请求会访问特定的存储服务器。但是,当一个存储服务器的访问数据量过大时,为了防止该存储服务器由于访问量而可能出现不可用的情况,可以停止对该存储服务器的访问,转由访问存储集群中的其他存储服务器,以减少该存储服务器的访问流量。
其中,系统中配置了数据访问参数与存储服务器之间的对应关系,以保证在默认情况下,一种数据访问参数访问一种存储服务器。而为了减少存储服务器的访问流量,就要使该数据访问参数不再访问对应关系所标识的存储服务器,可以为该数据访问参数配置相应的后缀,以使数据访问参数发生变更。
因此可以预先配置存储集群的访问后缀列表,该后缀列表可以由固定的编号构成,编号的数量与存储集群中存储服务器的数量k相同,也可以由k个随机数构成,本发明实施例对此不作限定。其中,访问后缀列表中的每个后缀对应存储集群中的一个存储服务器,从而后续添加了后缀的数据访问参数能够访问该后缀对应的存储服务器。
步骤204,获取数据访问参数,并确定所述数据访问参数对应的第一存储服务器。
在分布式系统中,应用服务器可以接收用户的访问请求,并依据该访问请求生成相应的数据访问参数,依据该数据访问参数可以确定当前要访问的存储服务器,将该存储服务器作为第一存储服务器。
步骤206,检测数据访问信息是否达到所述第一存储服务器的热点触发阈值。
本实施例中,为了防止存储服务器由于访问量过大而出现不可用甚至雪崩的问题,可以将存储服务器访问量过大而可能出现服务器故障的状态成为访问热点,即当存储服务器出现访问热点状态时,要减少存储服务器上的访问量。
可以配置存储服务器的热点触发阈值,该采用热点触发预置用于检测存储服务器的访问热点,即筛选访问量过大的存储服务器。在访问数据访问参数对应的第一存储服务器之前,要检测该第一存储服务器是否出现访问热点状态,即获取该第一存储服务器的数据访问信息,依据该访问信息检测所述达到第一存储服务器的热点触发阈值。
当达到第一存储服务器的热点触发阈值时,执行步骤208,当未达到第一存储服务器的热点触发阈值时,执行步骤212。
步骤208,从所述访问后缀列表中随机选取至少一个后缀,并为所述数据访问参数添加后缀。
当检测到达到所述第一存储服务器的热点触发阈值时,该第一存储服务器达到了热点访问,此时要减少该第一存储服务器的访问数据量,因此要变更该数据访问参数,可以从所述访问后缀列表中随机选取至少一个后缀,并为所述数据访问参数添加后缀,得到至少一个添加后缀的数据访问参数。
步骤210,访问添加后缀的数据访问参数对应的第二存储服务器以获取存储数据。
从该添加后缀的数据访问参数中选取一个,确定该选取的添加后缀的数据访问参数对应的存储服务器为第二存储服务器,向该第二存储服务器发送数据访问请求以获取请求的存储数据。
步骤212,访问所述第一服务器以获取存储数据。
当检测未到达到所述第一存储服务器的热点触发阈值时,表征第一存储服务器未达到访问热点,可以继续访问第一存储服务器,从该第一存储服务器中获取存储数据。
综上,本申请实施例预先配置存储集群的访问后缀列表,该访问后缀列表中一个后缀对应所述存储集群中的一个存储服务器,从而在当前数据访问参数达到对应第一存储服务器的热点触发阈值时,可以从该访问后缀列表中随机选取后缀添加给所述数据访问参数,由于每个添加后缀的数据访问参数对应存储集群中的一个存储服务器,可以从访问添加后缀的数据访问参数对应的第二存储服务器以获取存储数据,即不再访问数据访问参数对应的第一存储服务器,减少了第一存储服务器中的访问数据量,防止该服务器由于访问数据量过大而出现不可用甚至雪崩的问题。
本实施例中,热点访问包括带宽热点和访问量热点,访问量热点也称IO(Input/Output,输入输出)热点。其中,带宽热点指的是存储服务器的带宽达到被占用的上限,例如带宽被占满等;而访问量热点指的是存储服务器的访问量达到访问量上限。出现带宽热点和访问量热点均可能导致存储服务器不可用,甚至雪崩,影响数据访问效率。
因此本发明一个可选实施例中,对第一存储服务器的热点触发阈值进行检测的步骤包括:检测对所述第一存储服务器的数据访问信息是否达到所述第一存储服务器的以下任一种热点触发阈值:带宽热点触发阈值,和,访问热点触发阈值。即可以分别检测对所述第一存储服务器进行访问的数据访问信息,是否达到第一存储服务器的带宽热点触发阈值或访问热点触发阈值。可以仅检测其中任一中热点触发阈值,也可以在检测到未达到某一种热点触发阈值时,继续检测另一种热点触发阈值,本发明实施例对此不作限定,可以依据实际需求配置。
实施例二
在上述实施例的基础上,本实施例基于论述基于热点访问的数据访问方法。本实施例论述单独检测中任一中访问热点的步骤。
1、带宽热点
参照图4,示出了本发明实施例二所述的第一种数据访问方法的步骤流程图。
步骤402,基于所述存储集群中存储服务器的数量生成至少一个随机数。
步骤404,将每个随机数作为一个后缀生成访问后缀列表。
在预先配置存储集群的访问后缀列表时,可以基于存储集群中存储服务器的数量k生成,例如采用随机数发生器配置随机数时,可以基于存储服务器的数量k生成种子,再基于该种子生成相应的随机数。然后将每个随机数作为一个后缀,将所有后缀生成访问后缀列表,由于该随机数时基于相同的种子生成的,因此可以作为存储集群中任意存储服务器的后缀。
该访问后缀列表用于存储数据访问参数的后缀,即在数据访问参数对应存储服务器出现访问热点状态时,为该数据访问参数添加后缀,以将该添加后缀的数据访问参数对应到其他存储服务器上进行数据访问,减少前一存储服务器的访问数据量。
步骤406,获取数据访问参数,并确定所述数据访问参数对应的第一存储服务器。
步骤408,检测对所述第一存储服务器的数据访问信息是否达到所述第一存储服务器的带宽热点触发阈值。
应用服务器接收用户的访问请求,并依据该访问请求生成相应的数据访问参数后,依据该数据访问参数可以确定对应第一存储服务器。然后获取对该第一存储服务器进行访问的数据访问信息,基于该数据访问信息确定是否达到第一存储服务器的热点触发阈值,其中热点触发预置包括带宽热点触发阈值。其中,带宽热点触发阈值用于检测存储服务器的带宽热点,当超过该带宽热点阈值时表征达到了带宽热点;否则未达到带宽热点,可以继续采用该存储服务器进行数据存取。
因此,本发明一个可选实施例中,还包括预先配置带宽热点触发阈值的步骤:针对所述第一存储服务器所在的存储集群,依次获取所述存储集群中每个存储服务器的带宽热点信息,;按照每个存储服务器的带宽热点信息依次计算每个存储服务器的带宽热点触发阈值。
由于每个存储服务器的配置各不相同,因此给存储服务器的带宽热点阈值也各不相同,依次针对存储集群中的每个存储服务器,要获取各存储服务器的带宽热点信息,其中,所述带宽热点信息包括:所述存储服务器的带宽值、带宽预留比例值、业务数据大小以及应用集群中应用服务器的数量。
存储服务器的带宽值即该存储服务器的网络带宽信息;带宽预留比例即该存储服务器进行访问时预先配置的访问带宽和保留带宽的比例值;业务数据大小即访问该存储服务器所获取的业务数据的数据量。通过该每个带宽热点信息可以计算对应存储服务器的带宽热点触发阈值,例如采用公式如下:带宽热点触发阈值(Data_MAX)=带宽值*带宽预留比例值/业务数据大小/应用服务器的数量。
即检测该数据访问信息是否达到了第一存储服务器的带宽热点触发阈值。若是,即数据访问信息达到了第一存储服务器的带宽热点触发阈值,执行步骤412;若否,即数据访问信息未达到了第一存储服务器的带宽热点触发阈值,执行步骤410。
步骤410,访问所述第一存储服务器以获取存储数据。
数据访问信息未达到了第一存储服务器的带宽热点触发阈值,继续访问第一存储服务器,以从第一存储服务器中获取存储数据。
步骤412,从所述访问后缀列表中随机选取至少一个后缀,并为所述数据访问参数添加后缀。
步骤414,随机选取一个添加后缀的数据访问参数。
步骤416,向所述添加后缀的数据访问参数对应的第二存储服务器发送数据访问请求。
步骤418,接收所述第二存储服务器基于所述数据访问请求反馈的存储数据。
当数据访问信息达到了第一存储服务器的带宽热点触发阈值,表征第一存储服务器出现带宽热点,此时要减少对第一存储服务器的访问数据量,即不再采用该数据访问参数对该第一存储服务器进行访问。因此要变更数据访问参数,即从访问后缀列表中随机选取至少一个后缀,并将选取的各后缀添加到数据访问参数之后,得到各添加后缀的数据访问参数。
选取一个添加后缀的数据访问参数,然后向该添加后缀的数据访问参数对应的第二存储服务器发送数据访问请求,所述数据访问请求中包括所述添加后缀的数据访问参数。第二存储服务器基于该数据访问请求读取相应的存储数据,然后将存储数据反馈给应用服务器,应用服务器在反馈给相应的用户,完成数据的存取访问流程。
上述论述了基于带宽热点的数据访问步骤,通过上述实施例可以检测出存储带宽热点的存储服务器,从而将对应数据访问参数添加相应的后缀,以对应到存储集群中的其他存储服务器上进行数据访问,减少了该出现带宽热点的存储服务器上的访问数据量,防止基于访问该存储服务器导致其由于带宽被占满而出现不可用甚至雪崩的问题。因此即保证了存储服务器的安全可用,又确保正常进行数据访问,提高用户体验。
2、访问热点
本实施例通过访问热点触发阈值检测访问热点,即访问热点触发阈值用于筛选出存在访问热点的存储服务器。
因此,本发明一个可选实施例中,还包括预先配置访问热点触发阈值的步骤:针对所述第一存储服务器所在的存储集群,依次获取所述存储集群中每个存储服务器的访问热点信息;按照每个存储服务器的访问热点信息依次计算每个存储服务器的访问热点触发阈值。
与上述实施例类似,由于每个存储服务器的配置各不相同,因此给存储服务器的访问热点阈值也各不相同,依次针对存储集群中的每个存储服务器,要获取各存储服务器的访问热点信息,其中,所述访问热点信息包括:所述存储服务器的数据访问阈值、访问量预留比例值以及应用集群中应用服务器的数量。
存储服务器的数据访问阈值即该存储服务器的访问数据量上限,即存储服务器最大可容纳的输入输出数据量;访问量预留比例即该存储服务器进行访问时预先配置的最大访问量和保留访问量的比例值。通过该每个访问热点信息可以计算对应存储服务器的访问热点触发阈值,例如采用公式如下:访问热点触发阈值(IO_MAX)=数据访问阈值*访问量预留比例值/应用服务器的数量。
从而基于上述访问热点触发阈值可以筛选出存在访问热点的存储服务器,并减少该存储服务器的访问数据量,以确保该存储服务器的正常运行,以及分布式系统中应用集群和存储集群的正常运行,以及保证分布式系统中数据访问的正常执行。
参照图5,示出了本发明实施例二所述的第二种数据访问方法的步骤流程图。
步骤502,基于所述存储集群中存储服务器的数量生成至少一个随机数。
步骤504,将每个随机数作为一个后缀生成访问后缀列表。
步骤506,获取数据访问参数,并确定所述数据访问参数对应的第一存储服务器。
步骤508,检测对所述第一存储服务器的数据访问信息是否达到所述第一存储服务器的访问热点触发阈值。
访问后缀列表的生成步骤与上述图4的步骤基本类似,因此不再赘述。
应用服务器接收用户的访问请求,并依据该访问请求生成相应的数据访问参数后,依据该数据访问参数可以确定对应第一存储服务器。然后获取对该第一存储服务器进行访问的数据访问信息,基于该数据访问信息确定是否达到第一存储服务器的访问热点触发阈值。其中,当超过该访问热点阈值时表征达到了访问热点;否则未达到访问热点,可以继续采用该存储服务器进行数据存取。
检测该数据访问信息是否达到了第一存储服务器的访问热点触发阈值。若是,即数据访问信息达到了第一存储服务器的访问热点触发阈值,执行步骤512;若否,即数据访问信息未达到了第一存储服务器的访问热点触发阈值,执行步骤510。
步骤510,访问所述第一存储服务器以获取存储数据。
数据访问信息未达到了第一存储服务器的访问热点触发阈值,继续访问第一存储服务器,以从第一存储服务器中获取存储数据。
步骤512,从所述访问后缀列表中随机选取至少一个后缀,并为所述数据访问参数添加后缀。
步骤514,随机选取一个添加后缀的数据访问参数。
步骤516,向所述添加后缀的数据访问参数对应的第二存储服务器发送数据访问请求。
步骤518,接收所述第二存储服务器基于所述数据访问请求反馈的存储数据。
当数据访问信息达到了第一存储服务器的访问热点触发阈值,表征第一存储服务器出现访问热点,此时要减少对第一存储服务器的访问数据量,即不再采用该数据访问参数对该第一存储服务器进行访问。因此要变更数据访问参数,即从访问后缀列表中随机选取至少一个后缀,并将选取的各后缀添加到数据访问参数之后,得到各添加后缀的数据访问参数。
选取一个添加后缀的数据访问参数,然后向该添加后缀的数据访问参数对应的第二存储服务器发送数据访问请求,所述数据访问请求中包括所述添加后缀的数据访问参数。第二存储服务器基于该数据访问请求读取相应的存储数据,然后将存储数据反馈给应用服务器,应用服务器在反馈给相应的用户,完成数据的存取访问流程。
通过上述基于访问热点的数据访问的实施例,可以检测出存储访问热点的存储服务器,从而将对应数据访问参数添加相应的后缀,以对应到存储集群中的其他存储服务器上进行数据访问,减少了该出现访问热点的存储服务器上的访问数据量,防止基于访问该存储服务器导致其由于访问量被占满,即输入输出数据量达到最大值而出现不可用甚至雪崩的问题。因此即保证了存储服务器的安全可用,又确保正常进行数据访问,提高用户体验。
实施例三
在上述实施例的基础上,本实施例进一步论述分布式系统中的数据访问方法。本实施例中结合带宽热点和IO热点两种访问热点,其中,带宽热点和IO热点各自的带宽热点触发阈值和访问热点触发阈值的配置步骤与上述实施例二类似,因此不再赘述。
实际处理中可以先检测带宽热点,若未触发带宽热点再检测IO热点;也可以先检测IO热点,若未触发IO热点再检测带宽热点。以后一种检测方式具体论述具体的操作步骤。
参照图6,示出了本发明实施例三所述的数据访问方法的步骤流程图。
步骤602,基于所述存储集群中存储服务器的数量生成至少一个随机数。
步骤604,将每个随机数作为一个后缀生成访问后缀列表。
步骤606,获取数据访问参数,并确定所述数据访问参数对应的第一存储服务器。
本实施例的分布式系统中,在默认情况下,携带特定数据访问参数的数据访问请求会访问特定的存储服务器。例如,按照地域划分,应用服务器接收的北京地区的访问请求均访问存储服务器1;而上海地区的访问请求均访问存储服务器2。又如按照业务划分,以购物网站为例,在网站中查询的访问请求均访问存储服务器1;而网站中下单的访问请求均访问存储服务器2;付款的访问请求均访问存储服务器3。
但是,当一个存储服务器的访问数据量过大时,为了防止该存储服务器由于访问量而可能出现不可用的情况,可以停止对该存储服务器的访问,转由访问存储集群中的其他存储服务器,以减少该存储服务器的访问流量。例如在网站促销时,存在大量付款的访问请求,若此时均访问存储服务器3,则存储服务器3很有可能由于访问量过大而引发雪崩,不发继续使用。此时就可以将该存储服务器3的数据访问请求分散到存储集群的其他存储服务器上,以减少存储服务器3的访问数据量。则将数据访问请求分散到其他存储服务器的一种方式就是为key添加后缀以使其对应到其他存储服务器上。因此要建立key的访问后缀列表。
其中,上述步骤602-606与图4、5的前三个步骤基本一致,因此不再赘述。本实施例中,将数据访问参数表示为key。则若采用随机数发生器生成key的访问后缀列表List[key_postfix],则可以将存储服务器的数量K与常量相乘的值作为种子,则为Radom(存储服务器的数量K*常量),通过Radom.next循环获取随机数k个作为key的访问后缀列表。
步骤608,累计基于所述数据访问参数对所述第一存储服务器进行访问的数据访问信息。
步骤610,检测所述数据访问信息是否超过访问量监控阈值。
由于不是所用的数据访问都会引起存储服务器出现热点访问,因此本实施例中预置了访问量监控阈值,该访问量监控阈值看作是触发热点触发阈值的门限之一,即访问量监控阈值用于筛选数据访问参数对应存储服务器的访问量,当累计的访问量超过该访问量监控阈值时,则认为可能会出现访问热点,否则不会出现。
因此本实施例中,要累计基于该数据访问参数key对第一存储服务器进行访问的数据访问信息,该数据访问信息包括预设时间段内(如1天、1小时等)累计的访问次数,以及访问所获取的数据量等信息。从而基于该数据访问信息检测是否超过访问量监控阈值,若未超过访问量监控阈值,则执行步骤614;若超过访问量监控阈值,则执行步骤612。
步骤612,检测数据访问信息是否达到所述第一存储服务器的访问热点触发阈值。
当超过访问量监控阈值时,表征该第一存储服务器有可能出现访问热点,此时可以检测数据访问信息是否达到所述第一存储服务器的访问热点触发阈值。若达到第一存储服务器的访问热点触发阈值,则执行步骤624;若未达到第一存储服务器的访问热点触发阈值,则执行步骤614。
步骤614,检测带宽热点参数表中是否存在所述数据访问参数。
当超过访问量监控阈值但未达到第一存储服务器的访问热点触发阈值,或者未超过访问量监控阈值时,表征当前未出现访问热点,继续检测是否出现带宽热点。
本实施例中预设了带宽监控阈值,该带宽监控阈值看作是触发热点触发阈值的另一个门限,即带宽监控阈值用于筛选数据访问参数对应存储服务器的访问数据量,当累计的访问数据量超过该带宽监控阈值时,则认为可能会出现带宽热点,否则不会出现。对于累计的访问数据量超过该带宽监控阈值时,即引起存储服务器带宽热点的数据访问参数,可以将其添加到带宽热点参数表,即带宽热点参数表中所存储的数据访问参数是可能引起对应存储服务器出现带宽热点的参数,即通过带宽热点参数表标识其中所包含的数据访问参数为带宽热点。
因此,首先检测带宽热点参数表中是否存在所述数据访问参数,若带宽热点参数表中存在所述数据访问参数,则执行步骤616;若带宽热点参数表中不存在所述数据访问参数,则执行步骤618。
步骤616,检测数据访问信息是否达到所述第一存储服务器的带宽热点触发阈值。
当带宽热点参数表中存在所述数据访问参数key时,表征第一存储服务器可能出现带宽热点,因此要继续检测数据访问信息是否达到所述第一存储服务器的带宽热点触发阈值,若达到所述第一存储服务器的带宽热点触发阈值,则执行步骤624;若未达到所述第一存储服务器的带宽热点触发阈值,则执行步骤618。
步骤618,访问所述第一存储服务器以获取存储数据。
步骤620,检测所述数据访问信息是否超过预置的带宽监控阈值。
当未达到所述第一存储服务器的带宽热点触发阈值,表征第一存储服务器即不存在访问热点,也不存在带宽热点,可以正常执行访问流程。即依据该数据访问参数key将数据访问请求发送给第一存储服务器,接收第一存储服务器反馈的存储数据。
此后,可以继续累积当前访问的数据量到数据访问信息中,进而确定数据访问信息是否超过阈值的带宽监控阈值,若未超过阈值的带宽监控阈值,则结束该流程;若超过阈值的带宽监控阈值,则执行步骤622。
步骤622,将所述数据访问参数添加到所述带宽热点参数表中。
当检测到所述数据访问信息超过阈值的带宽监控阈值时,将所述数据访问参数key添加到所述带宽热点参数表中,以备后续在检测到该数据访问参数key时表征该参数可能引起带宽热点,需要进行带宽热点触发阈值的检测。
步骤624,从所述访问后缀列表中随机选取至少一个后缀,并为所述数据访问参数添加后缀。
步骤626,随机选取一个添加后缀的数据访问参数。
步骤628,向所述添加后缀的数据访问参数对应的第二存储服务器发送数据访问请求。
步骤630,接收所述第二存储服务器基于所述数据访问请求反馈的存储数据。
若达到第一存储服务器的访问热点触发阈值,或者,若达到所述第一存储服务器的带宽热点触发阈值,此时第一存储服务器出现了热点阈值。此时要减少第一存储服务器的访问数据量,即为数据访问参数添加后缀以变更数据访问参数来对应另一个存储服务器。
上述步骤624-630与图4、5中对应步骤类似,因此不再赘述。
本实施例中,将检测到访问热点或带宽热点后执行减少第一存储服务器中访问数据量的过程称为一致性热点散列步骤。则假设key为A,则从访问后缀列表中随机获取3个后缀,分别为11、12、13,添加后缀的key分别为A.11、A.12和A.13。则可以随机选取一个添加后缀的key,访问其对应第二存储服务器,例如选取A.12对应的第二存储服务器进行数据存取。
步骤632,当所述数据访问参数对应的数据发生变更时,对添加后缀的各数据访问参数对应的存储服务器中存储数据进行更新。
当从第二存储服务器进行数据存取时,该数据访问参数对应的数据可能发生了变更,此时可以对其对应的每个添加后缀的数据访问参数的存储服务器中存储数据均进行更新,以确保数据的实时性和有效性。如上例,当key对应数据发生变更时,则第一存储服务器以及添加后缀的key,即A.11、A.12和A.13的存储服务器中的存储数据均要进行更新,以确保数据的时效性。
综上所述,依次对访问热带和带宽热点进行检测,并且在检测前可以先确定是否超过访问热点的门限,即访问量监控阈值和带宽监控阈值,在确定超过其中任一种阈值时认为可能出现访问热点,进而对访问热点触发阈值和带宽热点触发阈值以确定访问热点的发生,从而停止对原本第一存储服务器的访问,转而访问重新确定的第二存储服务器,保证数据访问的正常执行。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
实施例四
在上述实施例的基础上,本实施例还公开了一种应用服务器。
参照图7,示出了本申请实施例四的应用服务器的结构框图,具体可以包括如下模块:
列表预置模块702,用于预置存储集群的访问后缀列表,其中所述访问后缀列表中一个后缀对应所述存储集群中的一个存储服务器。
获取模块704,用于获取数据访问参数,并确定所述数据访问参数对应的第一存储服务器。
后缀添加模块706,用于当检测到达到所述第一存储服务器的热点触发阈值时,从所述访问后缀列表中随机选取至少一个后缀,并为所述数据访问参数添加后缀。
访问模块708,用于从添加后缀的数据访问参数对应的第二存储服务器中获取存储数据。
综上,本申请实施例预先配置存储集群的访问后缀列表,该访问后缀列表中一个后缀对应所述存储集群中的一个存储服务器,从而在当前数据访问参数达到对应第一存储服务器的热点触发阈值时,可以从该访问后缀列表中随机选取后缀添加给所述数据访问参数,由于每个添加后缀的数据访问参数对应存储集群中的一个存储服务器,可以从访问添加后缀的数据访问参数对应的第二存储服务器以获取存储数据,即不再访问数据访问参数对应的第一存储服务器,减少了第一存储服务器中的访问数据量,防止该服务器由于访问数据量过大而出现不可用甚至雪崩的问题。
实施例五
在上述实施例的基础上,本实施例公开了一种优选的应用服务器。
参照图8A,示出了本申请实施例四的应用服务器中列表预置模块的结构框图。
参照图8B,示出了本申请实施例四的应用服务器中访问模块的结构框图。
参照图8C,示出了本申请实施例四的应用服务器的结构框图。
列表预置模块802,用于预置存储集群的访问后缀列表,其中所述访问后缀列表中一个后缀对应所述存储集群中的一个存储服务器;获取模块804,用于获取数据访问参数,并确定所述数据访问参数对应的第一存储服务器;后缀添加模块806,用于当检测到达到所述第一存储服务器的热点触发阈值时,从所述访问后缀列表中随机选取至少一个后缀,并为所述数据访问参数添加后缀;访问模块808,用于从添加后缀的数据访问参数对应的第二存储服务器中获取存储数据。
第一检测模块810,用于检测对所述第一存储服务器的数据访问信息是否达到所述第一存储服务器的以下任一种热点触发阈值:带宽热点触发阈值,和,访问热点触发阈值。
所述列表预置模块802,包括:随机数生成子模块80202,用于基于所述存储集群中存储服务器的数量生成至少一个随机数;列表生成子模块80204,用于将每个随机数作为一个后缀生成访问后缀列表。
所述访问模块808,包括:参数选取子模块80802,用于随机选取一个添加后缀的数据访问参数;发送子模块80804,用于向所述添加后缀的数据访问参数对应的第二存储服务器发送数据访问请求,所述数据访问请求中包括所述添加后缀的数据访问参数;接收子模块80806,用于接收所述第二存储服务器基于所述数据访问请求反馈的存储数据。
带宽热点触发阈值配置模块812,用于针对所述第一存储服务器所在的存储集群,依次获取所述存储集群中每个存储服务器的带宽热点信息,其中所述带宽热点信息包括:所述存储服务器的带宽值、带宽预留比例值、业务数据大小以及应用集群中应用服务器的数量;按照每个存储服务器的带宽热点信息依次计算每个存储服务器的带宽热点触发阈值。
访问热点触发阈值配置模块814,用于针对所述第一存储服务器所在的存储集群,依次获取所述存储集群中每个存储服务器的访问热点信息,其中所述访问热点信息包括:所述存储服务器的数据访问阈值、访问量预留比例值以及应用集群中应用服务器的数量;按照每个存储服务器的访问热点信息依次计算每个存储服务器的访问热点触发阈值。
访问信息累计模块816,用于累计基于所述数据访问参数对所述第一存储服务器进行访问的数据访问信息;第二检测模块818,用于当所述数据访问信息超过预置的访问量监控阈值时,触发第一检测模块810执行对第一存储服务器的热点触发阈值的检测。
所述第一检测模块810,用于检测对所述第一存储服务器的数据访问信息是否达到所述第一存储服务器的访问热点触发阈值;所述的应用服务器还包括:第三检测模块820,用于当未达到所述访问热点触发阈值,且从所述带宽热点参数表中检测到所述数据访问参数时,触发第一检测模块810执行对第一存储服务器的带宽热点触发阈值进行检测的步骤。
参数表添加模块,用于当检测到所述数据访问信息超过预置的带宽监控阈值时,将所述数据访问参数添加到所述带宽热点参数表中。
更新模块822,用于当所述数据访问参数对应的数据发生变更时,对添加后缀的各数据访问参数对应的存储服务器中存储数据进行更新。
综上所述,依次对访问热带和带宽热点进行检测,并且在检测前可以先确定是否超过访问热点的门限,即访问量监控阈值和带宽监控阈值,在确定超过其中任一种阈值时认为可能出现访问热点,进而对访问热点触发阈值和带宽热点触发阈值以确定访问热点的发生,从而停止对原本第一存储服务器的访问,转而访问重新确定的第二存储服务器,保证数据访问的正常执行。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据访问方法和一种应用服务器,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。