CN109831536B - 一种前端负载均衡服务降级系统及方法 - Google Patents
一种前端负载均衡服务降级系统及方法 Download PDFInfo
- Publication number
- CN109831536B CN109831536B CN201910220496.6A CN201910220496A CN109831536B CN 109831536 B CN109831536 B CN 109831536B CN 201910220496 A CN201910220496 A CN 201910220496A CN 109831536 B CN109831536 B CN 109831536B
- Authority
- CN
- China
- Prior art keywords
- response
- load balancing
- http
- service
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种前端负载均衡服务降级系统及方法,所述方法包括:S101,接收HTTP访问请求;S102,负载均衡模块通过负载均衡算法选择最佳后端服务器后,将HTTP访问请求转发到该后端服务器,并获取该后端服务器的第一HTTP响应;S103,服务降级模块对第一HTTP响应进行选择性服务降级,得到第二HTTP响应;S104,输出第二HTTP响应。本发明综合了负载均衡和服务降级两种模式,通过负载均衡可以主动检测后端服务器的可用状态,并通过服务降级保证后端服务器不可用或响应缓慢而无法打开网页时,通过获取缓存数据打开网页,可以提高网站可用性,加快网页打开速度。
Description
技术领域
本发明涉及计算机技术领域,尤其是一种前端负载均衡服务降级系统及方法。
背景技术
对于互联网公司而言,网站产品的稳定性是至关重要的。为了保障网站的稳定性,目前大致有两种方案:
1、使用缓存系统,降低系统的负载,从而变相提升网站抗压能力,增强网站稳定性。目前比较流行的缓存解决方案有Varnish、Squid、Nginx+ngx_HTTP_proxy_module、CDN等。此方案仅能在源网站工作正常时起到加速作用,当源站较长时间处于不可用状态时,不一定能保障网站的正常访问。
2、采用服务降级模式,即在保障主要业务的前提下,允许辅助业务调取失败,甚至在极端情况下,关停辅助业务以保障主要业务。通常这涉及到对系统业务逻辑的拆分,并且当主要业务调用失败时,也会影响到网站的可用性。
上述两种方案都不能主动检测后端服务器的状态,并做出调整。
发明内容
本发明所要解决的技术问题是:针对上述存在的问题,提供一种前端负载均衡服务降级系统及方法,采用负载均衡+故障降级的模式,可以提高网站可用性,加快网页打开速度。
本发明采用的技术方案如下:
一种前端负载均衡服务降级系统,同时连接有N台后端服务器;所述前端负载均衡服务降级系统包括:负载均衡模块和服务降级模块。
一种前端负载均衡服务降级方法,包括:
S101,接收HTTP访问请求;
S102,负载均衡模块通过负载均衡算法选择最佳后端服务器后,将HTTP访问请求转发到该后端服务器,并获取该后端服务器的第一HTTP响应;
S103,服务降级模块对第一HTTP响应进行选择性服务降级,得到第二HTTP响应;
S104,输出第二HTTP响应。
进一步,步骤S101前端服务器接收客户端的HTTP访问请求的方法为:通过监听HTTP服务端口接收HTTP访问请求。
进一步,S102负载均衡模块通过负载均衡算法选择最佳后端服务器后,将HTTP访问请求转发到该后端服务器,并获取该后端服务器的第一HTTP响应的方法为:
S201,初始化负载均衡模块中的性能评定模块,性能评定模块的配置数据包括最大允许平均响应时间、最大允许响应错误率,单次响应超时时间,以及用于存放最近N条访问的HTTP响应代码和响应时间的统计队列;
S202,在接收HTTP访问请求时,性能评定模块读取并判断统计数据存储中存储的最近N条访问的平均响应时间是否超过最大允许平均响应时间,以及响应错误率是否超过最大允许响应错误率:若平均响应时间超过最大允许平均响应时间或者响应错误率超过最大允许响应错误率,则认定后端服务器暂时不可用,并生成响应代码为502的错误HTTP响应后结束当前流程;否则执行步骤S203;其中响应错误率为响应代码≥400的占比;
S203,负载均衡模块通过负载均衡算法选择最佳后端服务器后,将接收的HTTP访问请求修改相应的header后,转发到该后端服务器;
S204,负载均衡模块获取该后端服务器的第一HTTP响应,并将第一HTTP响应的HTTP响应代码和响应时间写入后端服务器的统计数据存储。
进一步,步骤S204中负载均衡模块获取该后端服务器的第一HTTP响应时,如果后端服务器响应时间超过单次响应超时时间,则生成响应代码为504的错误HTTP响应作为第一响应。
进一步,S103服务降级模块对第一HTTP响应进行选择性服务降级,得到第二HTTP响应的方法为:
S301,服务降级模块接收来自负载均衡模块的第一HTTP响应;
S302,服务降级模块判断第一HTTP响应的请求方法是否为GET:如果为GET,则执行步骤S303,否则结束流程;
S303,服务降级模块判断第一HTTP响应的HTTP响应代码是否大于400:如果大于400,则执行步骤S304,否则执行步骤S305;
S304,服务降级模块将HTTP访问请求中的host和url通过拼接和哈希转换为标准的缓存键,以缓存键作为key从缓存数据中查询:若查询有结果,则将结果数据作为第二HTTP响应,否则继续使用来自负载均衡模块的第一HTTP响应作为第二HTTP响应;
S305,将第一HTTP响应更新到缓存数据。
进一步,步骤S303中服务降级模块将HTTP访问请求中的host和url通过拼接和哈希转换为标准的缓存键的方法为:将HTTP访问请求的请求头中Host字段、请求方法、请求路径、请求参数拼接为一个字符串,并使用哈希算法将该字符串转换为固定长度的字符串后作为标准的缓存键。
进一步,步骤S304更新缓存数据的方法为:
S401,服务降级模块将HTTP访问请求中的host和url通过拼接和哈希转换为标准的缓存键,以缓存键作为key向分布式锁系统申请锁,并设置超时时间为缓存过期时间;若申请成功,则执行S402,否则结束流程;
S402,将第一HTTP响应的响应头和响应体根据缓存键存储到缓存数据中。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明综合了负载均衡和服务降级两种模式,通过负载均衡可以主动检测后端服务器的可用状态,并通过服务降级保证后端服务器不可用或响应缓慢而无法打开网页时,通过获取缓存数据打开网页,可以提高网站可用性,加快网页打开速度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明的前端负载均衡服务降级系统的系统框图。
图2为本发明的前端负载均衡服务降级方法的流程框图。
图3为本发明的负载均衡的流程框图。
图4为本发明的服务降级的流程框图。
图5为本发明的更新缓存数据的流程框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合实施例对本发明的特征和性能作进一步的详细描述。
本实施例提供的一种前端负载均衡服务降级系统,如图1所示,同时连接有N台后端服务器;所述前端负载均衡服务降级系统包括:负载均衡模块和服务降级模块。
基于上述前端负载均衡服务降级系统,本实施例还提供一种前端负载均衡服务降级方法,如图2所示,包括:
S101,接收HTTP访问请求;前端负载均衡服务降级系统通过HTTP服务端口连接至用户的客户端,因此,可以通过监听HTTP服务端口接收HTTP访问请求。
S102,负载均衡模块通过负载均衡算法选择最佳后端服务器后,将HTTP访问请求转发到该后端服务器,并获取该后端服务器的第一HTTP响应;
S103,服务降级模块对第一HTTP响应进行选择性服务降级,得到第二HTTP响应;
S104,输出第二HTTP响应。
进一步,如图3所示,S102负载均衡模块通过负载均衡算法选择最佳后端服务器后,将HTTP访问请求转发到该后端服务器,并获取该后端服务器的第一HTTP响应的方法为:
S201,初始化负载均衡模块中的性能评定模块,性能评定模块的配置数据包括最大允许平均响应时间、最大允许响应错误率,单次响应超时时间,以及用于存放最近N条访问的HTTP响应代码和响应时间的统计队列;
S202,在接收HTTP访问请求时,性能评定模块读取并判断统计数据存储中存储的最近N条访问的平均响应时间是否超过最大允许平均响应时间,以及响应错误率是否超过最大允许响应错误率:若平均响应时间超过最大允许平均响应时间或者响应错误率超过最大允许响应错误率,则认定后端服务器暂时不可用,并生成响应代码为502的错误HTTP响应后结束当前流程;否则执行步骤S203;所述响应错误率为响应代码≥400的占比。
S203,负载均衡模块通过负载均衡算法选择最佳后端服务器后,将接收的HTTP访问请求修改相应的header后,转发到该后端服务器;负载均衡算法可以是ip_hash、round_robin等算法。header包括X-Forwarded-For、Host、X-Real-IP等与反向代理相关HTTP头部。
S204,负载均衡模块获取该后端服务器的第一HTTP响应,并将第一HTTP响应的HTTP响应代码和响应时间写入后端服务器的统计数据存储。在负载均衡模块获取该后端服务器的第一HTTP响应时,如果后端服务器响应时间超过设定阈值,则生成响应代码为504的错误HTTP响应作为第一响应。
进一步,如图4所示,S103服务降级模块对第一HTTP响应进行选择性服务降级,得到第二HTTP响应的方法为:
S301,服务降级模块接收来自负载均衡模块的第一HTTP响应;
S302,服务降级模块判断第一HTTP响应的请求方法是否为GET:如果为GET,则执行步骤S303,否则结束流程;
S303,服务降级模块判断第一HTTP响应的HTTP响应代码是否大于400:如果大于400,则执行步骤S304,否则执行步骤S305;
S304,服务降级模块将HTTP访问请求中的host和url通过拼接和哈希转换为标准的缓存键,以缓存键作为key从缓存数据中查询:若查询有结果,则将结果数据作为第二HTTP响应,否则继续使用来自负载均衡模块的第一HTTP响应作为第二HTTP响应;
S305,将第一HTTP响应更新到缓存数据。
进一步,如图5所示,步骤S303中服务降级模块将HTTP访问请求中的host和url通过拼接和哈希转换为标准的缓存键的方法为:将HTTP访问请求的请求头中Host字段、请求方法、请求路径、请求参数拼接为一个字符串,并使用哈希算法将该字符串转换为固定长度的字符串后作为标准的缓存键。
进一步,步骤S304更新缓存数据的方法为:
S401,服务降级模块将HTTP访问请求中的host和url通过拼接和哈希转换为标准的缓存键,以缓存键作为key向分布式锁系统申请锁,并设置超时时间为缓存过期时间;若申请成功,则执行S402,否则结束流程;分布式锁系统可以采用基于Redis数据库的Multi/Exec、Setnx和Expire功能来实现。
S402,将第一HTTP响应的响应头和响应体根据缓存键存储到缓存数据中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种前端负载均衡服务降级方法,其特征在于,包括:
S101,接收HTTP访问请求;
S102,负载均衡模块通过负载均衡算法选择最佳后端服务器后,将HTTP访问请求转发到该后端服务器,并获取该后端服务器的第一HTTP响应;
S103,服务降级模块对第一HTTP响应进行选择性服务降级,得到第二HTTP响应;
S104,输出第二HTTP响应;
S102负载均衡模块通过负载均衡算法选择最佳后端服务器后,将HTTP访问请求转发到该后端服务器,并获取该后端服务器的第一HTTP响应的方法为:
S201,初始化负载均衡模块中的性能评定模块,性能评定模块的配置数据包括最大允许平均响应时间、最大允许响应错误率,单次响应超时时间,以及用于存放最近N条访问的HTTP响应代码和响应时间的统计队列;
S202,在接收HTTP访问请求时,性能评定模块读取并判断统计数据存储中存储的最近N条访问的平均响应时间是否超过最大允许平均响应时间,以及响应错误率是否超过最大允许响应错误率:若平均响应时间超过最大允许平均响应时间或者响应错误率超过最大允许响应错误率,则认定后端服务器暂时不可用,并生成响应代码为502的错误HTTP响应后结束当前流程;否则执行步骤S203;
S203,负载均衡模块通过负载均衡算法选择最佳后端服务器后,将接收的HTTP访问请求修改相应的header后,转发到该后端服务器;
S204,负载均衡模块获取该后端服务器的第一HTTP响应,并将第一HTTP响应的HTTP响应代码和响应时间写入后端服务器的统计数据存储。
2.如权利要求1所述的前端负载均衡服务降级方法,其特征在于,步骤S101前端服务器接收客户端的HTTP访问请求的方法为:通过监听HTTP服务端口接收HTTP访问请求。
3.如权利要求1所述的前端负载均衡服务降级方法,其特征在于,步骤S202中响应错误率为响应代码≥400的占比。
4.如权利要求1所述的前端负载均衡服务降级方法,其特征在于,步骤S204中负载均衡模块获取该后端服务器的第一HTTP响应时,如果后端服务器响应时间超过单次响应超时时间,则生成响应代码为504的错误HTTP响应作为第一响应。
5.如权利要求1所述的前端负载均衡服务降级方法,其特征在于,S103服务降级模块对第一HTTP响应进行选择性服务降级,得到第二HTTP响应的方法为:
S301,服务降级模块接收来自负载均衡模块的第一HTTP响应;
S302,服务降级模块判断第一HTTP响应的请求方法是否为GET:如果为GET,则执行步骤S303,否则结束流程;
S303,服务降级模块判断第一HTTP响应的HTTP响应代码是否大于400:如果大于400,则执行步骤S304,否则执行步骤S305;
S304,服务降级模块将HTTP访问请求中的host和url通过拼接和哈希转换为标准的缓存键,以缓存键作为key从缓存数据中查询:若查询有结果,则将结果数据作为第二HTTP响应,否则继续使用来自负载均衡模块的第一HTTP响应作为第二HTTP响应;
S305,将第一HTTP响应更新到缓存数据。
6.如权利要求5所述的前端负载均衡服务降级方法,其特征在于,步骤S303中服务降级模块将HTTP访问请求中的host和url通过拼接和哈希转换为标准的缓存键的方法为:将HTTP访问请求的请求头中Host字段、请求方法、请求路径、请求参数拼接为一个字符串,并使用哈希算法将该字符串转换为固定长度的字符串后作为标准的缓存键。
7.如权利要求5所述的前端负载均衡服务降级方法,其特征在于,步骤S304更新缓存数据的方法为:
S401,服务降级模块将HTTP访问请求中的host和url通过拼接和哈希转换为标准的缓存键,以缓存键作为key向分布式锁系统申请锁,并设置超时时间为缓存过期时间;若申请成功,则执行S402,否则结束流程;
S402,将第一HTTP响应的响应头和响应体根据缓存键存储到缓存数据中。
8.一种实现如权利要求1-7任一项所述的前端负载均衡服务降级方法的前端负载均衡服务降级系统,其特征在于,同时连接有N台后端服务器;所述前端负载均衡服务降级系统包括:负载均衡模块和服务降级模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910220496.6A CN109831536B (zh) | 2019-03-22 | 2019-03-22 | 一种前端负载均衡服务降级系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910220496.6A CN109831536B (zh) | 2019-03-22 | 2019-03-22 | 一种前端负载均衡服务降级系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109831536A CN109831536A (zh) | 2019-05-31 |
CN109831536B true CN109831536B (zh) | 2021-05-18 |
Family
ID=66871105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910220496.6A Active CN109831536B (zh) | 2019-03-22 | 2019-03-22 | 一种前端负载均衡服务降级系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109831536B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110311975B (zh) * | 2019-06-28 | 2022-06-03 | 北京奇艺世纪科技有限公司 | 一种数据请求处理方法及装置 |
CN110290222A (zh) * | 2019-07-16 | 2019-09-27 | 北京奇艺世纪科技有限公司 | 一种请求消息处理方法及装置 |
CN112738150A (zh) * | 2019-10-29 | 2021-04-30 | 厦门白山耘科技有限公司 | 文件处理方法及装置、传输设备、计算机可读存储介质 |
CN112100554A (zh) * | 2020-08-14 | 2020-12-18 | 北京思特奇信息技术股份有限公司 | 一种基于redis缓存提升页面响应速度的系统及方法 |
CN115883358A (zh) * | 2022-11-23 | 2023-03-31 | 紫光云技术有限公司 | 一种第三方应用监控、预警、降级的方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104394224A (zh) * | 2014-11-28 | 2015-03-04 | 无锡华云数据技术服务有限公司 | 一种负载均衡系统 |
CN105208058A (zh) * | 2014-06-19 | 2015-12-30 | 中国银联股份有限公司 | 基于web会话共享的信息交互系统 |
CN106210117A (zh) * | 2016-08-01 | 2016-12-07 | 浪潮软件股份有限公司 | 一种通过云端缓存实现的高性能服务架构 |
CN107181636A (zh) * | 2016-03-10 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 一种负载均衡系统中的健康检查方法及装置 |
CN107222567A (zh) * | 2017-07-07 | 2017-09-29 | 北京京东尚科信息技术有限公司 | 处理数据请求的方法、装置及服务集群 |
CN107231402A (zh) * | 2016-08-31 | 2017-10-03 | 北京新媒传信科技有限公司 | Http请求处理方法、装置及系统 |
CN107370806A (zh) * | 2017-07-12 | 2017-11-21 | 北京京东尚科信息技术有限公司 | Http状态码监控方法、装置、存储介质和电子设备 |
CN107632889A (zh) * | 2017-06-28 | 2018-01-26 | 努比亚技术有限公司 | 一种实现服务降级的方法、设备及计算机可读存储介质 |
CN108322502A (zh) * | 2017-12-22 | 2018-07-24 | 杭州大搜车汽车服务有限公司 | 用于均衡服务器负载的方法、网关系统和存储介质 |
-
2019
- 2019-03-22 CN CN201910220496.6A patent/CN109831536B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105208058A (zh) * | 2014-06-19 | 2015-12-30 | 中国银联股份有限公司 | 基于web会话共享的信息交互系统 |
CN104394224A (zh) * | 2014-11-28 | 2015-03-04 | 无锡华云数据技术服务有限公司 | 一种负载均衡系统 |
CN107181636A (zh) * | 2016-03-10 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 一种负载均衡系统中的健康检查方法及装置 |
CN106210117A (zh) * | 2016-08-01 | 2016-12-07 | 浪潮软件股份有限公司 | 一种通过云端缓存实现的高性能服务架构 |
CN107231402A (zh) * | 2016-08-31 | 2017-10-03 | 北京新媒传信科技有限公司 | Http请求处理方法、装置及系统 |
CN107632889A (zh) * | 2017-06-28 | 2018-01-26 | 努比亚技术有限公司 | 一种实现服务降级的方法、设备及计算机可读存储介质 |
CN107222567A (zh) * | 2017-07-07 | 2017-09-29 | 北京京东尚科信息技术有限公司 | 处理数据请求的方法、装置及服务集群 |
CN107370806A (zh) * | 2017-07-12 | 2017-11-21 | 北京京东尚科信息技术有限公司 | Http状态码监控方法、装置、存储介质和电子设备 |
CN108322502A (zh) * | 2017-12-22 | 2018-07-24 | 杭州大搜车汽车服务有限公司 | 用于均衡服务器负载的方法、网关系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109831536A (zh) | 2019-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109831536B (zh) | 一种前端负载均衡服务降级系统及方法 | |
US10567287B2 (en) | System and methods for efficient media delivery using cache | |
US7543018B2 (en) | Caching signatures | |
US7716306B2 (en) | Data caching based on data contents | |
CN102523234B (zh) | 一种应用服务器集群实现方法及系统 | |
KR102100710B1 (ko) | 컨텐츠 중심 네트워크에서 컨텐츠 소유자 및 노드의 패킷 전송 방법 | |
US7617322B2 (en) | Secure peer-to-peer cache sharing | |
KR100734629B1 (ko) | 부분 캐싱 방법 및 이를 이용한 적응형 콘텐츠 전송 방법 | |
US9225777B2 (en) | Load balancer | |
WO2007009865A1 (en) | Adaptive session compression management method, compression manager and session management system | |
US11461276B2 (en) | Method and device for deduplication | |
US8788612B1 (en) | Cache based enhancement to optimization protocol | |
CN105340245A (zh) | 用于适配被配置为接收多媒体内容的客户机终端的下载行为的方法以及对应的终端 | |
CN107302582B (zh) | 千万级物联网场景的数据采集及弱推送方法 | |
US20150032798A1 (en) | Method And Apparatus For Providing Redundant Data Access | |
US20120151087A1 (en) | System and method for providing a network proxy data tunnel | |
US10645183B2 (en) | Redirection of client requests to multiple endpoints | |
CN105791366A (zh) | 一种大文件HTTP-Range 下载方法、缓存服务器及系统 | |
US10826863B2 (en) | Eliminating redundant notifications to SIP/SIMPLE subscribers | |
CN108595574B (zh) | 数据库集群的连接方法、装置、设备及存储介质 | |
CN107092529B (zh) | Olap服务方法、装置及系统 | |
JP2017510120A (ja) | クライアント端末にマルチメディアコンテンツのコンテンツ部分を提供する方法及び対応するキャッシュ | |
US20190052649A1 (en) | Detecting malware on spdy connections | |
CN114827159B (zh) | 网络请求路径优化方法、装置、设备和存储介质 | |
Genova et al. | Using signatures to improve URL routing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Room 201, 2 / F, building 3, No. 99, West District Avenue, hi tech Zone, Chengdu, Sichuan 610000 Applicant after: Chengdu Lutu Technology Co.,Ltd. Address before: Room 201, 2 / F, building 3, No. 99, West District Avenue, hi tech Zone, Chengdu, Sichuan 610000 Applicant before: CHENGDU 64365 TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |