一种提供数据服务的处理系统及方法.pdf

上传人:32 文档编号:1093009 上传时间:2018-03-31 格式:PDF 页数:18 大小:636.35KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910167170.8

申请日:

2009.08.31

公开号:

CN101997854A

公开日:

2011.03.30

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 29/06申请日:20090831|||公开

IPC分类号:

H04L29/06; H04L29/08

主分类号:

H04L29/06

申请人:

阿里巴巴集团控股有限公司

发明人:

王晓哲; 郭晓东; 徐景

地址:

英属开曼群岛大开曼岛

优先权:

专利代理机构:

北京同达信恒知识产权代理有限公司 11291

代理人:

郭润湘

PDF下载: PDF下载
内容摘要

本发明公开了一种提供数据服务的处理系统及方法,包括:在接收到用户的提供数据服务的业务请求后,在需要调用外部接口时,基于调用外部接口的位置将业务拆分为初始逻辑业务与后续逻辑业务;对初始逻辑业务进行处理,并向反向代理服务器返回分段响应处理结果;反向代理服务器根据分段响应结果的请求调用外部接口;在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结果;向用户返回数据服务结果。使用本发明可以避免前端逻辑被阻塞,使得前端服务能够连续处理新请求而不用浪费时间在等待外部服务请求的响应上。

权利要求书

1: 一种提供数据服务的处理系统, 其特征在于, 包括 : 前端服务初始逻辑模块, 用于在接收到用户的提供数据服务的业务请求后, 确定提供 业务的过程中是否需调用外部接口 ; 在需要调用外部接口时, 基于调用外部接口的位置将 业务拆分为初始逻辑业务与后续逻辑业务, 所述初始业务逻辑为调用外部接口位置前的逻 辑业务, 所述后续业务逻辑为调用外部接口位置后的逻辑业务 ; 并对初始逻辑业务进行处 理后向反向代理服务器返回分段响应处理结果 ; 反向代理服务器, 用于根据分段响应结果的请求调用外部接口, 在调用的外部接口返 回响应结果后, 将分段响应结果与调用外部接口返回的响应结果提供给前端服务后续逻辑 模块 ; 前端服务后续逻辑模块, 用于将分段响应结果与调用外部接口返回的响应结果整合成 提供给用户的数据服务结果后返回反向代理服务器 ; 反向代理服务器还用于向用户返回数据服务结果。
2: 如权利要求 1 所述的系统, 其特征在于, 所述前端服务初始逻辑模块进一步用于返回包括 : 传递给所述前端服务后续逻辑模块 的上下文状态数据、 委托所述反向代理服务器进行慢速服务的请求、 以及慢速服务请求完 成后要调用的所述前端服务后续逻辑模块的逻辑地址的分段响应处理结果 ; 所述反向代理服务器进一步用于根据所述委托所述反向代理服务器进行慢速服务的 请求调用外部接口, 在调用的外部接口返回响应结果后, 将响应结果同所述上下文状态数 据按所述前端服务后续逻辑模块的逻辑地址提供给前端服务后续逻辑模块。
3: 如权利要求 2 所述的方法, 其特征在于, 所述前端服务后续逻辑模块进一步用于根 据响应结果同所述上下文状态数据按用户请求的业务类型整合成提供给用户的数据服务 结果。
4: 如权利要求 1 至 3 任一所述的系统, 其特征在于, 所述前端服务后续逻辑模块进一步 用于将数据服务结果以超文本传送协议 HTTP 响应形式返回反向代理服务器。
5: 如权利要求 1 至 3 任一所述的系统, 其特征在于, 所述前端服务初始逻辑模块进一步 用于在提供业务的过程中, 当调用的接口平均响应时间在 ms 级以上时, 确定提供业务的过 程中需调用外部接口。
6: 一种提供数据服务的处理方法, 其特征在于, 包括如下步骤 : 在接收到用户的提供数据服务的业务请求后, 确定提供业务的过程中是否需调用外部 接口 ; 在需要调用外部接口时, 基于调用外部接口的位置将业务拆分为初始逻辑业务与后续 逻辑业务, 所述初始业务逻辑为调用外部接口位置前的逻辑业务, 所述后续业务逻辑为调 用外部接口位置后的逻辑业务 ; 对初始逻辑业务进行处理, 并向反向代理服务器返回分段响应处理结果 ; 反向代理服务器根据分段响应结果的请求调用外部接口 ; 在调用的外部接口返回响应结果后, 将分段响应结果与调用外部接口返回的响应结果 整合成提供给用户的数据服务结果 ; 向用户返回数据服务结果。
7: 如权利要求 6 所述的方法, 其特征在于, 所述分段响应处理结果包括 : 传递给前端服 2 务后续逻辑的上下文状态数据、 委托所述反向代理服务器进行慢速服务的请求、 以及慢速 服务请求完成后要调用的前端服务后续逻辑的地址 ; 反向代理服务器根据分段响应结果的请求调用外部接口时, 是根据所述委托所述反向 代理服务器进行慢速服务的请求调用外部接口的 ; 在调用的外部接口返回响应结果后, 将分段响应结果与调用外部接口返回的响应结果 整合成提供给用户的数据服务结果, 是将响应结果同所述上下文状态数据按所述前端服务 后续逻辑的地址提供给前端服务后续逻辑。
8: 如权利要求 7 所述的方法, 其特征在于, 将分段响应结果与响应结果整合成提供给 用户的数据服务结果, 是前端服务后续逻辑根据响应结果同所述上下文状态数据按用户请 求的业务类型整合成提供给用户的数据服务结果。
9: 如权利要求 6 至 8 任一所述的方法, 其特征在于, 将数据服务结果以 HTTP 响应形式 返回反向代理服务器。
10: 如权利要求 6 至 8 任一所述的方法, 其特征在于, 在提供业务的过程中, 在确定提供 业务的过程中是否需调用外部接口时, 当调用的接口平均响应时间在 ms 级以上时, 确定提 供业务的过程中需调用外部接口。

说明书


