网站访问请求的动态调度方法及装置与流程

文档序号:14480842阅读:112来源:国知局

本发明涉及计算机网络领域,尤其涉及一种网站访问请求的动态调度方法及装置。



背景技术:

随着互联网技术的快速发展,互联网已经成为人们生活必不可少的部分。用户可以根据自己的需要访问各类网站。随着热门网站的访问量增加以及需要托管的网站数量增多,网站托管商需要不断扩大网站服务器所能承载的负荷量,避免突发事件导致在短时间内剧烈增长的访问量使得网站服务器瘫痪的情况。

目前,网站托管商一般通过多个服务器组建网站托管平台。各个网站或其镜像被分别配置在一台或多台服务上。用户通过客户端(例如chrome、firefox或ie等各类网页浏览器)发送的访问请求将先到达路由器,再由路由器将各个访问请求分发到对应的托管网站。因此,当由于某个突发事件导致单个网站的访问量剧增时(例如突发性新闻使得某个新闻网站的访问量突增),路由器接收到大量针对该网站的访问请求;此时不仅针对该网站的访问由于路由器繁忙而导致响应缓慢,而且与该网站属于同一路由器的其他网站即使访问量平稳,其响应速度也会出现明显的下降。一个更典型的例子是针对某个网站的ddos攻击。此时,与被攻击的网站使用同一路由器的其他网站受到牵连而无法正常登陆,扩大了ddos攻击的影响范围,增大了网站托管商的损失。



技术实现要素:

本发明的目的是解决现有技术的不足,提供一种网站访问请求的动态调度方法及装置,能够获得在访问量短时间内剧增的情况下缩短网站响应时间的效果。

为了实现上述目的,本发明采用以下的技术方案。

首先,本发明提出一种网站访问请求的动态调度方法,包括如下步骤:创建访问请求的主访问请求队列和快速访问请求队列,并对主访问请求队列和快速访问请求队列清空以实现主访问请求队列和快速访问请求队列的初始化;接收客户端发出的访问请求,并预估访问请求占用的资源数量;获取当前主访问请求队列占用的资源数量,若当前主访问请求队列占用的资源数量大于预设的主访问请求队列阈值,且所访问网站的当前访问量小于预设的访问阈值时,所述访问请求插入到快速访问请求队列的队尾,否则所述访问请求插入到主访问请求队列的队尾;以及按照次序分别从主访问请求队列的队头和快速访问请求队列的队头获取访问请求。

在本发明的一个方法实施例中,接收访问请求后,检测所述访问请求数据是否正常,并抛弃异常的访问请求。

在本发明的一个方法实施例中,访问请求被分配到所访问网站当前的访问量是网站及其各个镜像中访问量的最小者,其中所访问网站当前的访问量是网站及其各个镜像中访问量的最小值。

在本发明的一个方法实施例中,当访问请求插入到快速访问请求队列的队尾后,快速访问请求队列根据访问网站当前的访问量排序。

在本发明的一个方法实施例中,当快速访问请求队列占用的资源数量大于预设的快速访问请求队列阈值时,提高主访问请求队列阈值和/或降低访问阈值。

在本发明的一个方法实施例中,当主访问请求队列长度大于预设的主访问请求队列阈值时,主访问请求队列中所访问网站当前的访问量小于访问阈值的访问请求被提出并插入到快速访问请求队列的队尾。

在本发明的一个方法实施例中,当快速访问请求队列执行时占用的资源总量大于预设的快速访问请求队列阈值且主访问请求队列的占用资源总量小于主访问请求队列阈值时,位于快速访问请求队列的队尾且超出预设的快速访问请求队列阈值部分的访问请求被提出并插入到主访问请求队列的队尾。

在本发明的一个方法实施例中,并行处理从主访问请求队列的队头和快速访问请求队列的队头获取访问请求。

在本发明的一个方法实施例中,当网站的访问量超过迁移阈值时,对应网站由单独的路由器分配访问请求。

