一种动态调整负载的方法、装置、设备及可读存储介质与流程

文档序号:32056688发布日期:2022-11-04 21:47阅读:46来源:国知局
一种动态调整负载的方法、装置、设备及可读存储介质与流程

1.本发明涉及计算机领域,特别涉及一种动态调整负载的方法、装置、设备及可读存储介质。


背景技术:

2.在一些突发的情况下,用户会通过手持终端去访问服务器,例如,可能会在一个特定的情况下,有大量的用户同时向服务器发起访问自身的健康码,而此时服务器可能出现资源耗尽的情况,造成大面积用户小程序提示白屏或者不友好报错,造成社会事件发生。
3.有鉴于此,提出本技术。


技术实现要素:

4.本发明公开了一种动态调整负载的方法、装置、设备及可读存储介质,旨在解决服务器因突发事件被大量的访问而资源耗尽,进而导致社会事件出现的问题。
5.本发明第一实施例提供了一种动态调整负载的方法,包括:
6.接收由客户端发送的查询指令;
7.根据所述查询指令,对服务中心进行资源计算,生成所述服务中心最大的承载量;
8.获取服务中心当前的用户量,并根据所述服务中心当前的用户量和所述服务中心最大的承载量生成服务中心的状态信息;
9.根据所述状态信息对所述查询指令进行响应,其中,所述响应包括向所述客户端发送当前承载量已满的提示和向所述客户端发送与查询指令相匹配的信息。
10.优选地,所述根据所述查询指令,对服务中心的进行资源计算,生成所述服务中心最大的承载量具体为:
11.对所述服务中心的服务模块进行增加预设个数的用户量,并生成服务模块的资源消耗估值,其中,所述服务模块包括数据服务器、redis缓存服务器、应用服务器、以及nginx服务器;
12.根据资源消耗估值生成服务中心的最大承载量,其中,所述最大承载量为在数据服务器承载用户量、redis缓存服务器承载用户量、应用服务器承载用户量、以及nginx服务器承载用户量中的最小值。
13.优选地,所述响应还包括:向客户端提供核心服务功能,屏蔽普通服务功能。
14.本发明第二实施例提供了一种动态调整负载的装置,包括:
15.查询指令接收单元,用于接收由客户端发送的查询指令;
16.资源计算单元,用于根据所述查询指令,对服务中心进行资源计算,生成所述服务中心最大的承载量;
17.状态信息生成单元,用于获取服务中心当前的用户量,并根据所述服务中心当前的用户量和所述服务中心最大的承载量生成服务中心的状态信息;
18.响应单元,用于根据所述状态信息对所述查询指令进行响应,其中,所述响应包括
向所述客户端发送当前承载量已满的提示和向所述客户端发送与查询指令相匹配的信息。
19.优选地,所述资源计算单元具体用于:
20.对所述服务中心的服务模块进行增加预设个数的用户量,并生成服务模块的资源消耗估值,其中,所述服务模块包括数据服务器、redis缓存服务器、应用服务器、以及nginx服务器;
21.根据资源消耗估值生成服务中心的最大承载量,其中,所述最大承载量为在数据服务器承载用户量、redis缓存服务器承载用户量、应用服务器承载用户量、以及nginx服务器承载用户量中的最小值。
22.优选地,所述响应还包括:向客户端提供核心服务功能,屏蔽普通服务功能。
23.本发明第三实施例提供了一种动态调整负载的设备,包括存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如上任意一项所述的一种动态调整负载的方法。
24.本发明第四实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序能够被所述计算机可读存储介质所在设备的处理器执行,以实现如上任意一项所述的一种动态调整负载的方法。
25.基于本发明提供的一种动态调整负载的方法、装置、设备及可读存储介质,通过接收客户端发送的查询指令时,对服务中心进行资源计算,生成服务中心最大的承载量,并和当前用户量生成服务中心的状态信息,根据状态信息对所述查询指令进行响应,解决了服务器因突发事件被大量的访问而资源耗尽,进而导致社会事件出现的问题。
附图说明
26.图1是本发明第一实施例提供的一种动态调整负载的方法的流程示意图;
27.图2是本发明第二实施例提供的一种动态调整负载的装置的模块示意图。
具体实施方式
28.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
30.应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
31.在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
32.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种
情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
33.取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
34.实施例中提及的“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一\第二”区分的对象在适当情况下可以互换,以使这里描述的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
35.以下结合附图对本发明的具体实施例做详细说明。
36.本发明公开了一种动态调整负载的方法、装置、设备及可读存储介质,旨在解决服务器因突发事件被大量的访问而资源耗尽,进而导致社会事件出现的问题。
37.请参阅图1,本发明第一实施例提供了一种动态调整负载的方法,其可由动态调整负载设备(以下简称调整设备)来执行,特别的,由所述调整设备内的一个或者多个处理器来执行,以实现如下步骤:
38.s101,接收由客户端发送的查询指令;
39.在本实施例中,所述调整设备可为位于云端的服务器,该云端的服务器可与用户终端(如智能手机、智能打印机或者其他智能设备)建立通讯连接,以实现数据的交互。
40.特别的,在本实施例中,所述服务器内可存储有用于响应所述查询指令的数据,用户终端可通过向服务器发起信息查询指令来获取对应的数据以实现本地的数据更新。
41.具体地,在本实施例中,用户可以通过手持终端向服务器发起查询,其中,所述手持终端或客户端可以异步向至少两个服务中心发送查询指令,其可以接收与所述查询指令对应多个服务中心的状态信息;根据多个所述服务中心的状态信息选取最优的服务中心进行建立连接。
42.需要说明的是,客户端小程序根据智能dns返回网络比较快的服务端中心,一般情况下,联通用户被分配联通网络的服务端,移动用户被分配到移动网络的服务端。但dns有时候会出现误判,客户端小程序可以通过异步访问两个服务端中心响应核心服务的耗时来纠正自己的访问,同时服务端中心也会返回服务端的耗时,由小程序计算出自己访问哪个服务端中心会更快,这样的尝试访问目前以3次为准,避免因为偶然一次网络波动测算数据有误。
43.s102,根据所述查询指令,对服务中心进行资源计算,生成所述服务中心最大的承载量;
44.在本实施例中,对所述服务中心的服务模块进行增加预设个数的用户量,并生成服务模块的资源消耗估值,其中,所述服务模块包括数据服务器、redis缓存服务器、应用服务器、以及nginx服务器;
45.根据资源消耗估值生成服务中心的最大承载量,其中,所述最大承载量为在数据服务器承载用户量、redis缓存服务器承载用户量、应用服务器承载用户量、以及nginx服务器承载用户量中的最小值
46.数据服务器主要是运行数据库软件,内存一般是软件设置,不作为动态调整负载
的数据。
47.此类服务器的资源是以cpu资源消耗。
48.比如:
49.9k个用户在线,cpu消耗18.2%,1万个用户在线,cpu消耗20.1%,1万1k个用户在线,cpu消耗22.3%,最高不能超过80%;从9k到1万个消耗cpu增加了1.9%。,从1万个到1万1k个消耗cpu增加了2.2%,比上一阶段增加1k个用户,cpu多消耗了0.3%,我们称这个值递增附加值为0.3%。估算支撑1万2k个用户消耗cpu的百分比是22.3%+(2.2%+0.003)=24.8%。
50.依此类推,此时的估算:
51.不超过cpu百分比80%的情况下,从11k个用户之后每增加1k个用户,cpu消耗增加2.2%,再加上距11k个的倍数乘以0.3%,
[0052][0053]
这样可以算出最大的n值是13,承载量e/cpu=11k+13*1000=24000个用户。
[0054]
以io状态数据作为参考:
[0055]
主要数据统计1秒内处理io的时间消耗,此值比较大,证明io比较饱和。
[0056]
9k个用户在线,io使用频繁占比15.6%,10k个用户在线,io使用频繁占比16.5%,11k个用户在线,io使用频繁占比17.7%,io频繁的占比可以达到100%,无法超过100%,在io频繁占比统计数据过程中,检查在等待io进程的数据,如果超过10个进程,此机器将不能扩大承载用户量。
[0057]
从9k到10k个用户io使用频繁占比增加了0.9%,然后从10k到11k个用户io使用频繁占比增加了1.2%,递增附加值是0.3%,
[0058][0059]
从io使用频繁的角度来计算,n值为19,最接近1,承载用户量为e/io=11k+19*1k=30000个用户,当然在进行估算之前,首先需要检查等待操作io的进程,如果已经超过10个进程,就不在向更高的用户量进行估算。
[0060]
数据库服务器所能承载能力是以取cpu消耗估算值,io使用频繁占比来估算值,取最小值作为数据库服务器所能承载用户量24000个用户。
[0061]
c(数据库服务器)=min(e/cpu,e/io)。
[0062]
redis缓存服务器以内存资源消耗为标准计算承载负载量。
[0063]
比如:
[0064]
9k个用户在线,内存消耗31.2%,10k个用户在线,内存消耗33.1%,11k用户在线,内存消耗34.2%,最高不能超过90%。从9k到1万个消耗内存增加了1.9%。从10k到11k个消耗内存增加了1.1%。从10k个用户到11k个消耗的幅度比从9k到1万个消耗的内存更小,这样就没有递增附加值。
[0065]
每增加1k个用户,内存消耗增加1.1%,递增达到内存消耗90%,支撑用户可以达到61000个用户,计算公式如下:
[0066]
0.342+n*0.011《=0.9
[0067]
按以上公式计算,可以得出n最大值是50,承载用户量为61000用户。
[0068]
应用服务器的承载能力估算主要以cpu负载数据,服务响应时间等数据为准。
[0069]
具体的计算方式如下:9k个用户在线,cpu消耗12.2%,10k个用户在线,cpu消耗12.7%,11k用户在线,cpu消耗13.1%。最高不超过使用cpu的85%,在统计cpu的消耗的过程中,需要检查此服务器应用服务平均响应时间,如果服务响应时间超过3秒将不在扩大服务器的承载用户量。
[0070]
从9k到10k个用户,cpu消耗增长0.5%,从10k到11k用户增长cpu消耗增长0.4%,跨两个区间增长没有产生递增附加值,每增加1k用户cpu消耗增长0.4%,
[0071]
0.131+n*0.004《=0.85
[0072]
计算出n的最大值是179,承载量为190000个用户。
[0073]
nginx负载服务器主要以统计网络连接数作为参考数据,网络流量数据来作为辅助参考数据,流量达到值后,会影响服务响应消耗,从而反过来造成客户端会有更多连接连接到服务端。
[0074]
具体的计算方式如下:9k个用户在线,网络连接数为2128个,流量消耗10.43mb,10k个用户在线,网络连接数为2237个,流量消耗12.35mb,11k用户在线,网络连接数为2358个,流量消耗13.45mb,最高连接数不超过1万5个连接,流量方面可占用到最大值。流量占用达到最大值之后,需要注意再增加用户的情况下,连接数的递增附加值将会增加更加厉害。
[0075]
从9k个用户到10k个用户,网络连接数增加109,从10k个用户到11k个用户,网络连接数增加121,后面增加1k个比前面增加1k个用户多增加12个连接。
[0076]
依此数据情况估算nginx服务器承载用户量,从11k个用户之后再倍数1k个用户,需要用121加上倍数乘以递增附加值(12),最高不要超过15k个连接,公式如下:
[0077][0078]
根据上面的公式计算出n的最大值是37,估算出承载用户量是47000个用户。
[0079]
数据服务器承载用户量是24000个用户。
[0080]
redis缓存服务器承载用户量是61000个用户。
[0081]
应用服务器承载用户量是190000个用户。
[0082]
nginx服务器承载用户量是47000个用户。
[0083]
对比各个服务器的承载用户量取小值作为服务端本中心的用户量,那就是24000个用户。
[0084]
s103,获取服务中心当前的用户量,并根据所述服务中心当前的用户量和所述服务中心最大的承载量生成服务中心的状态信息;
[0085]
需要说明的是,状态信息可以为当前用户量与系统承载量的比值,其可以将比值超过80%定义为饱满,75%—80%之间定义为忙碌,小于75%定义为正常。
[0086]
s104,根据所述状态信息对所述查询指令进行响应,其中,所述响应包括向所述客户端发送当前承载量已满的提示和向所述客户端发送与查询指令相匹配的信息。
[0087]
需要说明的是,在本实施例中,可以在系统正常的情况下,向客户端响应与所述查询指令相匹配的信息,可以在系统爆满的情况下,向客户端当前承载量已满的提示,可以提醒用户进行离线缓存或者稍后再进行尝试,其可以在服务器爆满的情况下,对尝试访问的
用户进行友好提示,减少对服务器的访问,防止服务器因为资源耗尽造成服务器崩溃,引起连锁反应造成大面积服务器不可使用。
[0088]
在本发明一个可能的实施例中,所述响应还包括:在服务器处于忙碌状态时,向客户端提供核心服务功能,屏蔽普通服务功能。
[0089]
以健康码查询为例:健康码展示服务包含用户登录、生成健康码、查询健康状态、查询48小时核酸检测报告作为核心服务。普通服务可以包含查询用码记录,生成防伪核酸报告。需要说明的是,核心服务和普通服务的内容可以根据实际情况进行定义,这里不做具体限定。
[0090]
请参阅图2,本发明第二实施例提供了一种动态调整负载的装置,包括:
[0091]
查询指令接收单元201,用于接收由客户端发送的查询指令;
[0092]
资源计算单元202,用于根据所述查询指令,对服务中心进行资源计算,生成所述服务中心最大的承载量;
[0093]
状态信息生成单元203,用于获取服务中心当前的用户量,并根据所述服务中心当前的用户量和所述服务中心最大的承载量生成服务中心的状态信息;
[0094]
响应单元204,用于根据所述状态信息对所述查询指令进行响应,其中,所述响应包括向所述客户端发送当前承载量已满的提示和向所述客户端发送与查询指令相匹配的信息。
[0095]
优选地,所述资源计算单元具体用于:
[0096]
对所述服务中心的服务模块进行增加预设个数的用户量,并生成服务模块的资源消耗估值,其中,所述服务模块包括数据服务器、redis缓存服务器、应用服务器、以及nginx服务器;
[0097]
根据资源消耗估值生成服务中心的最大承载量,其中,所述最大承载量为在数据服务器承载用户量、redis缓存服务器承载用户量、应用服务器承载用户量、以及nginx服务器承载用户量中的最小值。
[0098]
优选地,所述响应还包括:向客户端提供核心服务功能,屏蔽普通服务功能。
[0099]
本发明第三实施例提供了一种动态调整负载的设备,包括存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如上任意一项所述的一种动态调整负载的方法。
[0100]
本发明第四实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序能够被所述计算机可读存储介质所在设备的处理器执行,以实现如上任意一项所述的一种动态调整负载的方法。
[0101]
基于本发明提供的一种动态调整负载的方法、装置、设备及可读存储介质,通过接收客户端发送的查询指令时,对服务中心进行资源计算,生成服务中心最大的承载量,并和当前用户量生成服务中心的状态信息,根据状态信息对所述查询指令进行响应,解决了服务器因突发事件被大量的访问而资源耗尽,进而导致社会事件出现的问题。
[0102]
示例性地,本发明第三实施例和第四实施例中所述的计算机程序可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述实现一种动态调整负载的设备中的执行过程。例
如,本发明第二实施例中所述的装置。
[0103]
所称处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种动态调整负载的方法的控制中心,利用各种接口和线路连接整个所述实现对一种动态调整负载的方法的各个部分。
[0104]
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现一种动态调整负载的方法的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、文字转换功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、文字消息数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0105]
其中,所述实现的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一个计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0106]
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0107]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围
为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1