一种提供数据服务的处理系统及方法

    【技术领域】
     本申请涉及网络数据服务技术, 特别涉及一种提供数据服务的处理系统及方法。背景技术 下面先对技术术语进行简要说明。
     反向代理 (Reverse Proxy) : 在客户端 - 服务器架构的系统中位于服务器一侧的 真实服务之前的转发服务, 可用于服务侧负载均衡、 客户端请求过滤转发等用途。
     拒绝服务 (Denial ofService) : 一种网站故障现象, 表现为用户无法与网站正常 建立连接。针对网站进行的攻击行为或网站内部服务故障都有可能引起该现象。
     Web 前端服务 (Web Front-end Service) : 网站分层架构角色之一, 作用为 : 直接 接受外部用户的 HTTP(Hypertext Transfer Protocol, 超文本传送协议 ) 连接, 综合使用内 部服务处理用户请求, 向外部用户发送 HTTP 形式的响应结果。
     慢速交互 (Slow Interaction) : 指客户端 - 服务器架构中由于网络故障或攻击行 为等原因造成请求或响应数据以远低于正常水平的速率进行传输的现象。
     I/O 复用服务模型 (I/O Multiplexing Service Model) : 一种通用网络服务模型, 将网络连接的状态变化表述为事件, 由不断产生的事件驱动业务逻辑循环运行, 多个网络 连接可以在同一循环内同时进行处理。该模型具备很好的并发连接处理能力, 且对慢速交 互过程有很强的耐受能力 ; 在该模型中业务逻辑需要显式拆分为状态机, 开发难度较高。
     线程服务模型 (Threading Service Model) : 一种通用网络服务模型, 为每个网络 连接分配一个服务线程, 服务线程内部逻辑阻塞等待网络连接传入请求数据, 进行顺序处 理并响应结果, 网络连接断开时服务线程得到释放, 可被分配处理其他传入的网络连接。 该 模型允许业务逻辑以自然的顺序流程表述, 开发难度不大 ; 在该模型中服务线程数量有限, 并发处理和慢速交互耐受能力受到较大限制, 容易产生拒绝服务 (DoS) 问题。
     大型网站的 Web 前端访问量大、 受关注程度高, 会经由各种不同的复杂网络环境 向用户提供服务。 为了简化 Web 前端难度, 提高开发效率, 会大量使用主要代表为 PHP( 一种 新型的 CGI(Common Gateway Interface, 公共网关接口 ) 网络程序编写语言 ) 的脚本类语 言实现前端业务逻辑, 此时一般会配合使用 Apache 结合内置 PHP 解释器或 Nginx/Lighttpd 结合 FastCGI(FastCommon Gateway Interface, 快速公共网关接口, 是一种改进的 CGI 协 议 ) 方式运行的 PHP 解释器的实现方式。由于此类线程型服务模型自身的限制, 单个前端 服务线程同时只能服务于一个用户连接。受到前端服务器资源的限制, 每台服务器上能够 启用的服务线程数量是有限的, 当外部网络出现问题或网站遭受慢速连接攻击时, 很容易 出现所有服务线程被耗尽导致无法为新的用户连接提供服务的情况 ; 即使对外网络环境正 常, 若前端处理逻辑本身调用的外部接口就需要消耗较长时间, 也同样会因为短时间内服 务线程耗尽产生拒绝服务的现象。
     目前, 对于由外部网络问题或攻击行为造成的大量慢速连接的一般处理方法是增 加一级反向代理 (Reverse Proxy), 使用基于 I/O 复用服务模型的轻量级 Web 服务器 ( 例
     如 Nginx 或 Lighttpd) 作为反向代理充当用户连接缓冲, 仅将发送了完整请求的用户连接 转发到原有 Apache 前端服务上进行正常的业务处理。由于基于 I/O 复用的轻量级 Web 服 务器对于大量慢速连接具有极佳的耐受能力, 这种方案可以很好地解决此类慢速连接引起 的拒绝服务问题。
     现有增加一级反向代理的方案虽然能解决由于外部网络问题或攻击行为产生的 慢速连接引起的拒绝服务问题, 但是, 该方案的不足在于 : 对于前端处理逻辑中本身就需要 调用耗时较长的外部接口而引起的拒绝服务则没有任何改进效果。 发明内容 本申请所解决的技术问题在于提供了一种提供数据服务的处理系统及方法, 用以 解决在前端处理逻辑中因需要调用耗时较长的外部接口而引起的拒绝服务的问题。
     本申请实施例中提供了一种提供数据服务的处理系统, 包括 :
     前端服务初始逻辑模块, 用于在接收到用户的提供数据服务的业务请求后, 确定 提供业务的过程中是否需调用外部接口 ; 在需要调用外部接口时, 基于调用外部接口的位 置将业务拆分为初始逻辑业务与后续逻辑业务, 所述初始业务逻辑为调用外部接口位置前 的逻辑业务, 所述后续业务逻辑为调用外部接口位置后的逻辑业务 ; 并对初始逻辑业务进 行处理后向反向代理服务器返回分段响应处理结果 ;
     反向代理服务器, 用于根据分段响应结果的请求调用外部接口, 在调用的外部接 口返回响应结果后, 将分段响应结果与调用外部接口返回的响应结果提供给前端服务后续 逻辑模块 ;
     前端服务后续逻辑模块, 用于将分段响应结果与调用外部接口返回的响应结果整 合成提供给用户的数据服务结果后返回反向代理服务器 ;
     反向代理服务器还用于向用户返回数据服务结果。
     较佳地, 所述前端服务初始逻辑模块进一步用于返回包括 : 传递给所述前端服 务后续逻辑模块的上下文状态数据、 委托所述反向代理服务器进行慢速服务的请求、 以及 慢速服务请求完成后要调用的所述前端服务后续逻辑模块的逻辑地址的分段响应处理结 果;
     所述反向代理服务器进一步用于根据所述委托所述反向代理服务器进行慢速服 务的请求调用外部接口, 在调用的外部接口返回响应结果后, 将响应结果同所述上下文状 态数据按所述前端服务后续逻辑模块的逻辑地址提供给前端服务后续逻辑模块。
     较佳地, 所述前端服务后续逻辑模块进一步用于根据响应结果同所述上下文状态 数据按用户请求的业务类型整合成提供给用户的数据服务结果。
     较佳地, 所述前端服务后续逻辑模块进一步用于将数据服务结果以超文本传送协 议 HTTP 响应形式返回反向代理服务器。
     较佳地, 所述前端服务初始逻辑模块进一步用于在提供业务的过程中, 当调用的 接口平均响应时间在 ms 级以上时, 确定提供业务的过程中需调用外部接口。
     本申请实施例中还提供了一种提供数据服务的处理方法, 包括如下步骤 :
     在接收到用户的提供数据服务的业务请求后, 确定提供业务的过程中是否需调用 外部接口 ;
     在需要调用外部接口时, 基于调用外部接口的位置将业务拆分为初始逻辑业务与 后续逻辑业务, 所述初始业务逻辑为调用外部接口位置前的逻辑业务, 所述后续业务逻辑 为调用外部接口位置后的逻辑业务 ;
     对初始逻辑业务进行处理, 并向反向代理服务器返回分段响应处理结果 ;
     反向代理服务器根据分段响应结果的请求调用外部接口 ;
     在调用的外部接口返回响应结果后, 将分段响应结果与调用外部接口返回的响应 结果整合成提供给用户的数据服务结果 ;
     向用户返回数据服务结果。
     较佳地, 所述分段响应处理结果包括 : 传递给前端服务后续逻辑的上下文状态数 据、 委托所述反向代理服务器进行慢速服务的请求、 以及慢速服务请求完成后要调用的前 端服务后续逻辑的地址 ;
     反向代理服务器根据分段响应结果的请求调用外部接口时, 是根据所述委托所述 反向代理服务器进行慢速服务的请求调用外部接口的 ;
     在调用的外部接口返回响应结果后, 将分段响应结果与调用外部接口返回的响应 结果整合成提供给用户的数据服务结果, 是将响应结果同所述上下文状态数据按所述前端 服务后续逻辑的地址提供给前端服务后续逻辑。 较佳地, 将分段响应结果与响应结果整合成提供给用户的数据服务结果, 是前端 服务后续逻辑根据响应结果同所述上下文状态数据按用户请求的业务类型整合成提供给 用户的数据服务结果。
     较佳地, 将数据服务结果以 HTTP 响应形式返回反向代理服务器。
     较佳地, 在提供业务的过程中, 在确定提供业务的过程中是否需调用外部接口时, 当调用的接口平均响应时间在 ms 级以上时, 确定提供业务的过程中需调用外部接口。
     本申请有益效果如下 :
     在本申请实施例提供的技术方案中, 在接收到用户的提供数据服务的业务请求 后, 首先需要确定提供业务的过程中是否需调用外部接口 ; 在确定需要调用外部接口时, 则 开始分段, 即: 基于调用外部接口的位置将业务拆分为初始逻辑业务与后续逻辑业务 ;
     然后, 对初始逻辑业务进行处理, 并向反向代理服务器返回分段响应处理结果 ; 而 反向代理服务器根据分段响应结果的请求调用外部接口 ; 并在调用的外部接口返回响应 结果后, 将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结 果。
     由于在本申请提供的技术方案中引入了分段反向代理, 将原本在前端逻辑中阻塞 进行的慢速服务请求委托给分段反向代理进行, 而在 Web 前端服务中将处理逻辑切分成多 段, 通过前置额外的代理服务处理阻塞操作并将这些分段的处理逻辑联系在一起, 从而避 免了前端逻辑被阻塞, 使得前端服务能够连续处理新请求而不用浪费时间在等待外部服务 请求的响应上。
     附图说明
     图 1 为本申请实施例中提供数据服务的处理系统结构示意图 ; 图 2 为本申请实施例中提供数据服务处理的原理示意图 ;图 3 为本申请实施例中提供数据服务的处理系统实施流程示意图 ; 图 4 为本申请实施例中提供数据服务的处理方法实施流程示意图 ; 图 5 为本申请实施例中现有技术的前端处理的时序示意图 ; 图 6 为本申请实施例中采用分段式反向代理处理的时序示意图。具体实施方式
     下面结合附图对本申请的具体实施方式进行说明。
     发明人在发明过程中注意到 : 现有增加一级反向代理的方案虽然能解决由于外部 网络问题或攻击行为产生的慢速连接引起的拒绝服务问题, 但是, 对于前端处理逻辑中本 身就需要调用耗时较长的外部接口而引起的拒绝服务则没有任何改进效果。
     例如, 对于前端处理逻辑中本身就需要调用耗时较长的外部接口这样的业务有 :
     前端生成用户个人信息等动态响应页面时需通过数据库接口从后端数据库获取 必要数据。 一般情况下数据库获取数据过程的耗时都大于 5ms, 而前端得到数据后生成页面 过程的耗时为 us 级, 因此等待外部数据库接口返回数据的耗时远大于前端生成页面的耗 时; 前端对外提供 HTTP API(Application Program Interface, 应用编程接口 ) 服务 时, 对每个 API 请求的处理都要调用一个或多个不同的内部 HTTP API。 每个内部 HTTPAPI 的 耗时从 2-100ms 不等, 而前端对它们的结果进行解析处理并生成最终响应的耗时为 us 级, 因此等待内部 HTTP API 返回数据的耗时远大于前端得到数据后产生 API 响应的耗时。
     基于此, 本申请实施例提供的技术方案针对这种情况, 提出了分段反向代理 (Staged Reverse Proxy) 的概念, 利用 I/O 复用型轻量级 Web 服务器本身对慢速连接的良 好处理能力, 实现了将原本在前端脚本内进行的外部接口调用委托给分段反向代理 ( 使用 轻量级 Web 服务器实现 ) 处理的通用方案, 使得前端服务程序不必浪费大量时间在等待外 部接口返回结果上, 而可以持续不断地处理新的用户连接, 能够显著提高前端服务的并发 吞吐量并避免拒绝服务情况的产生。下面对具体实施方式进行说明。
     图 1 为提供数据服务的处理系统结构示意图, 如图所示, 在系统中可以包括 :
     前端服务初始逻辑模块 101, 用于在接收到用户的提供数据服务的业务请求后, 确 定提供业务的过程中是否需调用外部接口 ; 在需要调用外部接口时, 基于调用外部接口的 位置将业务拆分为初始逻辑业务与后续逻辑业务, 所述初始业务逻辑为调用外部接口位置 前的逻辑业务, 所述后续业务逻辑为调用外部接口位置后的逻辑业务 ; 并对初始逻辑业务 进行处理后向反向代理服务器返回分段响应处理结果 ;
     反向代理服务器 102, 用于根据分段响应结果的请求调用外部接口, 在调用的外部 接口返回响应结果后, 将分段响应结果与调用外部接口返回的响应结果提供给前端服务后 续逻辑模块 ;
     前端服务后续逻辑模块 103, 用于将分段响应结果与调用外部接口返回的响应结 果整合成提供给用户的数据服务结果后返回反向代理服务器 ;
     反向代理服务器 102 还用于向用户返回数据服务结果。
     前端服务初始逻辑模块与前端服务后续逻辑模块的划分是从逻辑功能上来划分 的, 其与物理实体的关系在实施中可以是 : 由前端服务初始逻辑模块与前端服务后续逻辑
     模块共同构成一台物理上的前端服务器 ; 当然也可以是两台或者多台服务器分别来执行前 端服务初始逻辑模块与前端服务后续逻辑模块的功能, 共同构成一个前端服务器系统。
     实施中, 需要确保前端服务初始逻辑模块与前端服务后续逻辑模块中没有包含慢 速外部服务 ( 以下简称慢速服务 ) 调用, 因为这些调用耗时比剩余的业务逻辑处理耗时长 得多, 因此应该没有包含慢速业务, 否则无法以分段的方式来使反向代理提升性能。当这 些条件满足时, 便可以基于慢速外部服务接口调用位置来拆分初始逻辑和后续逻辑。慢速 外部服务接口在实施中主要可以包括数据库、 HTTP API 等平均响应时间在 ms 级以上的接 口。 以慢速服务接口为界, 调用接口之前的业务逻辑为初始逻辑, 接口返回结果后的业务逻 辑为后续逻辑。具体实施中, 当后续逻辑中也含有慢速服务接口调用时, 依然可以按此原 则将其继续拆分为新的初始逻辑和后续逻辑。那么, 可见, 通过上述方案, 慢速服务接口调 用本身则替换为对分段反向代理返回中间响应结果及后续逻辑路径, 由分段反向代理将拆 分开的多片业务逻辑串联起来运行。图 2 为提供数据服务处理的原理示意图, 如图所示, 将 原始前端逻辑处理的业务进行拆分, 拆分成初始逻辑部分 (init_logic) 与后续逻辑部分 (next_logic), 图中 SRP 表示外部接口。则由图可见, 则有 :
     一个用户包括了需要调用外部 HTTP 接口的、 要求提供数据服务的业务请求示意 为:
     //... 初始逻辑 ... // 调用外部 HTTP 接口 Resp = http_request(API_url) //... 后续逻辑 ( 使用调用结果 resp)... 则分拆分为初始逻辑部分处理的业务示意为 : //... 初始逻辑 ... // 响应中间结果, 要求 SRP 调用 HTTP 接口 // 继续执行后续逻辑 srp_request(API_url, ’ /next_logic’ , ctx) 然后外部接口 SRP 返回响应结果给后续逻辑部分, 后续逻辑部分执行的业务示意为: // 还原初始逻辑传递的上下文数据 (resp, ctx) = srp_parse()
     //... 后续逻辑 ( 使用调用结果 resp)...
     在上述处理过程中, 由反向代理服务器处理的是中间调用外部 HTTP 接口的响应 结果, 反向代理服务器要从中提取数据库 /HTTP API 请求目标、 维持逻辑状态的上下文数据 以及后续逻辑代码的位置, 并据此发起对慢速外部服务的请求并在获得响应数据后能够正 确地调用前端服务后续逻辑模块执行后续逻辑的继续处理。
     实施中, 业务逻辑中不需要同外部服务交互的部分都是由前端服务初始逻辑模块 与前端服务后续逻辑模块构成的前端服务自行处理的。数据库 /HTTPAPI 请求由反向代理 服务器发送到慢速服务后在慢速服务一侧进行处理, 分段反向代理本身只是等待慢速服务 返回响应结果。
     实施中, 前端服务初始逻辑模块还可以进一步用于返回包括 : 传递给所述前端服 务后续逻辑模块的上下文状态数据、 委托所述反向代理服务器进行慢速服务的请求、 以及 慢速服务请求完成后要调用的所述前端服务后续逻辑模块的逻辑地址的分段响应处理结
     果; 则反向代理服务器还可以进一步用于根据所述委托所述反向代理服务器进行慢 速服务的请求调用外部接口, 在调用的外部接口返回响应结果后, 将响应结果同所述上下 文状态数据按所述前端服务后续逻辑模块的逻辑地址提供给前端服务后续逻辑模块。
     实施中, 前端服务后续逻辑模块还可以进一步用于根据响应结果同所述上下文状 态数据按用户请求的业务类型整合成提供给用户的数据服务结果。
     实施中, 前端服务后续逻辑模块还可以进一步用于将数据服务结果以 HTTP 响应 形式返回反向代理服务器。
     实施中, 前端服务初始逻辑模块还可以进一步用于在提供业务的过程中, 当调用 的接口平均响应时间在 ms 级以上时, 确定提供业务的过程中需调用外部接口。
     为了更好的理解上述实施, 下面以实例进行说明。
     图 3 为提供数据服务的处理系统实施流程示意图, 则如图所示, 系统在提供数据 服务时可以包括如下步骤 :
     步骤 301、 用户通过浏览器向网站前端发起 HTTP 服务请求 ;
     步骤 302、 反向代理服务器处理用户的 HTTP 服务请求, 将请求数据收集完整后转 发到处理前端处理逻辑初始部分的前端服务初始逻辑模块 ;
     步骤 303、 前端服务初始逻辑模块对用户请求进行处理, 若需要使用其他慢速服务 的结果, 则以 HTTP 格式传回一个分段响应结果, 其中含有三部分信息 : 传递给前端服务后 续逻辑模块的上下文状态数据、 委托反向代理服务器进行慢速服务的请求、 以及慢速服务 请求完成后要调用的前端服务后续逻辑模块逻辑地址 ;
     步骤 304、 反向代理服务器收到前端服务初始逻辑模块返回的分段响应结果, 将上 下文状态数据保存下来, 同时向慢速服务发起请求, 等待其响应结果 ;
     步骤 305、 慢速服务向反向代理服务器返回响应结果 ;
     步骤 306、 反向代理服务器将慢速服务的响应结果同之前保存的上下文状态数据 整合后, 向前端服务后续逻辑模块地址发起新的处理请求 ;
     步骤 307、 前端服务后续逻辑模块根据反向代理服务器传入的上下文数据以及慢 速服务响应结果, 完成用户请求的处理, 并以 HTTP 响应形式返回最终结果 ;
     步骤 308、 反向代理服务器将最终结果以 HTTP 响应形式转发给用户的浏览器, 完 成用户连接的处理。
     在步骤 302 时反向代理接收到完整的用户请求数据后才向真正的前端服务转发 请求, 保证了前端服务不会被慢速连接所阻塞, 这一点特性同通用的反向代理方案相同 ; 但 是在步骤 303-307 中, 原本在前端逻辑中阻塞处理的慢速服务请求被交给了分段反向代理 进行, 本来会浪费在阻塞等待慢速服务响应上的前端处理资源现在可以被释放出来处理其 他的用户请求, 同时分段反向代理也不会被慢速服务所阻塞, 从而实现了总吞吐量的显著 提高。
     基于同一发明构思, 本申请实施例中还提供了一种提供数据服务的处理方法, 由 于该方法解决问题的原理与一种提供数据服务的处理系统相似, 因此该方法的实施可以参 见系统的实施, 重复之处不在赘述。
     图 4 为提供数据服务的处理方法实施流程示意图, 如图所示, 在提供数据服务的
     过程中可以包括如下步骤 :
     步骤 401、 在接收到用户的提供数据服务的业务请求后, 确定提供业务的过程中是 否需调用外部接口 ;
     步骤 402、 在需要调用外部接口时, 基于调用外部接口的位置将业务拆分为初始逻 辑业务与后续逻辑业务, 所述初始业务逻辑为调用外部接口位置前的逻辑业务, 所述后续 业务逻辑为调用外部接口位置后的逻辑业务 ;
     步骤 403、 对初始逻辑业务进行处理, 并向反向代理服务器返回分段响应处理结 果;
     步骤 404、 反向代理服务器根据分段响应结果的请求调用外部接口 ;
     步骤 405、 在调用的外部接口返回响应结果后, 将分段响应结果与响应结果整合成 提供给用户的数据服务结果 ;
     步骤 406、 向用户返回数据服务结果。
     实施中, 分段响应处理结果可以包括 : 传递给前端服务后续逻辑的上下文状态数 据、 委托所述反向代理服务器进行慢速服务的请求、 以及慢速服务请求完成后要调用的前 端服务后续逻辑的地址 ; 则, 在反向代理服务器根据分段响应结果的请求调用外部接口时, 可以是根据所 述委托所述反向代理服务器进行慢速服务的请求调用外部接口的 ;
     在调用的外部接口返回响应结果后, 将分段响应结果与响应结果整合成提供给用 户的数据服务结果, 可以是将响应结果同所述上下文状态数据按所述前端服务后续逻辑的 地址提供给前端服务后续逻辑。
     实施中, 将分段响应结果与响应结果整合成提供给用户的数据服务结果, 可以是 前端服务后续逻辑根据响应结果同所述上下文状态数据按用户请求的业务类型整合成提 供给用户的数据服务结果。
     实施中, 可以将数据服务结果以 HTTP 响应形式返回反向代理服务器。
     实施中, 在提供业务的过程中, 在确定提供业务的过程中是否需调用外部接口时, 可以是当调用的接口平均响应时间在 ms 级以上时, 确定提供业务的过程中需调用外部接 口。
     为了进一步的理解上述提供数据服务的处理系统与方法的技术方案, 以开放平台 对外提供的用户信息查询服务 (HTTP API 形式 ) 为例结合现有技术的方案再进行说明。
     现有技术的处理方案, 该服务的原始业务逻辑为 : 收到用户信息查询请求时, 根据 密钥等信息验证请求是否合法, 若验证未通过则拒绝服务 ; 验证通过时, 开放平台服务调用 HTTP 形式的后台用户信息系统接口查询对应用户的公开信息, 并基于用户查询请求中指定 的格式将这些信息转换为 XML 或 JSON 格式响应给用户, 从而完成一次查询请求的处理。
     在采用本申请实施例所提供的技术方案, 在采用分段式的反向代理之后, 业务逻 辑变为 :
     分段反向代理 : 收到用户信息查询 HTTP 请求, 向前端服务发起对初始逻辑代码位 置的 HTTP 请求转发查询数据。
     前端服务 ( 初始逻辑部分 ) : 从查询请求解析出密钥等验证信息, 检查请求是否合 法; 若请求非法则直接响应错误信息, 否则构造中间结果 ( 包括后台用户信息系统查询的
     URL、 查询请求中指定的响应格式 ( 即上下文数据 ) 和前端服务后续逻辑代码的位置 ) 作为 响应。
     反向代理 : 接收前端服务初始逻辑的响应结果, 若响应是错误信息则以其作为最 终响应结束查询请求的处理过程 ; 若响应是中间结果, 则将其暂时缓存起来, 从中提取出后 台用户信息系统查询 URL 后对该 URL 发起 HTTP 请求。
     慢速服务 ( 即后台用户信息系统 ) : 收到分段反向代理发送的 HTTP 查询请求, 查 找数据库中的用户数据并响应给分段反向代理。
     反向代理 : 后台用户信息系统发起的 HTTP 请求返回响应数据时, 从之前缓存的中 间结果中提取响应格式和后续逻辑代码位置, 向前端服务发起对后续逻辑代码位置的 HTTP 请求, 并发送后台用户信息系统的响应数据和查询请求指定的响应格式作为请求体。
     前端服务 ( 后续逻辑部分 ) : 从请求中提取出响应格式和后台用户信息系统的响 应数据, 构造出指定格式的最终响应结果返回给分段反向代理。
     反向代理 : 接收前端服务后续逻辑的响应结果, 将其作为最终响应结束查询请求 的处理过程。
     进一步的, 为了更好的了解上述提供数据服务的处理系统与方法的技术方案, 下 面从原理上来说明本申请实施例提供的技术方案的技术效果。 在本申请实施例提供的技术方案中, 前端逻辑要在所有涉及慢速服务调用的地方 拆分, 故总的分段数为 n+1(n 为原前端逻辑中所有慢速服务调用次数 ), 并不总是 2 段。拆 分逻辑后, 等待慢速服务响应的职责从前端服务转移到了分段反向代理, 因此前端服务上 原被浪费在等待上的时间可以用来继续处理新的客户请求, 总体来看请求吞吐量就有了明 显的提升, 但从每个请求自己的处理时间来看是没有变化的。
     图 5 为现有技术的前端处理的时序示意图, 图中是以单个服务线程为例进行示意 的, 则如图所示, 在按现有技术方式, 不使用分段式的反向代理时, 前端服务的连续请求处 理时序如图所示为 :
     每个请求的总处理时间为 T = Tc1+Tw+Tc2, 这里 Tc1 为外部服务请求前的业务逻 辑处理耗时, Tw 为等待外部服务请求响应耗时, Tc2 为外部服务请求后的业务逻辑处理耗 时, 且有 Tw >> Tc1 或 Tc2。易知这种理想时序情况下的请求吞吐量就是 QPS1 = 1/T( 次 / 秒 ), 由于存在其他开销, 实际情况下的最大吞吐量会略低于该理论值。
     图 6 为采用分段式反向代理处理的时序示意图, 图中仍以单个服务线程为例进行 示意, 则使用分段反向代理时, 前端服务的连续请求处理时序如图所示为 :
     此时每个请求的总处理时间仍然是 T = Tc1+Tw+Tc2。但对图中下侧的前端服 务来说, 在这种理想时序情况下的请求吞吐量变为了 QPS2 = 1/(Tc1+Tc2)( 次 / 秒 ), 而 QPS2 ∶ QPS1 = T:(Tc1+Tc2) = T:(T-Tw)。若以 Tw 为 ms 级、 Tc1 和 Tc2 为 us 级的标准量 级估计, 则 QPS2 ∶ QPS1 约为 1000 ∶ 1, 因此采用分段反向代理后可以极大地增加总请求吞 吐量。达到这种效果的关键之处在于分段反向代理是 I/O 复用结构, 可以并发进行大量连 接的响应等待而不消耗太多资源, 这样才能将大量前端服务返回的中间响应结果交给它, 使前端服务能够连续处理新请求而不用浪费时间在等待外部服务请求的响应上。
     在实际的实施过程中, 为了在已有前端服务中应用本申请实施例提供的技术方 案, 需要对原来的前端服务代码进行少量修改, 在涉及到同慢速服务交互的部分将前端代
     码人为切断为两段 : 上半段结束时按照方案定义的分段响应结果格式返回上下文数据、 慢 速服务请求数据以及下半段代码位置 ; 下半段从请求数据中解析出上下文数据恢复现场, 并根据慢速服务请求数据继续完成用户请求的处理。 考虑到前端处理逻辑中涉及慢速服务 请求的地方通常较少, 需要进行这种代码修改的工作量一般是可以接受的。
     同时, 在应用本申请实施例中提供的技术方案时, 前端处理逻辑的实现语言并不 仅限于 PHP, 实际上只要具备解析 HTTP 请求并以 HTTP 格式返回分段响应结果的能力, 任 何计算机语言都可以使用, 这也说明本申请实施例提供的技术方案也是一种通用性解决方 案。
     实施中, 为了达到更好的实施效果, 分段反向代理部分还可以使用基于 C 语言实 现的 I/O 复用轻量级 Web 服务器 ( 例如 Nginx 或 Lighttpd), 以最小化反向代理带来的处理 开销。实际的前端服务可以使用普通线程型 Web 服务器 ( 例如 Apache) 或轻量级 I/O 复用 Web 服务器和 FastCGI 方式运行的语言解释器实现处理逻辑 ; 使用操作系统提供的其他 I/ O 复用接口 ( 例如 FreeBSD 的 kqueue 或 Linux 的 epoll) 自行实现分段反向代理服务器全 部逻辑。
     由上述说明可见, 由于在本申请提供的技术方案中引入了分段反向代理的角色, 将原本在前端逻辑中阻塞进行的慢速服务请求委托给分段反向代理进行。在 Web 前端服务 中将处理逻辑切分成多段, 通过前置额外的代理服务处理阻塞操作并将这些分段的处理逻 辑联系在一起, 从而避免了前端逻辑被阻塞, 使得前端服务能够连续处理新请求而不用浪 费时间在等待外部服务请求的响应上。 本领域内的技术人员应明白, 本申请的实施例可提供为方法、 系统、 或计算机程序 产品。因此, 本申请可采用完全硬件实施例、 完全软件实施例、 或结合软件和硬件方面的实 施例的形式。而且, 本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机 可用存储介质 ( 包括但不限于磁盘存储器、 CD-ROM、 光学存储器等 ) 上实施的计算机程序产 品的形式。
     本申请是参照根据本申请实施例的方法、 设备 ( 系统 )、 和计算机程序产品的流程 图和 / 或方框图来描述的。应理解可由计算机程序指令实现流程图和 / 或方框图中的每一 流程和 / 或方框、 以及流程图和 / 或方框图中的流程和 / 或方框的结合。可提供这些计算 机程序指令到通用计算机、 专用计算机、 嵌入式处理机或其他可编程数据处理设备的处理 器以产生一个机器, 使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生 用于实现在流程图一个流程或多个流程和 / 或方框图一个方框或多个方框中指定的功能 的装置。
     这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特 定方式工作的计算机可读存储器中, 使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品, 该指令装置实现在流程图一个流程或多个流程和 / 或方框图一个方框或 多个方框中指定的功能。
     这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上, 使得在计 算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理, 从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和 / 或方框图 一个方框或多个方框中指定的功能的步骤。
     尽管已描述了本申请的优选实施例, 但本领域内的技术人员一旦得知了基本创造 性概念, 则可对这些实施例作出另外的变更和修改。 所以, 所附权利要求意欲解释为包括优 选实施例以及落入本申请范围的所有变更和修改。
     显然, 本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精 神和范围。这样, 倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围 之内, 则本申请也意图包含这些改动和变型在内。