其次,本发明还公开了一种网站访问请求的动态调度装置,包括如下模块:初始化模块,用于创建访问请求的主访问请求队列和快速访问请求队列,并对主访问请求队列和快速访问请求队列清空以实现主访问请求队列和快速访问请求队列的初始化;检测模块,用于接收客户端发出的访问请求,并预估访问请求占用的资源数量;入队模块,用于获取当前主访问请求队列占用的资源数量,若当前主访问请求队列占用的资源数量大于预设的主访问请求队列阈值,且所访问网站的当前访问量小于预设的访问阈值时,所述访问请求插入到快速访问请求队列的队尾,否则所述访问请求插入到主访问请求队列的队尾;以及出队模块,用于按照次序分别从主访问请求队列的队头和快速访问请求队列的队头获取访问请求。

在本发明的一个装置实施例中,接收访问请求后,预估模块检测所述访问请求数据是否正常,并抛弃异常的访问请求。

在本发明的一个装置实施例中,入队模块将访问请求分配到所访问网站当前的访问量是网站及其各个镜像中访问量的最小者,其中所访问网站当前的访问量是网站及其各个镜像中访问量的最小值。

在本发明的一个装置实施例中,当入队模块将访问请求插入到快速访问请求队列的队尾后,入队模块根据访问网站当前的访问量排序快速访问请求队列。

在本发明的一个装置实施例中,当快速访问请求队列占用的资源数量大于预设的快速访问请求队列阈值时,提高主访问请求队列阈值和/或降低访问阈值。

在本发明的一个装置实施例中,当主访问请求队列长度大于预设的主访问请求队列阈值时,入队模块提出主访问请求队列中所访问网站当前的访问量小于访问阈值的访问请求并插入到快速访问请求队列的队尾。

在本发明的一个装置实施例中,当快速访问请求队列执行时占用的资源总量大于预设的快速访问请求队列阈值且主访问请求队列的占用资源总量小于主访问请求队列阈值时,入队模块将位于快速访问请求队列的队尾且超出预设的快速访问请求队列阈值部分的访问请求提出并插入到主访问请求队列的队尾。

在本发明的一个装置实施例中,出队模块并行处理从主访问请求队列的队头和快速访问请求队列的队头获取访问请求。

在本发明的一个装置实施例中,当网站的访问量超过迁移阈值时,对应网站由单独的路由器分配访问请求。

最后,本发明还公开了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如前述任一项所述方法的步骤。

本发明的有益效果为:通过分别构造并维护访问请求的主访问请求队列和快速访问请求队列,使得访问当前访问量较少网站的访问请求可以被尽快响应,从而缩短整体访问请求的响应时间。

附图说明

图1所示为本发明所公开的网站访问请求的动态调度方法的方法流程图;

图2所示为图1中判断访问请求是否插入快速访问请求队列的具体判断过程的方法流程图;

图3所示为在本发明的一个实施例中主访问请求队列中的访问请求插入快速访问请求队列的示意图;

图4所示为在本发明的另一个实施例中主访问请求队列的状态变化示意图;

图5所示为图4中抽调快速访问请求队列中的访问请求的方法流程图;

图6所示为在本发明的一个实施例中访问请求插入到快速访问请求队列后的状态变化示意图;

图7所示为在本发明的一个实施例中主访问请求队列阈值调整示意图;

图8所示为本发明所公开的网站访问请求的动态调度装置的模块结构图。

具体实施方式

以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。附图中各处使用的相同的附图标记指示相同或相似的部分。

