一种采用异步化方式处理并发数据的方法及系统
技术领域
本发明涉及无线网络通信领域,尤其涉及一种采用异步化方式处理并发数据的方法及系统。
背景技术
目前,当网站进行投票、问卷调查等运营活动时,大量的并发请求会导致后端压力过大,尤其对于常见的瓶颈服务(如数据库),一旦数据库压力过大,必然导致接口变慢,进而出现页面卡顿的现象,用户点击投票按钮没有反应或者页面直接报错,最终影响用户体验,活动无法如期进行。
因此需要一种能够有效应对大量的并发网络访问请求的方法和系统。
发明内容
为了解决现有技术中的问题,本发明提供了一种采用异步化方式处理并发数据的方法和系统。
根据本发明的一个方面,提供了一种采用异步化方式处理并发数据的方法,所述方法包括:
接收针对目标域名的网络访问请求并获取对网络访问请求的响应参数;
根据所述网络访问请求的并发量和所述网络访问请求响应参数判断满足从非异步化处理状态转换成异步化处理状态的条件后,对接收到的针对目标域名的网络访问请求进行异步化处理后向所述目标域名的服务器转发;
根据所述网络访问请求的并发量判断满足从异步化处理状态转换成非异步化处理状态的条件后,将接收到的针对目标域名的网络访问请求直接向所述目标域名的服务器转发。
其中,所述网络访问请求的响应参数包括网络访问请求响应平均时长或异常状态码率;
从非异步化处理状态转换成异步化处理状态的条件包括:所述网络访问请求的并发量大于预设并发阈值,还包括设定时间段内网络访问请求响应平均时长大于预设时长或异常状态码率大于预设比例;
从异步化处理状态转换成非异步化处理状态的条件包括:所述网络访问请求的并发量小于预设并发阈值。
其中,对接收到的针对目标域名的网络访问请求进行异步化处理后向所述目标域名的服务器转发包括:确定所述服务器的网络访问请求处理能力,将接收到的所述网络访问请求依次存入缓存队列,以与所述网络访问请求处理能力匹配的速度从所述缓存队列提取网络访问请求并向所述服务器发送。
其中,所述确定所述服务器的网络访问请求处理能力包括以下方式中的一种:
方式一,获取预先获知的所述服务器的网络访问请求最大处理能力,将此网络访问请求最大处理能力作为确定的所述服务器的网络访问请求处理能力;
方式二,获取预先获知的所述服务器的网络访问请求最大处理能力,根据所述服务器的设定时间段内网络访问请求响应平均时长或异常状态码率,将以预设幅度对所述网络访问请求最大处理能力进行增大或减少后的值作为确定的所述服务器的网络访问请求处理能力;
方式三,根据所述服务器的设定时间段内网络访问请求响应平均时长或异常状态码率实时计算所述服务器的网络访问请求处理能力。
其中,对接收到的针对目标域名的网络访问请求进行异步化处理后向所述目标域名的服务器转发包括以下方式中的一种:
方式一,在将接收到的所述网络访问请求依次存入缓存队列之后,且在从所述缓存队列提取网络访问请求并向所述服务器发送之前,向发出所述网络访问请求的源地址返回响应信息;
方式二,在将接收到的所述网络访问请求依次存入缓存队列,从所述缓存队列提取网络访问请求并向所述服务器发送,并从所述服务器接收到响应之后,向发出所述网络访问请求的源地址返回响应信息。
根据本发明的另一方面,提供了一种采用异步化方式处理并发数据的系统,所述系统在分发服务器上实现,所述系统包括:
接收模块,用于接收针对目标域名的网络访问请求并获取对网络访问请求的响应参数;
判断模块,用于根据所述网络访问请求的并发量和所述网络访问请求的响应参数判断是否满足从非异步化处理状态转换成异步化处理状态的条件,以及根据所述网络访问请求的并发量判断是否满足从异步化处理状态转换成非异步化处理状态的条件;
异步化处理模块,用于所述判断模块判断满足从非异步化处理状态转换成异步化处理状态的条件后,对接收到的针对目标域名的网络访问请求进行异步化处理后向所述目标域名的服务器转发;
发送模块,用于所述判断模块判断满足从异步化处理状态转换成非异步化处理状态的条件后,将接收到的针对目标域名的网络访问请求直接向所述目标域名的服务器转发。
其中,所述网络访问请求的响应参数包括网络访问请求响应平均时长或异常状态码率;
从非异步化处理状态转换成异步化处理状态的条件包括:所述网络访问请求的并发量大于预设并发阈值,还包括设定时间段内网络访问请求响应平均时长大于预设时长或异常状态码率大于预设比例;
从异步化处理状态转换成非异步化处理状态的条件包括:所述网络访问请求的并发量小于预设并发阈值。
其中,所述异步化处理模块还用于执行下述异步化处理:确定所述服务器的网络访问请求处理能力,将接收到的所述网络访问请求依次存入缓存队列,以与所述网络访问请求处理能力匹配的速度从所述缓存队列提取网络访问请求并向所述服务器发送。
其中,所述异步化处理模块还用于执行下述方式中的一种以确定所述服务器的网络访问请求处理能力:
方式一,获取预先获知的所述服务器的网络访问请求最大处理能力,将此网络访问请求最大处理能力作为确定的所述服务器的网络访问请求处理能力;
方式二,获取预先获知的所述服务器的网络访问请求最大处理能力,根据所述服务器的设定时间段内网络访问请求响应平均时长或异常状态码率,将以预设幅度对所述网络访问请求最大处理能力进行增大或减少后的值作为确定的所述服务器的网络访问请求处理能力;
方式三,根据所述服务器的设定时间段内网络访问请求响应平均时长或异常状态码率实时计算所述服务器的网络访问请求处理能力。
其中,所述发送模块还用于采用以下方式中的一种向发出所述网络访问请求的源地址返回响应信息:
方式一,在所述异步化处理模块将接收到的所述网络访问请求依次存入缓存队列之后,且在从所述缓存队列提取网络访问请求并向所述服务器发送之前,向发出所述网络访问请求的源地址返回响应信息;
方式二,在所述异步化处理模块将接收到的所述网络访问请求依次存入缓存队列,从所述缓存队列提取网络访问请求并向所述服务器发送,并从所述服务器接收到响应之后,向发出所述网络访问请求的源地址返回响应信息。
本发明中的采用异步化方式处理并发数据的方法和系统,通过加入异步化处理,即当访问量突增时,自动对网络访问请求进行异步化处理,异步化处理队列的宽度和后端的实际承载能力相符,这样再大的访问量也压不垮后端,并且能智能控制请求是否经过异步化处理系统,从而保护网站在访问量巨大时,也可以安全地运行,在网站访问量小的时候,不经过异步步队列系统,节省请求的时间开销。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明的采用异步化方式处理并发数据的方法的流程图;
图2是根据本发明的采用异步化方式处理并发数据的系统的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本发明提供了一种采用异步化方式处理并发数据的方法。这里的异步化方式是指当接收到大量的网络访问请求时,不是将所有的网络访问请求全部转发给目标域名的服务器,而是将这些网络访问请求放入缓存队列中,根据服务器的网络访问请求处理能力,以与网络访问请求处理能力匹配的速度从缓存队列提取网络访问请求并向服务器发送。在这种情况下,大量的网络访问请求是以异步的方式向目标域名的服务器发送的,因此称为异步化方式。该方法包括:
步骤101,接收针对目标域名的网络访问请求并获取对网络访问请求的响应参数;
步骤102,根据网络访问请求的并发量和网络访问请求的响应参数判断满足从非异步化处理状态转换成异步化处理状态的条件后,对接收到的针对目标域名的网络访问请求进行异步化处理后向目标域名的服务器转发;
步骤103,根据网络访问请求的并发量判断满足从异步化处理状态转换成非异步化处理状态的条件后,将接收到的针对目标域名的网络访问请求直接向目标域名的服务器转发。
其中,网络访问请求响应参数包括网络访问请求响应平均时长或异常状态码率。这里的异常状态码率是指返回的异常状态码在返回的所有状态码中的占比。从非异步化处理状态转换成异步化处理状态的条件包括:网络访问请求的并发量大于预设并发阈值,还包括设定时间段内网络访问请求响应平均时长大于预设时长或异常状态码率大于预设比例。从异步化处理状态转换成非异步化处理状态的条件包括:网络访问请求的并发量小于预设并发阈值。判断是否从非异步化处理状态转换成异步化处理状态时,需要判断网络访问请求的并发量以及网络访问请求的响应参数;而判断是否从异步化处理状态转换成非异步化处理状态时,只需要判断网络访问请求的并发量。这里,网络访问请求响应的预设时长和异常状态码率可以根据具体的需求来设定,例如预设时长可以设定为3秒到10秒,优选设定为5秒,异常状态码率可以设定为5%到15%,优选设定为10%。
步骤102中,对接收到的针对目标域名的网络访问请求进行异步化处理后向目标域名的服务器转发包括:确定服务器的网络访问请求处理能力,将接收到的网络访问请求依次存入缓存队列,以与网络访问请求处理能力匹配的速度从缓存队列提取网络访问请求并向服务器发送。此处的异步化处理是将大量的超过服务器处理能力的并发请求存入缓存队列中,使得服务器能够分批处理网络访问请求,从而避免并发请求数量远远超过服务器处理能力时,服务器崩溃。
上述步骤中的确定服务器的网络访问请求处理能力包括以下方式中的一种:方式一,获取预先获知的服务器的网络访问请求最大处理能力,将此网络访问请求最大处理能力作为确定的服务器的网络访问请求处理能力;方式二,获取预先获知的服务器的网络访问请求最大处理能力,根据服务器的设定时间段内网络访问请求响应平均时长或异常状态码率,将以预设幅度对网络访问请求最大处理能力进行增大或减少后的值作为确定的服务器的网络访问请求处理能力;方式三,根据服务器的设定时间段内网络访问请求响应平均时长或异常状态码率实时计算服务器的网络访问请求处理能力。方式二是指可以根据实际的设定时间段内网络访问请求响应平均时长或异常状态码率对确定的服务器的网络访问请求处理能力进行调整,其中进行调整的预设幅度可以例如是10%。例如原并发设置为1000,以1000的并发访问后端发现后端平均响应时长大于阈值5s和异常状态码比率大于默认值10%,则并发值每次以设置的并发1000*10%=100这个数值下调,下调到的最低值为设置的并发1000*10%=100。
步骤102中,对接收到的针对目标域名的网络访问请求进行异步化处理后向目标域名的服务器转发包括以下方式中的一种:方式一,在将接收到的网络访问请求依次存入缓存队列之后,且在从缓存队列提取网络访问请求并向服务器发送之前,向发出网络访问请求的源地址返回响应信息;方式二,在将接收到的网络访问请求依次存入缓存队列,从缓存队列提取网络访问请求并向服务器发送,并从服务器接收到响应之后,向发出网络访问请求的源地址返回响应信息。
下面描述根据本发明的采用异步化方式处理并发数据的方法的具体实施例。该实施例中,分发服务器为负载均衡服务器,目标域名的服务器为该目标域名的web服务器。该方法包括下述步骤:
步骤一,负载均衡服务器接收针对目标域名的网络访问请求,并且实时从web服务器获取网络访问请求的响应平均时长和异常状态码率。
步骤二,负载均衡服务器根据接收到的当前网络访问请求的并发量和当前设定时间段内响应平均时长和异常状态码率,判断网络访问请求的并发量是否大于预设并发阈值,如果大于则判断设定时间段内响应平均时长是否大于预设时长或者异常状态码率是否大于预设比例,如果设定时间段内响应平均时长大于预设时长或者异常状态码率大于预设比例,则判断为进行异步化处理后向web服务器转发网络访问请求;否则判断为不进行异步化处理,直接向web服务器转发网络访问请求。
步骤三,当进行异步化处理时,负载均衡服务器根据网络访问请求的并发量判断网络访问请求的并发量是否大于预设并发阈值,如果否,则判断为此时不需要进行异步化处理,则将网络访问请求直接转发到web服务器。
步骤二中,可以采用下述两种具体方式对接收到的针对目标域名的网络访问请求进行异步化处理后向目标域名的服务器转发。方式一,在将接收到的所述网络访问请求依次存入缓存队列之后,负载均衡服务器就向发出网络访问请求的源地址返回响应信息,之后从所述缓存队列提取网络访问请求并向目标域名的服务器发送,目标域名的服务器向负载均衡服务器发送响应,负载均衡服务器判断是否有预设的回调URL,有的话,调用回调的URL传输响应内容。方式二,在将接收到的所述网络访问请求依次存入缓存队列,从所述缓存队列提取网络访问请求并向所述服务器发送后,目标域名的服务器向负载均衡服务器返回响应,负载均衡服务器向发出网络访问请求的源地址返回响应信息。
本发明还提供了一种采用异步化方式处理并发数据的系统,该系统在分发服务器上实现,该系统包括:
接收模块201,用于接收针对目标域名的网络访问请求并获取对网络访问请求的响应参数;
判断模块202,用于根据网络访问请求的并发量和网络访问请求的响应参数判断是否满足从非异步化处理状态转换成异步化处理状态的条件,以及根据网络访问请求的并发量判断是否满足从异步化处理状态转换成非异步化处理状态的条件;
异步化处理模块203,用于判断模块判断满足从非异步化处理状态转换成异步化处理状态的条件后,对接收到的针对目标域名的网络访问请求进行异步化处理后向目标域名的服务器转发;
发送模块204,用于判断模块判断满足从异步化处理状态转换成非异步化处理状态的条件后,将接收到的针对目标域名的网络访问请求直接向目标域名的服务器转发。
其中,网络访问请求的响应参数包括网络访问请求响应平均时长或异常状态码率;
从非异步化处理状态转换成异步化处理状态的条件包括:网络访问请求的并发量大于预设并发阈值,还包括设定时间段内网络访问请求响应平均时长大于预设时长或异常状态码率大于预设比例;
从异步化处理状态转换成非异步化处理状态的条件包括:网络访问请求的并发量小于预设并发阈值。
其中,预设时长可以设定为3秒到10秒,优选设定为5秒,异常状态码率可以设定为5%到15%,优选设定为10%。
其中,异步化处理模块还用于执行下述异步化处理:确定服务器的网络访问请求处理能力,将接收到的网络访问请求依次存入缓存队列,以与网络访问请求处理能力匹配的速度从缓存队列提取网络访问请求并向服务器发送。
其中,异步化处理模块还用于执行下述方式中的一种以确定服务器的网络访问请求处理能力:
方式一,获取预先获知的服务器的网络访问请求最大处理能力,将此网络访问请求最大处理能力作为确定的服务器的网络访问请求处理能力;
方式二,获取预先获知的服务器的网络访问请求最大处理能力,根据服务器的设定时间段内网络访问请求响应平均时长或异常状态码率,将以预设幅度对网络访问请求最大处理能力进行增大或减少后的值作为确定的服务器的网络访问请求处理能力;
方式三,根据服务器的设定时间段内网络访问请求响应平均时长或异常状态码率实时计算服务器的网络访问请求处理能力。
所述发送模块还用于采用以下方式中的一种向发出所述网络访问请求的源地址返回响应信息:
方式一,在所述异步化处理模块将接收到的所述网络访问请求依次存入缓存队列之后,且在从所述缓存队列提取网络访问请求并向所述服务器发送之前,向发出所述网络访问请求的源地址返回响应信息;
方式二,在所述异步化处理模块将接收到的所述网络访问请求依次存入缓存队列,从所述缓存队列提取网络访问请求并向所述服务器发送,并从所述服务器接收到响应之后,向发出所述网络访问请求的源地址返回响应信息。
本发明中的采用异步化方式处理并发数据的方法和系统,通过加入异步化处理,即当访问量突增时,自动对网络访问请求进行异步化处理,异步化处理队列的宽度和后端的实际承载能力相符,这样再大的访问量也压不垮后端,从而保护网站在访问量巨大时,也可以安全地运行。
上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。