一种提供数据服务的处理系统及方法.pdf_第1页
第1页 / 共18页
一种提供数据服务的处理系统及方法.pdf_第2页
第2页 / 共18页
一种提供数据服务的处理系统及方法.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《一种提供数据服务的处理系统及方法.pdf》由会员分享,可在线阅读,更多相关《一种提供数据服务的处理系统及方法.pdf(18页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101997854A43申请公布日20110330CN101997854ACN101997854A21申请号200910167170822申请日20090831H04L29/06200601H04L29/0820060171申请人阿里巴巴集团控股有限公司地址英属开曼群岛大开曼岛72发明人王晓哲郭晓东徐景74专利代理机构北京同达信恒知识产权代理有限公司11291代理人郭润湘54发明名称一种提供数据服务的处理系统及方法57摘要本发明公开了一种提供数据服务的处理系统及方法,包括在接收到用户的提供数据服务的业务请求后,在需要调用外部接口时,基于调用外部接口的位置将业务拆分为初始逻辑业。

2、务与后续逻辑业务;对初始逻辑业务进行处理,并向反向代理服务器返回分段响应处理结果;反向代理服务器根据分段响应结果的请求调用外部接口;在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结果;向用户返回数据服务结果。使用本发明可以避免前端逻辑被阻塞,使得前端服务能够连续处理新请求而不用浪费时间在等待外部服务请求的响应上。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书10页附图5页CN101997859A1/2页21一种提供数据服务的处理系统,其特征在于,包括前端服务初始逻辑模块,用于在接收到用户的提供数据服务的业。

3、务请求后,确定提供业务的过程中是否需调用外部接口;在需要调用外部接口时,基于调用外部接口的位置将业务拆分为初始逻辑业务与后续逻辑业务,所述初始业务逻辑为调用外部接口位置前的逻辑业务,所述后续业务逻辑为调用外部接口位置后的逻辑业务;并对初始逻辑业务进行处理后向反向代理服务器返回分段响应处理结果;反向代理服务器,用于根据分段响应结果的请求调用外部接口,在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果提供给前端服务后续逻辑模块;前端服务后续逻辑模块,用于将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结果后返回反向代理服务器;反向代理服务器还用于向用户返。

4、回数据服务结果。2如权利要求1所述的系统,其特征在于,所述前端服务初始逻辑模块进一步用于返回包括传递给所述前端服务后续逻辑模块的上下文状态数据、委托所述反向代理服务器进行慢速服务的请求、以及慢速服务请求完成后要调用的所述前端服务后续逻辑模块的逻辑地址的分段响应处理结果;所述反向代理服务器进一步用于根据所述委托所述反向代理服务器进行慢速服务的请求调用外部接口,在调用的外部接口返回响应结果后,将响应结果同所述上下文状态数据按所述前端服务后续逻辑模块的逻辑地址提供给前端服务后续逻辑模块。3如权利要求2所述的方法,其特征在于,所述前端服务后续逻辑模块进一步用于根据响应结果同所述上下文状态数据按用户请求。

5、的业务类型整合成提供给用户的数据服务结果。4如权利要求1至3任一所述的系统,其特征在于,所述前端服务后续逻辑模块进一步用于将数据服务结果以超文本传送协议HTTP响应形式返回反向代理服务器。5如权利要求1至3任一所述的系统,其特征在于,所述前端服务初始逻辑模块进一步用于在提供业务的过程中,当调用的接口平均响应时间在MS级以上时,确定提供业务的过程中需调用外部接口。6一种提供数据服务的处理方法,其特征在于,包括如下步骤在接收到用户的提供数据服务的业务请求后,确定提供业务的过程中是否需调用外部接口;在需要调用外部接口时,基于调用外部接口的位置将业务拆分为初始逻辑业务与后续逻辑业务,所述初始业务逻辑为。

6、调用外部接口位置前的逻辑业务,所述后续业务逻辑为调用外部接口位置后的逻辑业务;对初始逻辑业务进行处理,并向反向代理服务器返回分段响应处理结果;反向代理服务器根据分段响应结果的请求调用外部接口;在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结果;向用户返回数据服务结果。7如权利要求6所述的方法,其特征在于,所述分段响应处理结果包括传递给前端服权利要求书CN101997854ACN101997859A2/2页3务后续逻辑的上下文状态数据、委托所述反向代理服务器进行慢速服务的请求、以及慢速服务请求完成后要调用的前端服务后续逻辑的地址;反向代理服务。

7、器根据分段响应结果的请求调用外部接口时,是根据所述委托所述反向代理服务器进行慢速服务的请求调用外部接口的;在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结果,是将响应结果同所述上下文状态数据按所述前端服务后续逻辑的地址提供给前端服务后续逻辑。8如权利要求7所述的方法,其特征在于,将分段响应结果与响应结果整合成提供给用户的数据服务结果,是前端服务后续逻辑根据响应结果同所述上下文状态数据按用户请求的业务类型整合成提供给用户的数据服务结果。9如权利要求6至8任一所述的方法,其特征在于,将数据服务结果以HTTP响应形式返回反向代理服务器。10如权利。

8、要求6至8任一所述的方法,其特征在于,在提供业务的过程中,在确定提供业务的过程中是否需调用外部接口时,当调用的接口平均响应时间在MS级以上时,确定提供业务的过程中需调用外部接口。权利要求书CN101997854ACN101997859A1/10页4一种提供数据服务的处理系统及方法技术领域0001本申请涉及网络数据服务技术,特别涉及一种提供数据服务的处理系统及方法。背景技术0002下面先对技术术语进行简要说明。0003反向代理REVERSEPROXY在客户端服务器架构的系统中位于服务器一侧的真实服务之前的转发服务,可用于服务侧负载均衡、客户端请求过滤转发等用途。0004拒绝服务DENIALOFS。

9、ERVICE一种网站故障现象,表现为用户无法与网站正常建立连接。针对网站进行的攻击行为或网站内部服务故障都有可能引起该现象。0005WEB前端服务WEBFRONTENDSERVICE网站分层架构角色之一,作用为直接接受外部用户的HTTPHYPERTEXTTRANSFERPROTOCOL,超文本传送协议连接,综合使用内部服务处理用户请求,向外部用户发送HTTP形式的响应结果。0006慢速交互SLOWINTERACTION指客户端服务器架构中由于网络故障或攻击行为等原因造成请求或响应数据以远低于正常水平的速率进行传输的现象。0007I/O复用服务模型I/OMULTIPLEXINGSERVICEMO。

10、DEL一种通用网络服务模型,将网络连接的状态变化表述为事件,由不断产生的事件驱动业务逻辑循环运行,多个网络连接可以在同一循环内同时进行处理。该模型具备很好的并发连接处理能力,且对慢速交互过程有很强的耐受能力;在该模型中业务逻辑需要显式拆分为状态机,开发难度较高。0008线程服务模型THREADINGSERVICEMODEL一种通用网络服务模型,为每个网络连接分配一个服务线程,服务线程内部逻辑阻塞等待网络连接传入请求数据,进行顺序处理并响应结果,网络连接断开时服务线程得到释放,可被分配处理其他传入的网络连接。该模型允许业务逻辑以自然的顺序流程表述,开发难度不大;在该模型中服务线程数量有限,并发处。

11、理和慢速交互耐受能力受到较大限制,容易产生拒绝服务DOS问题。0009大型网站的WEB前端访问量大、受关注程度高,会经由各种不同的复杂网络环境向用户提供服务。为了简化WEB前端难度,提高开发效率,会大量使用主要代表为PHP一种新型的CGICOMMONGATEWAYINTERFACE,公共网关接口网络程序编写语言的脚本类语言实现前端业务逻辑,此时一般会配合使用APACHE结合内置PHP解释器或NGINX/LIGHTTPD结合FASTCGIFASTCOMMONGATEWAYINTERFACE,快速公共网关接口,是一种改进的CGI协议方式运行的PHP解释器的实现方式。由于此类线程型服务模型自身的限制。

12、,单个前端服务线程同时只能服务于一个用户连接。受到前端服务器资源的限制,每台服务器上能够启用的服务线程数量是有限的,当外部网络出现问题或网站遭受慢速连接攻击时,很容易出现所有服务线程被耗尽导致无法为新的用户连接提供服务的情况;即使对外网络环境正常,若前端处理逻辑本身调用的外部接口就需要消耗较长时间,也同样会因为短时间内服务线程耗尽产生拒绝服务的现象。0010目前,对于由外部网络问题或攻击行为造成的大量慢速连接的一般处理方法是增加一级反向代理REVERSEPROXY,使用基于I/O复用服务模型的轻量级WEB服务器例说明书CN101997854ACN101997859A2/10页5如NGINX或L。

13、IGHTTPD作为反向代理充当用户连接缓冲,仅将发送了完整请求的用户连接转发到原有APACHE前端服务上进行正常的业务处理。由于基于I/O复用的轻量级WEB服务器对于大量慢速连接具有极佳的耐受能力,这种方案可以很好地解决此类慢速连接引起的拒绝服务问题。0011现有增加一级反向代理的方案虽然能解决由于外部网络问题或攻击行为产生的慢速连接引起的拒绝服务问题,但是,该方案的不足在于对于前端处理逻辑中本身就需要调用耗时较长的外部接口而引起的拒绝服务则没有任何改进效果。发明内容0012本申请所解决的技术问题在于提供了一种提供数据服务的处理系统及方法,用以解决在前端处理逻辑中因需要调用耗时较长的外部接口而。

14、引起的拒绝服务的问题。0013本申请实施例中提供了一种提供数据服务的处理系统,包括0014前端服务初始逻辑模块,用于在接收到用户的提供数据服务的业务请求后,确定提供业务的过程中是否需调用外部接口;在需要调用外部接口时,基于调用外部接口的位置将业务拆分为初始逻辑业务与后续逻辑业务,所述初始业务逻辑为调用外部接口位置前的逻辑业务,所述后续业务逻辑为调用外部接口位置后的逻辑业务;并对初始逻辑业务进行处理后向反向代理服务器返回分段响应处理结果;0015反向代理服务器,用于根据分段响应结果的请求调用外部接口,在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果提供给前端服务后续逻辑。

15、模块;0016前端服务后续逻辑模块,用于将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结果后返回反向代理服务器;0017反向代理服务器还用于向用户返回数据服务结果。0018较佳地,所述前端服务初始逻辑模块进一步用于返回包括传递给所述前端服务后续逻辑模块的上下文状态数据、委托所述反向代理服务器进行慢速服务的请求、以及慢速服务请求完成后要调用的所述前端服务后续逻辑模块的逻辑地址的分段响应处理结果;0019所述反向代理服务器进一步用于根据所述委托所述反向代理服务器进行慢速服务的请求调用外部接口,在调用的外部接口返回响应结果后,将响应结果同所述上下文状态数据按所述前端服务后续逻辑。

16、模块的逻辑地址提供给前端服务后续逻辑模块。0020较佳地,所述前端服务后续逻辑模块进一步用于根据响应结果同所述上下文状态数据按用户请求的业务类型整合成提供给用户的数据服务结果。0021较佳地,所述前端服务后续逻辑模块进一步用于将数据服务结果以超文本传送协议HTTP响应形式返回反向代理服务器。0022较佳地,所述前端服务初始逻辑模块进一步用于在提供业务的过程中,当调用的接口平均响应时间在MS级以上时,确定提供业务的过程中需调用外部接口。0023本申请实施例中还提供了一种提供数据服务的处理方法,包括如下步骤0024在接收到用户的提供数据服务的业务请求后,确定提供业务的过程中是否需调用外部接口;说明。

17、书CN101997854ACN101997859A3/10页60025在需要调用外部接口时,基于调用外部接口的位置将业务拆分为初始逻辑业务与后续逻辑业务,所述初始业务逻辑为调用外部接口位置前的逻辑业务,所述后续业务逻辑为调用外部接口位置后的逻辑业务;0026对初始逻辑业务进行处理,并向反向代理服务器返回分段响应处理结果;0027反向代理服务器根据分段响应结果的请求调用外部接口;0028在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结果;0029向用户返回数据服务结果。0030较佳地,所述分段响应处理结果包括传递给前端服务后续逻辑的上下文状态。

18、数据、委托所述反向代理服务器进行慢速服务的请求、以及慢速服务请求完成后要调用的前端服务后续逻辑的地址;0031反向代理服务器根据分段响应结果的请求调用外部接口时,是根据所述委托所述反向代理服务器进行慢速服务的请求调用外部接口的;0032在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结果,是将响应结果同所述上下文状态数据按所述前端服务后续逻辑的地址提供给前端服务后续逻辑。0033较佳地,将分段响应结果与响应结果整合成提供给用户的数据服务结果,是前端服务后续逻辑根据响应结果同所述上下文状态数据按用户请求的业务类型整合成提供给用户的数据服务结果。。

19、0034较佳地,将数据服务结果以HTTP响应形式返回反向代理服务器。0035较佳地,在提供业务的过程中,在确定提供业务的过程中是否需调用外部接口时,当调用的接口平均响应时间在MS级以上时,确定提供业务的过程中需调用外部接口。0036本申请有益效果如下0037在本申请实施例提供的技术方案中,在接收到用户的提供数据服务的业务请求后,首先需要确定提供业务的过程中是否需调用外部接口;在确定需要调用外部接口时,则开始分段,即基于调用外部接口的位置将业务拆分为初始逻辑业务与后续逻辑业务;0038然后,对初始逻辑业务进行处理,并向反向代理服务器返回分段响应处理结果;而反向代理服务器根据分段响应结果的请求调用。

20、外部接口;并在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果整合成提供给用户的数据服务结果。0039由于在本申请提供的技术方案中引入了分段反向代理,将原本在前端逻辑中阻塞进行的慢速服务请求委托给分段反向代理进行,而在WEB前端服务中将处理逻辑切分成多段,通过前置额外的代理服务处理阻塞操作并将这些分段的处理逻辑联系在一起,从而避免了前端逻辑被阻塞,使得前端服务能够连续处理新请求而不用浪费时间在等待外部服务请求的响应上。附图说明0040图1为本申请实施例中提供数据服务的处理系统结构示意图;0041图2为本申请实施例中提供数据服务处理的原理示意图;说明书CN10199785。

21、4ACN101997859A4/10页70042图3为本申请实施例中提供数据服务的处理系统实施流程示意图;0043图4为本申请实施例中提供数据服务的处理方法实施流程示意图;0044图5为本申请实施例中现有技术的前端处理的时序示意图;0045图6为本申请实施例中采用分段式反向代理处理的时序示意图。具体实施方式0046下面结合附图对本申请的具体实施方式进行说明。0047发明人在发明过程中注意到现有增加一级反向代理的方案虽然能解决由于外部网络问题或攻击行为产生的慢速连接引起的拒绝服务问题,但是,对于前端处理逻辑中本身就需要调用耗时较长的外部接口而引起的拒绝服务则没有任何改进效果。0048例如,对于前。

22、端处理逻辑中本身就需要调用耗时较长的外部接口这样的业务有0049前端生成用户个人信息等动态响应页面时需通过数据库接口从后端数据库获取必要数据。一般情况下数据库获取数据过程的耗时都大于5MS,而前端得到数据后生成页面过程的耗时为US级,因此等待外部数据库接口返回数据的耗时远大于前端生成页面的耗时;0050前端对外提供HTTPAPIAPPLICATIONPROGRAMINTERFACE,应用编程接口服务时,对每个API请求的处理都要调用一个或多个不同的内部HTTPAPI。每个内部HTTPAPI的耗时从2100MS不等,而前端对它们的结果进行解析处理并生成最终响应的耗时为US级,因此等待内部HTTP。

23、API返回数据的耗时远大于前端得到数据后产生API响应的耗时。0051基于此,本申请实施例提供的技术方案针对这种情况,提出了分段反向代理STAGEDREVERSEPROXY的概念,利用I/O复用型轻量级WEB服务器本身对慢速连接的良好处理能力,实现了将原本在前端脚本内进行的外部接口调用委托给分段反向代理使用轻量级WEB服务器实现处理的通用方案,使得前端服务程序不必浪费大量时间在等待外部接口返回结果上,而可以持续不断地处理新的用户连接,能够显著提高前端服务的并发吞吐量并避免拒绝服务情况的产生。下面对具体实施方式进行说明。0052图1为提供数据服务的处理系统结构示意图,如图所示,在系统中可以包括0。

24、053前端服务初始逻辑模块101,用于在接收到用户的提供数据服务的业务请求后,确定提供业务的过程中是否需调用外部接口;在需要调用外部接口时,基于调用外部接口的位置将业务拆分为初始逻辑业务与后续逻辑业务,所述初始业务逻辑为调用外部接口位置前的逻辑业务,所述后续业务逻辑为调用外部接口位置后的逻辑业务;并对初始逻辑业务进行处理后向反向代理服务器返回分段响应处理结果;0054反向代理服务器102,用于根据分段响应结果的请求调用外部接口,在调用的外部接口返回响应结果后,将分段响应结果与调用外部接口返回的响应结果提供给前端服务后续逻辑模块;0055前端服务后续逻辑模块103,用于将分段响应结果与调用外部接。

25、口返回的响应结果整合成提供给用户的数据服务结果后返回反向代理服务器;0056反向代理服务器102还用于向用户返回数据服务结果。0057前端服务初始逻辑模块与前端服务后续逻辑模块的划分是从逻辑功能上来划分的,其与物理实体的关系在实施中可以是由前端服务初始逻辑模块与前端服务后续逻辑说明书CN101997854ACN101997859A5/10页8模块共同构成一台物理上的前端服务器;当然也可以是两台或者多台服务器分别来执行前端服务初始逻辑模块与前端服务后续逻辑模块的功能,共同构成一个前端服务器系统。0058实施中,需要确保前端服务初始逻辑模块与前端服务后续逻辑模块中没有包含慢速外部服务以下简称慢速服。

26、务调用,因为这些调用耗时比剩余的业务逻辑处理耗时长得多,因此应该没有包含慢速业务,否则无法以分段的方式来使反向代理提升性能。当这些条件满足时,便可以基于慢速外部服务接口调用位置来拆分初始逻辑和后续逻辑。慢速外部服务接口在实施中主要可以包括数据库、HTTPAPI等平均响应时间在MS级以上的接口。以慢速服务接口为界,调用接口之前的业务逻辑为初始逻辑,接口返回结果后的业务逻辑为后续逻辑。具体实施中,当后续逻辑中也含有慢速服务接口调用时,依然可以按此原则将其继续拆分为新的初始逻辑和后续逻辑。那么,可见,通过上述方案,慢速服务接口调用本身则替换为对分段反向代理返回中间响应结果及后续逻辑路径,由分段反向代。

27、理将拆分开的多片业务逻辑串联起来运行。图2为提供数据服务处理的原理示意图,如图所示,将原始前端逻辑处理的业务进行拆分,拆分成初始逻辑部分INIT_LOGIC与后续逻辑部分NEXT_LOGIC,图中SRP表示外部接口。则由图可见,则有0059一个用户包括了需要调用外部HTTP接口的、要求提供数据服务的业务请求示意为0060/初始逻辑0061/调用外部HTTP接口0062RESPHTTP_REQUESTAPI_URL0063/后续逻辑使用调用结果RESP0064则分拆分为初始逻辑部分处理的业务示意为0065/初始逻辑0066/响应中间结果,要求SRP调用HTTP接口0067/继续执行后续逻辑SRP。

28、_REQUESTAPI_URL,/NEXT_LOGIC,CTX0068然后外部接口SRP返回响应结果给后续逻辑部分,后续逻辑部分执行的业务示意为0069/还原初始逻辑传递的上下文数据RESP,CTXSRP_PARSE0070/后续逻辑使用调用结果RESP0071在上述处理过程中,由反向代理服务器处理的是中间调用外部HTTP接口的响应结果,反向代理服务器要从中提取数据库/HTTPAPI请求目标、维持逻辑状态的上下文数据以及后续逻辑代码的位置,并据此发起对慢速外部服务的请求并在获得响应数据后能够正确地调用前端服务后续逻辑模块执行后续逻辑的继续处理。0072实施中,业务逻辑中不需要同外部服务交互的部。

29、分都是由前端服务初始逻辑模块与前端服务后续逻辑模块构成的前端服务自行处理的。数据库/HTTPAPI请求由反向代理服务器发送到慢速服务后在慢速服务一侧进行处理,分段反向代理本身只是等待慢速服务返回响应结果。0073实施中,前端服务初始逻辑模块还可以进一步用于返回包括传递给所述前端服务后续逻辑模块的上下文状态数据、委托所述反向代理服务器进行慢速服务的请求、以及慢速服务请求完成后要调用的所述前端服务后续逻辑模块的逻辑地址的分段响应处理结说明书CN101997854ACN101997859A6/10页9果;0074则反向代理服务器还可以进一步用于根据所述委托所述反向代理服务器进行慢速服务的请求调用外部。

30、接口,在调用的外部接口返回响应结果后,将响应结果同所述上下文状态数据按所述前端服务后续逻辑模块的逻辑地址提供给前端服务后续逻辑模块。0075实施中,前端服务后续逻辑模块还可以进一步用于根据响应结果同所述上下文状态数据按用户请求的业务类型整合成提供给用户的数据服务结果。0076实施中,前端服务后续逻辑模块还可以进一步用于将数据服务结果以HTTP响应形式返回反向代理服务器。0077实施中,前端服务初始逻辑模块还可以进一步用于在提供业务的过程中,当调用的接口平均响应时间在MS级以上时,确定提供业务的过程中需调用外部接口。0078为了更好的理解上述实施,下面以实例进行说明。0079图3为提供数据服务的。

31、处理系统实施流程示意图,则如图所示,系统在提供数据服务时可以包括如下步骤0080步骤301、用户通过浏览器向网站前端发起HTTP服务请求;0081步骤302、反向代理服务器处理用户的HTTP服务请求,将请求数据收集完整后转发到处理前端处理逻辑初始部分的前端服务初始逻辑模块;0082步骤303、前端服务初始逻辑模块对用户请求进行处理,若需要使用其他慢速服务的结果,则以HTTP格式传回一个分段响应结果,其中含有三部分信息传递给前端服务后续逻辑模块的上下文状态数据、委托反向代理服务器进行慢速服务的请求、以及慢速服务请求完成后要调用的前端服务后续逻辑模块逻辑地址;0083步骤304、反向代理服务器收到。

32、前端服务初始逻辑模块返回的分段响应结果,将上下文状态数据保存下来,同时向慢速服务发起请求,等待其响应结果;0084步骤305、慢速服务向反向代理服务器返回响应结果;0085步骤306、反向代理服务器将慢速服务的响应结果同之前保存的上下文状态数据整合后,向前端服务后续逻辑模块地址发起新的处理请求;0086步骤307、前端服务后续逻辑模块根据反向代理服务器传入的上下文数据以及慢速服务响应结果,完成用户请求的处理,并以HTTP响应形式返回最终结果;0087步骤308、反向代理服务器将最终结果以HTTP响应形式转发给用户的浏览器,完成用户连接的处理。0088在步骤302时反向代理接收到完整的用户请求数。

33、据后才向真正的前端服务转发请求,保证了前端服务不会被慢速连接所阻塞,这一点特性同通用的反向代理方案相同;但是在步骤303307中,原本在前端逻辑中阻塞处理的慢速服务请求被交给了分段反向代理进行,本来会浪费在阻塞等待慢速服务响应上的前端处理资源现在可以被释放出来处理其他的用户请求,同时分段反向代理也不会被慢速服务所阻塞,从而实现了总吞吐量的显著提高。0089基于同一发明构思,本申请实施例中还提供了一种提供数据服务的处理方法,由于该方法解决问题的原理与一种提供数据服务的处理系统相似,因此该方法的实施可以参见系统的实施,重复之处不在赘述。0090图4为提供数据服务的处理方法实施流程示意图,如图所示,。

34、在提供数据服务的说明书CN101997854ACN101997859A7/10页10过程中可以包括如下步骤0091步骤401、在接收到用户的提供数据服务的业务请求后,确定提供业务的过程中是否需调用外部接口;0092步骤402、在需要调用外部接口时,基于调用外部接口的位置将业务拆分为初始逻辑业务与后续逻辑业务,所述初始业务逻辑为调用外部接口位置前的逻辑业务,所述后续业务逻辑为调用外部接口位置后的逻辑业务;0093步骤403、对初始逻辑业务进行处理,并向反向代理服务器返回分段响应处理结果;0094步骤404、反向代理服务器根据分段响应结果的请求调用外部接口;0095步骤405、在调用的外部接口返回。

35、响应结果后,将分段响应结果与响应结果整合成提供给用户的数据服务结果;0096步骤406、向用户返回数据服务结果。0097实施中,分段响应处理结果可以包括传递给前端服务后续逻辑的上下文状态数据、委托所述反向代理服务器进行慢速服务的请求、以及慢速服务请求完成后要调用的前端服务后续逻辑的地址;0098则,在反向代理服务器根据分段响应结果的请求调用外部接口时,可以是根据所述委托所述反向代理服务器进行慢速服务的请求调用外部接口的;0099在调用的外部接口返回响应结果后,将分段响应结果与响应结果整合成提供给用户的数据服务结果,可以是将响应结果同所述上下文状态数据按所述前端服务后续逻辑的地址提供给前端服务后。

36、续逻辑。0100实施中,将分段响应结果与响应结果整合成提供给用户的数据服务结果,可以是前端服务后续逻辑根据响应结果同所述上下文状态数据按用户请求的业务类型整合成提供给用户的数据服务结果。0101实施中,可以将数据服务结果以HTTP响应形式返回反向代理服务器。0102实施中,在提供业务的过程中,在确定提供业务的过程中是否需调用外部接口时,可以是当调用的接口平均响应时间在MS级以上时,确定提供业务的过程中需调用外部接口。0103为了进一步的理解上述提供数据服务的处理系统与方法的技术方案,以开放平台对外提供的用户信息查询服务HTTPAPI形式为例结合现有技术的方案再进行说明。0104现有技术的处理方。

37、案,该服务的原始业务逻辑为收到用户信息查询请求时,根据密钥等信息验证请求是否合法,若验证未通过则拒绝服务;验证通过时,开放平台服务调用HTTP形式的后台用户信息系统接口查询对应用户的公开信息,并基于用户查询请求中指定的格式将这些信息转换为XML或JSON格式响应给用户,从而完成一次查询请求的处理。0105在采用本申请实施例所提供的技术方案,在采用分段式的反向代理之后,业务逻辑变为0106分段反向代理收到用户信息查询HTTP请求,向前端服务发起对初始逻辑代码位置的HTTP请求转发查询数据。0107前端服务初始逻辑部分从查询请求解析出密钥等验证信息,检查请求是否合法;若请求非法则直接响应错误信息,。

38、否则构造中间结果包括后台用户信息系统查询的说明书CN101997854ACN101997859A8/10页11URL、查询请求中指定的响应格式即上下文数据和前端服务后续逻辑代码的位置作为响应。0108反向代理接收前端服务初始逻辑的响应结果,若响应是错误信息则以其作为最终响应结束查询请求的处理过程;若响应是中间结果,则将其暂时缓存起来,从中提取出后台用户信息系统查询URL后对该URL发起HTTP请求。0109慢速服务即后台用户信息系统收到分段反向代理发送的HTTP查询请求,查找数据库中的用户数据并响应给分段反向代理。0110反向代理后台用户信息系统发起的HTTP请求返回响应数据时,从之前缓存的中。

39、间结果中提取响应格式和后续逻辑代码位置,向前端服务发起对后续逻辑代码位置的HTTP请求,并发送后台用户信息系统的响应数据和查询请求指定的响应格式作为请求体。0111前端服务后续逻辑部分从请求中提取出响应格式和后台用户信息系统的响应数据,构造出指定格式的最终响应结果返回给分段反向代理。0112反向代理接收前端服务后续逻辑的响应结果,将其作为最终响应结束查询请求的处理过程。0113进一步的,为了更好的了解上述提供数据服务的处理系统与方法的技术方案,下面从原理上来说明本申请实施例提供的技术方案的技术效果。0114在本申请实施例提供的技术方案中,前端逻辑要在所有涉及慢速服务调用的地方拆分,故总的分段数。

40、为N1N为原前端逻辑中所有慢速服务调用次数,并不总是2段。拆分逻辑后,等待慢速服务响应的职责从前端服务转移到了分段反向代理,因此前端服务上原被浪费在等待上的时间可以用来继续处理新的客户请求,总体来看请求吞吐量就有了明显的提升,但从每个请求自己的处理时间来看是没有变化的。0115图5为现有技术的前端处理的时序示意图,图中是以单个服务线程为例进行示意的,则如图所示,在按现有技术方式,不使用分段式的反向代理时,前端服务的连续请求处理时序如图所示为0116每个请求的总处理时间为TTC1TWTC2,这里TC1为外部服务请求前的业务逻辑处理耗时,TW为等待外部服务请求响应耗时,TC2为外部服务请求后的业务。

41、逻辑处理耗时,且有TWTC1或TC2。易知这种理想时序情况下的请求吞吐量就是QPS11/T次/秒,由于存在其他开销,实际情况下的最大吞吐量会略低于该理论值。0117图6为采用分段式反向代理处理的时序示意图,图中仍以单个服务线程为例进行示意,则使用分段反向代理时,前端服务的连续请求处理时序如图所示为0118此时每个请求的总处理时间仍然是TTC1TWTC2。但对图中下侧的前端服务来说,在这种理想时序情况下的请求吞吐量变为了QPS21/TC1TC2次/秒,而QPS2QPS1TTC1TC2TTTW。若以TW为MS级、TC1和TC2为US级的标准量级估计,则QPS2QPS1约为10001,因此采用分段反。

42、向代理后可以极大地增加总请求吞吐量。达到这种效果的关键之处在于分段反向代理是I/O复用结构,可以并发进行大量连接的响应等待而不消耗太多资源,这样才能将大量前端服务返回的中间响应结果交给它,使前端服务能够连续处理新请求而不用浪费时间在等待外部服务请求的响应上。0119在实际的实施过程中,为了在已有前端服务中应用本申请实施例提供的技术方案,需要对原来的前端服务代码进行少量修改,在涉及到同慢速服务交互的部分将前端代说明书CN101997854ACN101997859A9/10页12码人为切断为两段上半段结束时按照方案定义的分段响应结果格式返回上下文数据、慢速服务请求数据以及下半段代码位置;下半段从请。

43、求数据中解析出上下文数据恢复现场,并根据慢速服务请求数据继续完成用户请求的处理。考虑到前端处理逻辑中涉及慢速服务请求的地方通常较少,需要进行这种代码修改的工作量一般是可以接受的。0120同时,在应用本申请实施例中提供的技术方案时,前端处理逻辑的实现语言并不仅限于PHP,实际上只要具备解析HTTP请求并以HTTP格式返回分段响应结果的能力,任何计算机语言都可以使用,这也说明本申请实施例提供的技术方案也是一种通用性解决方案。0121实施中,为了达到更好的实施效果,分段反向代理部分还可以使用基于C语言实现的I/O复用轻量级WEB服务器例如NGINX或LIGHTTPD,以最小化反向代理带来的处理开销。。

44、实际的前端服务可以使用普通线程型WEB服务器例如APACHE或轻量级I/O复用WEB服务器和FASTCGI方式运行的语言解释器实现处理逻辑;使用操作系统提供的其他I/O复用接口例如FREEBSD的KQUEUE或LINUX的EPOLL自行实现分段反向代理服务器全部逻辑。0122由上述说明可见,由于在本申请提供的技术方案中引入了分段反向代理的角色,将原本在前端逻辑中阻塞进行的慢速服务请求委托给分段反向代理进行。在WEB前端服务中将处理逻辑切分成多段,通过前置额外的代理服务处理阻塞操作并将这些分段的处理逻辑联系在一起,从而避免了前端逻辑被阻塞,使得前端服务能够连续处理新请求而不用浪费时间在等待外部服。

45、务请求的响应上。0123本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质包括但不限于磁盘存储器、CDROM、光学存储器等上实施的计算机程序产品的形式。0124本申请是参照根据本申请实施例的方法、设备系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、。

46、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。0125这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。0126这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机。

47、实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。说明书CN101997854ACN101997859A10/10页130127尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。0128显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。说明书CN101997854ACN101997859A1/5页14图1说明书附图CN101997854ACN101997859A2/5页15图2说明书附图CN101997854ACN101997859A3/5页16图3说明书附图CN101997854ACN101997859A4/5页17图4图5说明书附图CN101997854ACN101997859A5/5页18图6说明书附图CN101997854A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1