参照图1所示的方法流程图,在本发明的一个实施例中,网站访问请求的动态调度方法包括以下步骤:创建访问请求的主访问请求队列和快速访问请求队列,并对主访问请求队列和快速访问请求队列清空以实现主访问请求队列和快速访问请求队列的初始化;接收客户端发出的访问请求,并预估访问请求占用的资源数量;获取当前主访问请求队列占用的资源数量,若当前主访问请求队列占用的资源数量大于预设的主访问请求队列阈值,且所访问网站的当前访问量小于预设的访问阈值时,所述访问请求插入到快速访问请求队列的队尾,否则所述访问请求插入到主访问请求队列的队尾;以及按照次序分别从主访问请求队列的队头和快速访问请求队列的队头获取访问请求。主访问请求队列阈值和快速访问请求队列阈值可在初始化时设置。例如,主访问请求队列阈值长度可初始化为500,即所访问网站的当前访问请求数量为500。此时,可参考图2所示的子方法流程图,当主访问请求队列的访问请求总量小于500时,新获取的访问请求将直接插入到主访问请求队列的队尾。主访问请求队列中的所有访问请求按照先进先出的顺序依次执行。当主访问请求队列的访问请求总量大于或等于500时,新获取的访问请求将被预处理,以检测所述访问请求所访问网站的访问请求量,若所述访问请求所访问网站的访问请求量较少,则被插入到快速访问请求队列的队尾优先处理;否则插入到主访问请求队列的队尾,按照正常次序处理。由于访问量较少的网站与访问量较大的网站的访问请求不是在同一个队列内,因此减轻了某个短时期内的热门网站对其他网站正常访问请求的影响。

然而,仅根据所访问网站的当前访问量以判断该网站是否过热并不准确。网站可在一台或多台服务器上配置有多个镜像,从而可同时响应多个客户端的访问请求。因此,在本发明的一个实施例中,所访问网站当前的访问量是网站及其各个镜像中访问量的最小值。进一步地,在本发明的上述实施例中,访问请求被分配到所访问网站当前的访问量是网站及其各个镜像中访问量的最小者,使得网站及其各个镜像可以均衡负载客户端的访问请求,从而缩短该网站的整体响应时间。再进一步地,在本发明的一个实施例中,接收访问请求后,检测所述访问请求数据是否正常,并抛弃异常的访问请求(例如访问请求为未知类型或者访问请求超出账号的权限)。

参照图3所示的主访问请求队列和快速访问请求队列状态变化示意图(图中访问请求右侧方格内的数值是该访问请求所访问网站的访问请求量,作为衡量该访问请求的执行时占用的资源数量),在本发明的一个实施例中,当主访问请求队列的占用资源总量大于预设的主访问请求队列阈值时,主访问请求队列中访问请求执行时占用的资源数量小于资源阈值的访问请求被提出并插入到快速访问请求队列的队尾。具体地,如图3中所示,若此时主访问请求队列阈值为250,而主访问请求队列的占用资源总量为259。若预设的资源阈值是20,则主访问请求队列中占用资源数量小于阈值的访问请求(即图中“客户端a”、“客户端c”和“客户端h”对应的访问请求)将从主访问请求队列中提取出来,插入到快速访问请求队列的队尾,使得主访问请求队列中执行时占用的资源数量较少的访问请求可以被及时执行。

相反,参照图4所示的另一个实施例中主访问请求队列的状态变化示意图,当快速访问请求队列的长度大于预设的快速访问请求队列阈值且主访问请求队列的占用资源总量小于主访问请求队列阈值时,快速访问请求队列中访问请求执行效率将小于主访问请求队列。为了提高访问请求的整体执行效率,参照图5所示的子方法流程图,可将位于快速访问请求队列的队尾且超出预设的快速访问请求队列阈值部分的访问请求(即图4中的“f客户端”和“g客户端”)提出并插入到主访问请求队列的队尾。

参照图6所示的访问请求插入快速访问请求队列的示意图,在本发明的一个实施例中,当访问请求插入到快速访问请求队列的队尾后,快速访问请求队列根据访问请求执行时占用的资源数量排序。图中访问请求右侧方格内的数值是该访问请求执行时所访问网站的访问请求量(类似地,a客户端的“5”表示该访问请求所访问网站的访问清求量是5),作为衡量该访问请求的执行时占用的资源数量。如图中所示,新的f客户端所访问网站的访问清求量是7。此时由于主访问请求队列的占用资源总量大于主访问请求队列阈值,因此f客户端的访问将先被插入到快速访问请求队列的队尾,然后再对快速访问请求队列排序。因为执行时占用资源数量较少的访问请求将被排在快速访问请求队列的前方,所以这些访问请求可以被尽快执行。此外,由于快速访问请求队列是被维护成有序的,所以新的访问请求可以较短的时间插入到快速访问请求队列的正确位置(事实上,该操作的时间复杂度是当前队列长度的对数)。

参照图7所示的主访问请求队列的阈值调整流程图,在本发明的一个实施例中,当快速访问请求队列执行时占用的资源总量大于预设的快速访问请求队列阈值长度时,此时快速访问请求队列内的访问请求执行效率将下降,甚至等于或低于主访问请求队列。为了保证分配到快速访问请求队列内的访问请求能被优先执行,需要提高插入到快速访问请求队列的门槛。在本实施例中,主访问请求队列阈值长度被提高(可提高至当前主访问请求队列执行时占用的资源总量或更高),减少分配到快速访问请求队列的访问请求。可替代地,插入到快速访问请求队列的门槛也可以通过降低资源阈值(例如资源阈值设置为当前值的80%)的方式提高,使得访问请求较难分配到快速访问请求队列。

然而,在本发明的上述实施例中,当插入到快速访问请求队列的门槛被过分提高后,使得快速访问请求队列长时间保持为空队列时,需要恰当降低插入到快速访问请求队列的门槛。因此,作为上述实施例的改进,当在预设时间段(例如10分钟)内快速访问请求队列为空队列时,降低主访问请求队列阈值长度(例如主访问请求队列阈值长度调整为当前值的80%)和/或提高资源阈值(例如资源阈值更新为当前值的2倍),使得访问请求较易分配到快速访问请求队列。

在本发明的一个实施例中,主访问请求队列和快速访问请求队列中的访问请求可以由不同的路由器处理,从而并行处理从主访问请求队列的队头和快速访问请求队列的队头获取访问请求。由于访问量较少的网站与访问量较大的网站的访问请求不是在同一个队列内,因此某个短时期内的热门网站不会对其他网站正常访问请求的造成影响。进一步地,当网站的访问量超过迁移阈值时,对应网站由单独的路由器分配访问请求。

参照图8所示的模块结构图,在本发明的一个实施例中,网站访问请求的动态调度装置包括以下模块:初始化模块,用于创建访问请求的主访问请求队列和快速访问请求队列,并对主访问请求队列和快速访问请求队列清空以实现主访问请求队列和快速访问请求队列的初始化;检测模块,用于接收客户端发出的访问请求,并预估访问请求占用的资源数量;入队模块,用于获取当前主访问请求队列占用的资源数量,若当前主访问请求队列占用的资源数量大于预设的主访问请求队列阈值,且所访问网站的当前访问量小于预设的访问阈值时,所述访问请求插入到快速访问请求队列的队尾,否则所述访问请求插入到主访问请求队列的队尾;以及出队模块,用于按照次序分别从主访问请求队列的队头和快速访问请求队列的队头获取访问请求。初始化模块可在初始化时设置主访问请求队列阈值和快速访问请求队列阈值。例如,主访问请求队列阈值长度可初始化为500,即所访问网站的当前访问请求数量为500。此时,当主访问请求队列的访问请求总量小于500时,入队模块将新获取的访问请求直接插入到主访问请求队列的队尾。主访问请求队列中的所有访问请求按照先进先出的顺序依次执行。当主访问请求队列的访问请求总量大于或等于500时,预估模块对新获取的访问请求执行预处理,以检测所述访问请求所访问网站的访问请求量,若所述访问请求所访问网站的访问请求量较少,则入队模块将其插入到快速访问请求队列的队尾优先处理;否则入队模块将其插入到主访问请求队列的队尾,按照正常次序处理。由于访问量较少的网站与访问量较大的网站的访问请求不是在同一个队列内,因此减轻了某个短时期内的热门网站对其他网站正常访问请求的影响。

类似地,仅根据所访问网站的当前访问量以判断该网站是否过热并不准确。网站可在一台或多台服务器上配置有多个镜像,从而可同时响应多个客户端的访问请求。因此,在本发明的一个实施例中,所访问网站当前的访问量是网站及其各个镜像中访问量的最小值。进一步地,在本发明的上述实施例中,入队模块将访问请求分配到所访问网站当前的访问量是网站及其各个镜像中访问量的最小者,使得网站及其各个镜像可以均衡负载客户端的访问请求,从而缩短该网站的整体响应时间。再进一步地,在本发明的一个实施例中,接收访问请求后,预估模块检测所述访问请求数据是否正常,并抛弃异常的访问请求(例如访问请求为未知类型或者访问请求超出账号的权限)。

参照图3所示的主访问请求队列和快速访问请求队列状态变化示意图(图中访问请求右侧方格内的数值是该访问请求所访问网站的访问请求量,作为衡量该访问请求的执行时占用的资源数量),在本发明的一个实施例中,当主访问请求队列的占用资源总量大于预设的主访问请求队列阈值时,入队模块将主访问请求队列中访问请求执行时占用的资源数量小于资源阈值的访问请求提出并插入到快速访问请求队列的队尾。具体地,如图3中所示,若此时主访问请求队列阈值为250,而主访问请求队列的占用资源总量为259。若预设的资源阈值是20,则入队模块将主访问请求队列中占用资源数量小于阈值的访问请求(即图中“客户端a”、“客户端c”和“客户端h”对应的访问请求)将从主访问请求队列中提取出来,插入到快速访问请求队列的队尾,使得主访问请求队列中执行时占用的资源数量较少的访问请求可以被及时执行。

相反,参照图4所示的另一个实施例中主访问请求队列的状态变化示意图,当快速访问请求队列的长度大于预设的快速访问请求队列阈值且主访问请求队列的占用资源总量小于主访问请求队列阈值时,快速访问请求队列中访问请求执行效率将小于主访问请求队列。为了提高访问请求的整体执行效率,可将位于快速访问请求队列的队尾且超出预设的快速访问请求队列阈值部分的访问请求(即图4中的“f客户端”和“g客户端”)提出并插入到主访问请求队列的队尾。

参照图6所示的访问请求插入快速访问请求队列的示意图,在本发明的一个实施例中,当访问请求插入到快速访问请求队列的队尾后,快速访问请求队列根据访问请求执行时占用的资源数量排序。图中访问请求右侧方格内的数值是该访问请求执行时所访问网站的访问请求量(类似地,a客户端的“5”表示该访问请求所访问网站的访问清求量是5),作为衡量该访问请求的执行时占用的资源数量。如图中所示,新的f客户端所访问网站的访问清求量是7。此时由于主访问请求队列的占用资源总量大于主访问请求队列阈值,因此f客户端的访问将先被插入到快速访问请求队列的队尾,然后再对快速访问请求队列排序。因为执行时占用资源数量较少的访问请求将被排在快速访问请求队列的前方,所以这些访问请求可以被尽快执行。此外,由于快速访问请求队列是被维护成有序的,所以新的访问请求可以较短的时间插入到快速访问请求队列的正确位置(事实上,该操作的时间复杂度是当前队列长度的对数)。

在本发明的一个实施例中,主访问请求队列和快速访问请求队列中的访问请求可以由不同的路由器处理,从而并行处理从主访问请求队列的队头和快速访问请求队列的队头获取访问请求。由于访问量较少的网站与访问量较大的网站的访问请求不是在同一个队列内,因此某个短时期内的热门网站不会对其他网站正常访问请求的造成影响。进一步地,当网站的访问量超过迁移阈值时,对应网站由单独的路由器分配访问请求。

尽管本发明的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本发明的预定范围。此外,上文以发明人可预见的实施例对本发明进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本发明的非实质性改动仍可代表本发明的等效改动。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1