CN113841373A - 用于基于网络的服务的“射后不理”卸载机制 - Google Patents
用于基于网络的服务的“射后不理”卸载机制 Download PDFInfo
- Publication number
- CN113841373A CN113841373A CN202080036475.XA CN202080036475A CN113841373A CN 113841373 A CN113841373 A CN 113841373A CN 202080036475 A CN202080036475 A CN 202080036475A CN 113841373 A CN113841373 A CN 113841373A
- Authority
- CN
- China
- Prior art keywords
- request
- http
- response
- client application
- server machine
- 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.)
- Pending
Links
- 230000007246 mechanism Effects 0.000 title description 5
- 230000004044 response Effects 0.000 claims abstract description 199
- 238000000034 method Methods 0.000 claims abstract description 92
- 230000008569 process Effects 0.000 claims abstract description 29
- 230000002688 persistence Effects 0.000 claims description 56
- 230000015654 memory Effects 0.000 claims description 23
- 230000005540 biological transmission Effects 0.000 claims description 18
- 238000012546 transfer Methods 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 230000002085 persistent effect Effects 0.000 claims description 4
- 230000001172 regenerating effect Effects 0.000 claims 1
- 230000002452 interceptive effect Effects 0.000 description 28
- 230000000875 corresponding effect Effects 0.000 description 21
- 230000001133 acceleration Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 16
- 238000012805 post-processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000003111 delayed effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000015556 catabolic process Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/59—Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2895—Intermediate processing functionally located close to the data provider application, e.g. reverse proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
- Telephonic Communication Services (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
在各个实施例中,代理应用处理与基于网络的服务相关联的请求。在操作中,代理应用确定从客户端应用接收到的第一请求表示可以从服务器机器卸载对所述第一请求的响应。在将所述第一请求传输到所述服务器机器之前,代理应用将对所述第一请求的响应传输到所述客户端应用。该响应表示所述服务器机器已经成功地处理了所述第一请求,有利的是,在接收到所述第一响应时,所述客户端应用能够发起无关服务器机器的第二请求。
Description
相关申请的交叉引用
本申请要求获得2019年5月17日提交的美国专利申请序列号为16/416,108的权益,该申请通过引用而纳入本文中。
背景技术
各种实施例的领域
本发明的实施例总体上涉及客户端-服务器架构,更具体地说,涉及用于基于网络的服务的射后不理(fire-and-forget)卸载机制。
现有技术的描述
许多客户端应用使用基于传输控制协议(“TCP”)的1.0或1.1版本(“1.x”)的超文本传输协议(“HTTP”)访问基于网络的服务。在这样做的时候,客户端应用通过HTTP事务与基于网络的服务进行交互,这些HTTP事务通过客户端应用和基于网络的服务之间的TCP连接进行传输。典型的客户端应用会发起相对较少的交互式HTTP事务和相对较多的信息性HTTP事务。在交互式HTTP事务中,客户端应用下载数据(如主页的显示信息),该数据需要提供给正在与客户端应用交互的用户。在信息性HTTP事务中,客户端应用将被基于网络的服务用于信息性目的的数据上传到一个或多个服务器机器。例如,客户端应用可以上传事件日志、表示客户端应用性能的度量日志、和/或表示客户端应用正在正常执行的“心跳”。
使用基于TCP的HTTP/1.x的一个缺点是,信息性HTTP事务的量会大大延迟与给定的客户端应用相关联的交互式HTTP事务的传输和处理。在基于TCP的HTTP/1.x中,每个HTTP事务均需要专用的TCP连接。此外,执行客户端应用的客户端平台通常会将并发的TCP连接数限制在2到6个连接之间。而且,众所周知的是,上传速度通常比下载速度慢。因此,在不同的时间点上,所有可用的TCP连接可能只分配给信息性HTTP事务。任何悬而未决的交互式HTTP事务必须等待,直到其中一个信息性HTTP事务(包括HTTP事务中相对较慢的上传部分)完成。由此产生的与悬而未决的交互式HTTP事务相关联的数据下载延迟会导致整体用户体验下降。
为了解决以上问题,一些客户端应用将至少一个可用的TCP连接分配给信息性HTTP事务,而将其他TCP连接分配给交互式HTTP事务。然而,采用这种方法,可用于交互式HTTP事务的TCP连接数自动减少,不论信息性HTTP事务的实际量如何。在交互式HTTP事务量相对较低的情况下,这种减少可能是不可取的。此外,如果超出了分配给信息性HTTP事务的(一个或多个)TCP连接的容量,那么客户端应用可能最终放弃通过信息性HTTP事务传输给基于网络的服务的信息。
在解决以上问题的另一种方法中,一些客户端应用实施HTTP/2,其中多个HTTP事务可以在每个TCP连接上多路传输。因为在实施HTTP/2时,客户端应用可以在每个TCP连接上同时发起任何数量的交互式HTTP事务和任何数量的信息性HTTP事务,所以可以减少下载需要通过一个或多个交互式HTTP事务来提供给用户的数据的延迟。然而,一些客户端平台不支持HTTP/2,这降低了这种解决方案途径的功效。
如前所述,本领域需要的是更有效的、用于对与基于网络的服务相关联的请求进行处理的技术。
发明内容
本发明的一个实施例提出了一种计算机所述的方法,用于对与基于网络的服务相关联的请求进行处理。该方法包括确定从客户端应用接收到的第一请求表示可以从服务器机器上卸载对第一请求的响应;以及在将第一请求传送到服务器机器之前,将对第一请求的第一响应传送到客户端应用,该第一响应表示服务器机器已经成功地处理了第一请求,其中,在接收到第一响应时,客户端应用能够发起第二请求。
相对于现有技术,所公开的技术的至少一个技术优势在于,对于实施HTTP/1.xover TCP的客户端应用,使用所公开的技术,交互式HTTP事务不太可能被信息性HTTP事务延迟。特别是,一旦代理服务器对来自客户端应用的信息性HTTP事务做出响应,客户端应用就可以关闭或重新使用相关的TCP连接,而不必等待后端服务器的响应。因此,客户端应用不太可能将所有可用的TCP连接用于信息性HTTP事务,并延迟交互式HTTP事务的传输和处理。这些技术优势代表了相对于现有技术方法的一个或多个技术进步。
附图说明
为了能够详细理解各种实施例的上述特征的方式,可以通过参考各种实施例来对上文简要概括的本发明概念进行更具体的描述,其中一些实施例示出在附图中。然而,需要指出的是,附图仅示出了本发明概念的典型实施例,因此不应视为对范围的任何限制,而且还存在其他同样有效的实施例。
图1是被配置为实施本发明的一个或多个方面的系统的概念图;
图2根据本发明的各种实施例更详细地示出操作期间的图1的加速系统之一;
图3是根据本发明的各种实施例的图2的代理应用的更详细的图示;以及
图4是根据本发明的各种实施例的用于对与基于网络的服务相关联的请求进行处理的方法步骤的流程图。
具体实施例
以下描述中,阐述了许多具体细节,以提供对各种实施例的更彻底的理解。然而,对于本领域的技术人员来说,显然可以在没有这些具体细节中的一个或多个的情况下实践本发明的概念。
用户通常通过在连接了互联网的客户端设备上执行的客户端应用来与媒体流服务进行交互。例如,在智能电视上执行的客户端应用允许用户浏览、搜索、选择、下载和流式传输由媒体流服务提供的流媒体内容。许多客户端应用使用基于TCP的HTTP/1.x来访问媒体流服务。在这样做的时候,客户端应用通过HTTP事务与媒体流服务进行交互。典型的客户端应用会发起相对较少的交互式HTTP事务和相对较多的信息性HTTP事务。在交互式HTTP事务中,客户端应用下载需要被提供给正在与客户端应用进行交互的用户的数据(如主页的显示信息)。在信息性HTTP事务中,客户端应用将被媒体流服务用于信息性目的的数据上传到一个或多个服务器机器。例如,客户端应用可以上传事件日志、表示客户端应用性能的度量日志、和/或表示流媒体会话处于激活状态的“心跳”。
使用基于TCP的HTTP/1.x的一个缺点是,信息性HTTP事务的量会大大延迟与给定的客户端应用相关联的交互式HTTP事务的传输和处理。在基于TCP的HTTP/1.x中,每个HTTP事务均需要专用的TCP连接。此外,执行客户端应用的客户端平台通常会将并发的TCP连接数限制在2到6个连接之间。而且,众所周知的是,上传速度通常比下载速度慢。例如,互联网服务提供商(“ISP”)可以提供如下的服务层级:在该服务层级中,上传速度最高达到每秒5兆比特(“Mbps”),而与之相比,下载速度最高达到250Mbps。因此,在不同的时间点上,所有可用的TCP连接可能只分配给信息性HTTP事务。任何悬而未决的交互式HTTP事务必须等待,直到其中一个信息性HTTP事务(包括HTTP事务中相对较慢的上传部分)完成。由此产生的与悬而未决的交互式HTTP事务相关联的数据下载延迟会导致整体用户体验下降。例如,用户不是等待50毫秒来查看与选定视频相关的信息,而是等待1秒。
然而,利用本公开的技术,对于实施基于TCP的HTTP/1.x的客户端应用,交互式HTTP事务不太可能被信息性HTTP事务延迟。在一个实施例中,在代理服务器上执行代理应用,该代理服务器作为一个或多个客户端应用与提供媒体流服务的后端服务器之间的中介。代理服务器和后端服务器通过基于TCP的HTTP/1.x进行通信,其中可以在每个TCP连接上多路传输多个HTTP事务。
在一些实施例中,客户端应用对发起信息性HTTP事务的每个请求添加“射后不理”标头。在接收到请求后,代理应用基于该请求是否包括射后不理标头来确定是否针对该请求激活卸载。如果代理应用针对该请求激活了卸载,那么代理应用在将请求传输到后端服务器之前,将成功通用响应传输给客户端应用。成功通用响应有意地且不正确地表示后端服务器已经成功地处理了该请求。无论是否针对该请求激活了卸载,代理应用都会将该请求传输到后端服务器。如果卸载是激活的,那么代理应用就会丢弃从后端服务器接收到的响应。否则,代理应用将从后端服务器接收到的响应传输给客户端应用。
相对于现有技术,本公开技术的至少一个技术优势在于:对于实施基于TCP的HTTP/1.x的客户端应用,利用本公开技术,交互式HTTP事务不太可能被信息性HTTP事务延迟。特别地,一旦代理服务器对从客户端应用传输的信息性HTTP事务做出响应,客户端应用就可以关闭或重新使用相关联的TCP连接,而不必等待后端服务器的响应。因此,客户端应用不太可能将所有可用的TCP连接用于信息性HTTP事务并延迟交互式HTTP事务的传输和处理。因此,由媒体流服务通过客户端应用提供的典型用户体验得到了改善。这些技术优势代表了相比现有技术方法的一个或多个技术进步。
系统概述
图1是系统100的概念图,该系统被配置为实施本发明的一个或多个方面。如所示,系统100包括但不限于基于网络的服务系统102、任何数量的客户端装置104和任何数量的加速系统106。为了解释的目的,同类对象的多个实例用标识对象的附图标记和标识实例的带括号的附图标记(如需要)来表示。
基于网络的服务系统102、客户端装置104和加速系统106通过通信网络(未示出)进行通信。该通信网络包括多个网络通信系统,例如路由器和交换机,其被配置为促进数据通信。本领域技术人员将认识到,存在许多技术上可行的技术用于构建通信网络,包括在部署众所周知的互联网通信网络中实践的技术。
基于网络的服务系统102包括但不限于由分布在全球各地并接收、传输、处理和/或存储与基于网络的服务(例如,流媒体服务)相关的数据的互连节点的网络。互连节点可以包括软件、固件和硬件的任何适当组合,以执行这些所需的功能。特别地,基于网络的服务系统102包括多个计算装置,这些计算装置可以彼此共处一地或物理分散。例如,这些计算装置可以包括一个或多个通用PC、Macintoshes、工作站,基于Linux的计算机、服务器计算机、一个或多个服务器池或任何其他合适的装置。计算装置存储并执行一个或多个程序,这些程序可以以任何技术上可行的方式进行远程访问,例如通过相应的应用编程接口(“API”)。在各种实施例中,可以在一个或多个云计算环境中实施(即,封装的共享资源、软件、数据等)任何数量的计算装置。
每个客户端装置104均可以是能够执行软件应用并通过通信网络与其他装置进行通信的任何类型的装置。例如,客户端装置104(1)可以是平板电脑、机顶盒、智能电视、游戏机、流媒体播放器、诸如智能手机之类的移动装置等。客户端装置104可以分布在任何数量的物理位置。每个客户端装置104均可以包括任何适当的输入装置(如键盘、触摸屏、鼠标或其他可以接受信息的装置)、输出设备、大容量存储介质或其他适合接收、处理、存储和通信数据的部件。输入装置和输出装置都可以包括固定或可移动的存储介质,如计算机磁片、CD-ROM。每个客户端装置104均可以包括,但不限于,任何数量的处理器和任何数量的存储器的任何组合。任何数量的客户端装置104可以以任何技术上可行的方式提供多处理环境。
每个客户端装置104包括依赖基于网络的服务系统102以进行特定操作的计算机硬件和/或计算机软件。特别地,每个客户端装置104可以包括任何数量的客户端平台,这些客户端平台各自执行任何数量的软件应用。客户端平台的示例包括但不限于网络浏览器、智能电视操作系统(OS)、移动电话OS、视频游戏机OS等。通过通信网络与基于网络的服务系统102通信以执行各种操作的软件应用在此被称为“客户端应用”。
在一些实施例中,客户端应用通过向基于网络的服务系统102发出请求来进行操作。客户端装置104与基于网络的服务系统102建立网络连接,然后通过网络连接将请求传输到基于网络的服务系统102。作为对接收到请求的响应,基于网络的服务系统102处理该请求并生成响应,该响应通过网络连接传输回客户端应用。发出请求和接收相应响应的过程在此被称为“事务”。在客户端104上执行的客户端应用与基于网络的服务系统102中处理请求的部分之间的往返旅行在此被称为事务往返旅行。一般来说,客户端104离基于网络的服务系统102的处理请求的部分越远,事务往返旅行的延迟就越高。此外,网络连接的拥塞程度越高,事务往返的延迟就越高。
加速系统106作为基于网络的服务系统102和客户端装置104之间的中介进行操作,以减少事务往返旅行的延迟。加速系统106包括分布在全球各地的互连系统的网络,并且每个互连系统作为客户端装置104和基于网络的服务系统102之间的中介进行操作。给定的加速系统106与给定的客户端装置104建立网络连接,并通过该连接接收请求。加速系统106通过与基于网络的服务系统102的网络连接促进该请求的处理。
在各种实施例中,任何数量的加速系统106可以被嵌入到与互联网服务提供商(“ISP”)相关联的网络中。在一些这样的实施例中,如果加速系统106(x)嵌入在与ISP相关联的网络内,那么加速系统106(x)仅可由与ISP相关联和/或订阅ISP的客户端装置104访问。在相同的或其他的实施例中,任何数量的加速系统106可以在互联网交换点内操作或与之相关联地操作,并独立于ISP进行操作。互联网交换点是这样的物理基础设施:ISP和内容交付网络(“CDN”)通过其交换互联网流量。
当加速系统106作为基于网络的服务系统102和客户端装置104之间的中介操作时,由于至少两个原因,执行事务所需的时间被减少。首先,在一些实施例中,相对于基于网络的服务系统102,加速系统106通常在物理上更接近客户端装置104。因此,相对于需要在客户端装置104和基于网络的服务系统102之间建立网络连接的情况,建立客户端装置104和加速系统106之间的网络连接所需的任何往返旅行时间更短。其次,在一些实施例中,由于加速系统106具有源自多个客户端装置104的大量请求,加速系统106具有与基于网络的服务系统102的一致的、预先建立的和预先认证的网络连接。因此,不需要针对每个请求建立并认证与基于网络的服务系统102的网络连接。
可以理解的是,本文所示的系统100是说明性的,并且变更和修改是可能的。例如,系统100的各个部件之间的连接拓扑结构可以根据需要修改。请注意,这里描述的技术是说明性的,而不是限制性的,可以在不脱离本发明更广泛的精神和范围的情况下进行变更。在各种实施例中,可以实施本文公开的任何数量的技术,同时可以以任何技术上可行的方式省略其他技术。
仅出于解释的目的,图2至图4描述了在TCP连接和HTTP协议的特定版本的背景下的系统100的功能。然而,这里描述的技术是说明性的而不是限制性的,并且可以在不脱离本发明的更广泛的精神和范围的情况下进行变更。对于本领域的普通技术人员来说,在不脱离所描述的实施例和技术的范围和精神的情况下,许多修改和变更将是显而易见的。
图2根据本发明的各种实施例更详细地示出操作期间的图1的加速系统之一。更准确地说,图2示出了以下项之间的交互:在任何数量的客户端装置104(1)-104(N)上执行的任何数量的客户端应用220(1)-220(M)、包括在加速系统106(1)中的代理服务器240、以及包括在基于网络的服务系统102中的后端服务器270。
后端服务器270包括但不限于包括在基于网络的服务系统102中的任何数量的计算装置。每个计算装置可以执行任何数量和类型的软件应用,这些软件应用对针对基于网络的服务系统102的HTTP请求进行处理并做出相应。
代理服务器240是包括在加速系统106(1)中的计算装置。在替代实施例中,代理服务器240可以包括加速系统106(1)中包括的任何数量的计算装置。如图所示,客户端装置104和代理服务器240使用HTTP/1.1通过客户端/代理TCP连接230进行通信。代理服务器240和后端服务器270使用HTTP/2通过代理/后端TCP连接260进行通信。在操作中,代理服务器240在客户端装置104(1)-104(N)和后端服务器270之间充当中介,以减少执行HTTP事务所需的时间。代理服务器240有时被称为“反向代理服务器”。
代理服务器240减少执行HTTP事务所需的时间,其原因至少有三个。首先,相对于后端服务器270,代理服务器240通常在物理上更接近客户端装置104(1)-104(N)。特别地,在一些实施例中,代理服务器240嵌入与ISP相关联的网络中,该ISP也与客户端装置104(1)-104(N)相关联。因此,相对于需要在客户端装置104和后端服务器270之间建立网络连接的情况,建立客户端装置104和代理服务器240之间的网络连接所需的任何往返旅行时间更短。第二,在一些实施例中,由于代理服务器240具有源自多个客户端装置104的大量请求,代理服务器240具有与后端服务器270的任何数量的一致的、预先建立的和预先认证的代理/后端TCP连接260。因此,不需要针对每个HTTP请求建立并认证与后端服务器270的TCP连接。
第三,代理服务器240和后端服务器270使用HTTP/2进行通信。众所周知,相对于HTTP/1.x,HTTP/2实施各种各样的性能改进。特别是在HTTP/2中,多个HTTP事务通过每个连接(例如,代理/后端TCP连接260(1))被多路传输。因此,并发的HTTP交互的数量不一定受到限制。在一些实施例中,代理服务器240建立了在正常操作期间不太可能达到的并发限制。例如,在一些实施例中,代理服务器240通过两个代理/后端TCP连接260(1)和260(2)连接到后端服务器270,并建立每个TCP连接50个并发HTTP事务的并发限制。因此,代理服务器240和后端服务器270之间的多达100个HTTP事务可以并发地执行。
如图所示,代理服务器240包括但不限于处理器112和存储器116。处理器112可以是能够执行指令的任何指令执行系统、设备或装置。例如,处理器112可以包括中央处理单元(CPU)、图形处理单元(GPU)、控制权器、微控制权器、状态机或其任何组合。存储器116存储内容,例如软件应用和数据,以便由计算实例110的处理器112使用。
存储器116可以是一个或多个现成的存储器,例如随机存取存储器(RAM)、只读存储器(ROM)、软盘、硬盘或任何其他形式的本地或远程数字存储。在一些实施例中,存储装置(未示出)可以补充或取代存储器116。该存储装置可以包括处理器112可以访问的任何数量和类型的外部存储器。例如,在不受限制的情况下,存储装置可以包括安全数字卡、外部闪存、便携式光盘只读存储器(CD-ROM)、光学存储装置、磁性存储装置,或上述的任何适当组合。在替代实施例中,代理服务器240可以包括但不限于任何数量的处理器112和任何数量的存储器116的任何组合。在相同或其他实施例中,包括在代理服务器240中的任何数量的计算装置可以以任何技术上可行的方式提供多处理环境。
代理服务器240被配置为实施一个或多个应用,这些应用使客户端应用220能够通过后端服务器270访问基于网络的服务。每个应用被描述为驻留在代理服务器240的单个存储器116中并在代理服务器240的单个处理器112上执行。然而,如本领域技术人员将认识到的那样,每个应用的功能可以分布在任何数量的其他应用中,这些应用驻留在任何数量的计算装置的存储器116中并在任何数量的计算装置的处理器112上执行。此外,任何数量的应用的功能可以合并到单个应用或子系统中。
每个客户端应用220使用基于TCP的HTTP/1.x访问基于网络的服务系统102。在这样做时,每个客户端应用220通过一个或多个客户端/代理TCP连接230与代理服务器240交互。每个客户端/代理TCP连接230将在一个客户端装置104上执行的客户端应用220中的一者连接到代理服务器240。如针对客户端应用220(1)所示,每个客户端应用220与最大TCP连接204相关联。最大TCP连接204(1)指示客户端应用220(1)可以拥有的到每个基于网络的服务系统102的最大TCP连接数。通常,最大TCP连接204是由执行客户端应用220的客户端平台(例如,网络浏览器、智能电视操作系统等)设定和执行的。仅出于解释的目的,客户端应用220(1)的最大TCP连接204是三个。因此,客户端应用220(1)可以建立最多三个客户端/代理TCP连接230。
在基于TCP的HTTP/1.x中,每个HTTP事务需要专用的TCP连接。典型的客户端应用220发起相对少量的交互式HTTP事务和相对大量的信息性HTTP事务。在交互式HTTP事务中,客户端应用220下载数据(如主页的显示信息),这些数据需要提供给正在与客户端应用220交互的用户。在信息性HTTP事务中,客户端应用220将数据上传到后端服务器270,这些数据被基于网络的服务系统102用于信息性目的。例如,客户端应用220可以上传事件日志、表示客户端应用220的性能的度量日志、和/或表示客户端应用220正在正常执行的“心跳”。
使用基于TCP的HTTP/1.x的一个缺点是,信息性HTTP事务的量会大大延迟与给定的客户端应用相关联的交互式HTTP事务的传输和处理。不仅传统的客户端应用被限制在最大的TCP连接数,而且上传速度通常比下载速度慢。因此,在不同的时间点上,所有可用的TCP连接可以只分配给信息性HTTP事务。任何悬而未决的交互式HTTP事务必须等待,直到其中一个信息性HTTP事务(包括HTTP事务中相对较慢的上传部分)完成。由此产生的与悬而未决的交互式HTTP事务相关联的数据下载延迟会导致整体用户体验下降。
如前所述,解决上述问题的努力会自动减少可用于交互式HTTP事务的TCP连接的数量,增加通过信息性HTTP事务传输到基于网络的服务的信息被丢弃的风险,并且/或者具有有限的适用性。
卸载后端服务器
为了更有效地解决以上问题,代理服务器240包括但不限于代理应用250。如图所示,代理应用250驻留在存储器116中并在代理服务器240的处理器112上执行。在充当客户端应用220和后端服务器270之间的中介时,代理应用250有选择地从后端服务器270卸载对任何数量的针对信息性上传的HTTP请求的响应。针对信息性上传的HTTP请求和相应的HTTP响应在此被称为信息性HTTP事务。
当生成HTTP/1.x请求232(x)时,如果相应的HTTP/1.x响应234(x)对客户端应用220不重要,那么客户端应用220可以向HTTP/1.x请求232(x)添加“射后不理”标头。如本领域技术人员将认识到的那样,相应的HTTP/1.x响应234(x)对客户端应用220来说不重要的HTTP/1.x请求232(x)通常指定用于上传数据的HTTP方法,例如“POST”或“PUT”。
射后不理标头向代理应用250表示:对HTTP/1.x请求232(x)的响应可以从后端服务器270卸载到代理应用250。注意,信息性HTTP交互通常对相关联的客户端应用220的唯一影响是可能延迟其他HTTP交互,从而降低客户端应用220的性能。出于这个原因,在一些实施例中,客户端应用220向发起信息性HTTP交互的每个HTTP/1.x请求232添加射后不理标头。
射后不理标头包括但不限于名称“射后不理”和成功代码列表(用于成功代码参数的一个或多个值)。名称“射后不理”表示相应的HTTP/1.x响应234(x)是不重要的。成功代码列表指示一个或多个状态代码,每个状态代码均表示HTTP/1.x响应234(x)是成功的。例如,HTTP/1.x请求232(x)中的射后不理标头的成功代码列表可以指明“200、204”,而HTTP/1.x请求232(y)中的射后不理标头的成功代码列表可以指明“200”。
如果HTTP/1.x请求232(x)包括射后不理标头,那么HTTP/1.x请求232(x)与持久性水平相关联,该持久性水平与HTTP/1.x请求232(x)相关联的重要性水平相关。HTTP1.x请求232(x)的持久性水平可以通过HTTP1.x请求232(x)中包含的“持久性”标头来指示。如果HTTP1.x请求232(x)不包括持久性标头,那么HTTP1.x请求232(x)就与默认的持久性水平相关联。
持久性标头包括但不限于名称“持久性”和持久性水平(持久性参数的值)。每个允许的持久性水平与代理应用250在后端服务器270没有成功处理相关HTTP请求232的版本时要进行的不同错误处置过程相关联。更确切地说,HTTP请求232(x)的持久性水平指示了代理应用260在后端服务器无法成功处理HTTP.2请求262(x)时要执行的错误处置过程。HTTP/2请求262(x)是HTTP/1.x请求232(x)的HTTP/2版本。
在从客户端应用220之一接收到HTTP/1.x请求232(x)后,代理应用250确定是否针对HTTP/1.x请求232(x)激活卸载。在一些实施例中,如果HTTP/1.x请求232(x)包括射后不理标头,则代理应用250针对HTTP/1.x请求232(x)激活卸载。在其他实施例中,代理应用250可以基于HTTP/1.x请求232(x)是否包括射后不理标头和任何数量的附加标准来确定是否针对HTTP/1.x请求232(x)激活卸载。
例如,在各种实施例中,代理应用250基于HTTP/1.x请求232(x)是否包括射后不理标头和最大并发卸载(在图1中未示出)来确定是否针对HTTP/1.x请求232(x)激活卸载。最大并发卸载指示了这样的HTTP/1.x请求232的最大数量:在任何给定的时间,针对这些HTTP/1.x请求232,卸载可以是激活。如果HTTP/1.x请求232(x)包括射后不理标头,并且针对其卸载是激活的HTTP1.x请求232的总数小于最大并发卸载,那么代理应用250就针对HTTP/1.x请求232(x)激活卸载。否则,代理应用250不针对HTTP/1.x请求232(x)激活卸载。代理应用250可以以任何技术上可行的方式跟踪并激活卸载。
例如,在一些实施例中并且如结合图3更详细地描述的那样,代理应用250是用Go语言编写的,并且每个HTTP/1.x请求232通过不同的执行线程被处理。卸载功能包括在HTTP处置程序中,该处置程序将执行卸载功能的线程数限制为最大并发卸载。
如果针对HTTP/1.x请求232(x),卸载是激活的,那么代理应用250使用接收HTTP/请求232(x)的客户/代理TCP连接230向客户端应用220传输“成功”通用HTTP/1.x响应234(x)。然后,客户端应用220可以重新使用或关闭客户端/代理TCP连接230。成功通用HTTP/1.x响应234(x)有意地且错误地表示:后端服务器270已经成功地处理了HTTP/1.x请求232(x)。代理应用250可以以任何技术上可行的方式生成成功通用HTTP/1.x响应234(x)。
例如,在一些实施例中,代理应用250生成成功通用HTTP/1.x响应234(x),该成功通用HTTP/1.x响应234(x)包括HTTP/1.x请求232(x)的射后不理标头的成功代码列表中指定的状态代码之一。例如,如果成功代码列表包括200的状态代码,那么代理应用250可以生成具有“200OK”HTTP状态行和空主体的成功通用HTTP/1.x响应234(x)。如本领域技术人员所认识到的,“HTTP状态行”是伴随相关联的原因短语(例如“OK”)的状态代码(例如,200)。状态代码为200表示后端服务器270已经成功地处理了HTTP/1.x请求232(x)。在另一个示例中,如果成功代码列表包括204的状态代码,那么代理应用250可以生成具有“204无内容”HTTP状态行的成功通用HTTP/1.x响应234(x)。204的状态代码表示后端服务器270已经成功地处理了HTTP/1.x请求232(x)并且没有返回任何内容。
随后,针对HTTP/1.x请求232(x),不管卸载是否是激活的,代理应用250将HTTP/1.x请求232(x)转换为HTTP/2请求262(x)。HTTP/2请求262(x)是HTTP/1.x请求232(x)的HTTP/2版本。代理应用250可以以任何技术上可行的方式将HTTP/1.x请求232(x)转换为HTTP/2请求262(x)。然后,代理应用250尝试通过代理/后端TCP连接260之一将HTTP/2请求262(x)传输到后端服务器270。与HTTP/1.x事务相比,因为任何数量的HTTP/2请求262和任何数量的HTTP/2响应264可以共享代理/后端TCP连接260中的每一个,所以任何数量的HTTP/2事务可以同时执行。
如果HTTP/2请求262(x)的卸载未被激活并且代理应用250成功地从后端服务器270接收HTTP/2响应264(x),那么代理应用250将HTTP/2响应264(x)转换为HTTP1.x响应234(x)。HTTP/1.x响应234(x)是HTTP/2响应264(x)的HTTP/1.x版本。代理应用250可以以任何技术上可行的方式将HTTP/2响应264(x)转换为HTTP1.x响应234(x)。然后,代理应用250使用接收HTTP/请求232(x)的客户端/代理TCP连接230将HTTP/1.x响应234(x)传输到代理应用250。然后,客户端应用220可以重新使用或关闭客户端/代理TCP连接230。
如果针对HTTP/2请求262(x),卸载不被激活并且代理应用250不从后端服务器270接收HTTP/2响应264(x),则代理应用250生成“服务器错误”HTTP/2响应264(x)。代理应用250可能由于各种原因而没有从后端服务器270接收到HTTP/2响应262(x)。例如,后端服务器270可能过载。服务器错误HTTP响应264(x)表示HTTP/1.x请求232(x)由于服务器错误而没有成功。例如,在一些实施例中,服务器错误HTTP响应264(x)具有“502坏网关”HTTP状态行。502的状态代码表示代理服务器240从后端服务器270接收到无效的响应。
如果针对HTTP/2请求262(x),卸载是激活的,并且代理应用250从后端服务器270接收表示成功的HTTP/2响应264(x),那么代理应用250丢弃HTTP/2响应264(x)。代理应用250可以以任何技术上可行的方式确定HTTP/2响应264(x)是否表示成功。例如,在一些实施例中,代理应用250基于与HTTP/1请求232(x)相关联的成功代码列表确定HTTP/2响应264(x)是否表示成功。如果HTTP/2响应264(x)中包括的状态代码与成功代码列表中包括的状态代码之一相匹配,那么代理应用250确定HTTP/2响应264(x)表示成功。否则,代理应用250确定HTTP/2响应264(x)不表示成功。
如果针对HTTP/2请求262(x),卸载是激活的,并且代理应用250没有从后端服务器270接收到HTTP/2响应,那么代理应用250按照持久性水平来执行错误处置过程。同样地,如果针对HTTP/2请求262(x),卸载是激活的,并且代理应用250从后端服务器270接收到不表示成功的HTTP/2响应264(x),那么代理应用250按照持久性水平来执行错误处置过程。
代理应用250可以以任何技术上可行的方式,基于任何数量和类型的可接受的持久性水平实施任何数量和类型的错误处置过程。例如,在一些实施例中,可接受的持久性水平是“低”、“中等”、“高”(默认持久性水平)和“耐久”。如果HTTP/1.x请求232(x)的持久性水平是低的,那么代理应用250对HTTP/1.x请求232(x)不执行进一步的操作。如果持久性水平是中等,那么代理应用250在相对较短的间隔内最多进行三次重新传输尝试。重新传输尝试是将HTTP/2请求262(x)重新传输给后端服务器270的尝试。
如果持久性水平是高的,那么代理应用250进行重新传输尝试,直到代理应用250从后端服务器270接收到表示成功的HTTP/2响应264(x)。注意,如果达到最大并发卸载,那么代理应用250不再激活卸载,而是进行同步代理操作。因此,持久性水平为高不会导致代理应用250中的积压。
如果持久性水平是耐久的,那么代理应用250将HTTP/2请求262(x)写入持久性存储(例如,磁盘)以在重启后继续存在,并且进行重新传输尝试,直到代理应用250从后端服务器270接收到表示成功的HTTP/2响应264(x)。如果在错误处置过程中的任何时候,代理应用250从后端服务器270接收到表示成功的HTTP/2响应264(x),则代理应用250丢弃HTTP/2响应264(x)并终止错误处置过程。
每个客户端应用220均可以以任何技术上可行的方式确定每个HTTP/1.x请求232的持久性水平。例如,在一些实施例中,由于心跳相对频繁地发生,客户端应用220在涉及上传心跳的每个HTTP/1.x请求232中包括指明持久性水平为低的持久性标头。由于事件日志和度量日志通常生成的频率较低,因此客户端应用220在涉及上传事件日志或度量日志的HTTP/1.x请求232中不包括持久性标头,从而将相关联的持久性水平默认为高。
仅出于解释的目的,图2将客户端应用220(1)、代理应用250和后端服务器270之间的一系列交互描述为一系列编号的气泡。客户端应用220(1)在客户端装置104(1)上执行,并且具有三个最大连接204(1)。
为了与基于网络的服务系统102交互,客户端应用220(1)生成四个HTTP/1.x请求232(1)-232(4)。每个HTTP/1.x请求232(1)-232(4)将基于网络的服务系统102指定为主机。HTTP/1.x请求232(1)、232(2)和232(4)中的每一个都是下载请求,不包括射后不理标头。相比之下,HTTP/1.x请求232(3)是上传事件日志的请求,并包括射后不理标头。然后,客户端应用220(1)尝试将HTTP/1.x请求232(1)-232(4)传输到代理应用250。
因为客户端应用220(1)被限制为最多三个TCP连接,所以客户端装置104分别为HTTP/1.x请求232(1)-232(3)产生三个客户端/代理TCP连接。因为HTTP/1.x请求232中的每一个均需要专用的客户端/代理TCP连接230,并且所有可用的客户端/代理TCP连接230都在使用中,所以HTTP/1.x请求232(4)的传输被延迟。
为了为HTTP/1.X请求232(x)生成客户/代理TCP连接230(x),客户端装置104(1)和代理服务器240执行TCP握手,然后是输送层安全(“TLS”)握手。TCP握手是客户端装置104和代理服务器240协商并启动TCP通信会话以相互通信的机制。TLS握手是客户端装置104(1)和代理服务器240交换建立安全通信会话所需安全密钥的机制。
如用编号为1至3的气泡描绘的那样,代理应用250分别通过客户/代理TCP连接230(1)-230(3)接收HTTP/1.x请求232(1)-232(3)。代理应用250确定HTTP/1.x请求232(3)包括射后不理标头,并且当前并发卸载的总数小于最大并发卸载。因此,如用编号为4的气泡描绘的那样,代理应用250针对HTTP/1.x请求232(3)激活卸载,并且通过客户端/代理TCP连接230(3)将具有HTTP状态行“200OK”的HTTP/1.x响应234(3)传输给客户端应用220(1)。
代理应用250将HTTP/1.x请求232(1)-232(3)分别转换为HTTP/2请求262(1)-262(3),并且尝试将HTTP/2请求262(1)-262(3)传输到后端服务器270。有利的是,代理服务器240和后端服务器270先前已经进行了TCP握手和TLS握手,以生成任何数量的预先建立和预先认证的代理/后端TCP连接260。此外,由于代理服务器240和后端服务器270之间的流量相对较高,代理/后端TCP连接260是持久的。因此,代理服务器240开始通过客户端/代理TCP连接230(1)向后端服务器270传输HTTP/2请求262(1)-262(3),而不进行任何额外的握手。更准确地说,代理服务器240通过代理/后端TCP连接260(1)将HTTP/2请求262(1)-262(3)与任何数量的其他HTTP/2请求262和/或HTTP/2响应264一起多路传输。
当客户端应用220(1)接收到HTTP/1.x响应234(3)时,客户端装置104(1)为延迟的HTTP/1.x请求232(4)重新生成(例如,关闭、重新建立和重新认证)客户端/代理TCP连接230(3)。在替代实施例中,客户端装置104(1)可以为延迟的HTTP/1.x请求232(4)重新使用客户端/代理TCP连接230(3)而不关闭、重新建立和重新认证客户端/代理TCP连接230(3)。然后,客户端装置104(1)开始通过客户端/代理TCP连接230(3)向代理服务器240传输HTTP/1.x请求232(4)。
有利的是,代理服务器240相对于后端服务器270在物理上更接近客户端装置104(1)。因此,并且如编号为5的气泡所描绘的,代理应用250在HTTP/2请求262(1)-262(3)到达后端服务器270之前接收到HTTP/1.x请求232(4)。代理应用250将HTTP/1.x请求232(4)转换为HTTP/2请求262(4),并尝试将HTTP/2请求262(4)传输到后端服务器270。代理服务器240通过代理/后端TCP连接260(1)将HTTP/2请求262(4)与HTTP/2请求262(1)-262(3)以及任何数量的其他HTTP/2请求262和/或HTTP/2响应264多路传输。
随后,并且如用编号为6至8的气泡描绘的那样,后端服务器270通过代理/后端TCP连接260(1)接收HTTP/2请求262(1)、262(2)和262(4)。因为HTTP/2请求262(3)涉及上传,所以HTTP/2请求262(3)需要更长的时间来到达后端服务器270。后端服务器270处理HTTP/2请求262(1)、262(2)和262(4)并分别生成HTTP/2响应264(1)、264(2)和264(4)。后端服务器270通过代理/后端TCP连接260(1)向代理应用250发起HTTP/2响应264(1)、264(2)和264(4)。
如用气泡编号9至11所描绘的,代理应用250通过代理/后端TCP连接260(1)成功地接收HTTP/2响应264(1)、264(2)和264(4)。由于针对HTTP/1.x请求234(1)、232(2)和232(4),卸载没有激活,所以代理应用250将HTTP/2响应264(1)、264(2)和264(4)分别转换为HTTP/1.x响应234(1)、234(2)和234(4)。然后,代理应用250通过客户端/代理TCP连接230(1)发起HTTP1.x响应234(1)的传输,通过客户端/代理TCP连接230(2)发起HTTP1.x响应234(2)的传输,并且通过客户端/代理TCP连接230(3)发起HTTP1.x响应234(4)的传输。
当HTTP/1.x响应234(1)、234(2)和234(4)行进到客户端应用220(1)时,后端服务器270接收HTTP/2请求262(3)(用编号为12的气泡描绘)。后端服务器270处理HTTP/2请求262(3),生成HTTP/2响应264(3),并通过代理/后端TCP连接260(1)向代理应用250发起HTTP/2响应264(3)的传输。
如用编号为13至15的气泡所描绘的,并且当HTTP/2响应264(3)行进到代理应用250时,客户端应用220(1)接收HTTP/1.x响应234(1)、234(2)和234(4)。随后,如用编号为16的气泡所描绘的,代理应用250接收到HTTP/2响应264(3)。因为针对HTTP/1.x请求232(3),卸载是激活的,并且HTTP/2响应264(3)表示后端服务器270成功地处理了HTTP/1.x请求232(3),所以代理应用250丢弃HTTP/2响应264(3)。
仅出于解释的目的,图2至图3描述了系统100在TCP连接和HTTP协议的特定版本背景下的功能。然而,这里描述的技术是说明性的而不是限制性的,并且可以在不脱离本发明的更广泛的精神和范围的情况下进行变动。对于本领域的普通技术人员来说,在不脱离所描述的实施例和技术的范围和精神的情况下,许多修改和变更将是显而易见的。
作为一般事项,本文概述的技术适用于在将请求传输到基于网络的服务之前,响应于针对基于网络的服务的选定请求而返回成功通用响应。在替代实施例中,请求和响应可以符合任何数量和类型的传输协议,并通过任何数量和类型的连接进行传输。一般来说,当响应从客户端应用220接收到的HTTP请求时,代理应用250以HTTP请求的HTTP格式生成或转发HTTP响应给客户端应用220。当向后端服务器270转发HTTP请求时,代理应用可以对HTTP请求进行任何数量的转换操作,以确保最高效地将HTTP请求的版本传输到后端服务器270。
例如,在一些替代实施例中,任何数量的客户端应用220实施HTTP/2。当生成HTTP/2请求262(x)时,客户端应用可以向HTTP/2请求262(x)添加射后不理标头,以表示相应的HTTP/2响应264(x)是不重要的。代理应用250基于HTTP/2请求262(x)是否有射后不理标头和最大并发卸载来确定是否针对HTTP/2请求262(x)激活卸载。如果针对HTTP/2请求262(x),卸载被激活,那么代理应用250将成功通用HTTP/2响应264传输给客户端应用220。无论针对HTTP/2请求262(x)卸载是否激活,代理应用250都会尝试将HTTP/2请求262(x)传输到后端服务器270。如果针对HTTP/2请求262(x),卸载是激活的,那么代理应用250会丢弃从后端服务器270接收到的任何HTTP/2响应264(x)。如果针对HTTP/2请求262(x),卸载没有激活,并且代理应用250无法将HTTP/2请求262(x)传输到后端服务器270,那么代理应用250将服务器错误的HTTP/2响应传输到客户端应用220。否则,如果针对HTTP/2请求262(x),卸载不激活,那么代理应用250将从后端服务器270接收到的HTTP/2响应264(x)传输给客户端应用220。
在替代实施例中,可以以任何技术上可行的方式指定射后不理标头和持久性标头,并且射后不理标头和持久性标头包括任何数量和类型的相关信息。例如,在一些实施例中,射后不理标头不指明成功代码列表。在这样的实施例中,代理应用250可以以任何技术上可行的方式确定每个HTTP/2响应264是否表示成功。例如,代理应用250可以实施预先确定的成功代码列表。在相同的或其他的实施例中,不实施持久性标头,并且射后不理标头可选地指定持久性水平。
图3是根据本发明的各种实施例的图2的代理应用250的更详细的图示。仅出于解释的目的,图3描述了用Go编程语言编写的代理应用250的一个示例。然而,这里描述的技术是说明性的,而不是限制性的,并且可以在不脱离本发明更广泛的精神和范围的情况下进行变更。特别是,代理应用250可以执行任何数量和类型的算法,并且可以用任何数量(包括一种)的技术上可行的编程语言和/或脚本语言编写。
如图所示,代理应用250包括但不限于HTTP库层310、射后不理代理处置程序320、任何数量的处置程序330和代理处置程序340。HTTP库层310被配置为接收每个HTTP/1.x请求232到代理服务器240作为不同的执行线程。在接收到HTTP/1.x请求232(x)后,HTTP库层310将相关执行线程的控制权转移到嵌套HTTP处理程序的双向管道。
双向管道在向前的方向上依次包括射后不理代理处置程序320、任何数量的处置程序330和代理处置程序340。在替代实施例中,任何数量的处置程序330可以在管道中的“射后不理”代理处置程序320之前,并且任何数量的处置程序330可以在管道中跟随代理处置程序340。
每个HTTP处置程序是http.HandlerFunc类型,其具有两个变元,一个http.ResponseWriter和一个指向http.Request的指针。http.Request是代表HTTP/1.1请求232(x)的数据结构。http.responseWriter生成HTTP/1.x响应234(x)并将其传输到HTTP/1.1请求232(x)。如果HTTP处置程序向http.responseWriter写入数据,则http.responseWriter经由客户端/代理TCP连接230(HTTP/1.1请求232(x)是通过该客户端/代理TCP连接230接收的)传输相应的HTTP/1.x响应234(x)。此外,管道中的各种HTTP处置程序访问代表对HTTP/1.1请求232(x)的HTTP响应的http.Response数据结构。
每个HTTP处置程序可以通过http.Request执行与HTTP/1.1请求232(x)和/或HTTP/2请求262(x)相关联的任何数量和类型的操作。类似地,每个HTTP处置程序可以通过http.Response执行与HTTP/.1响应234(x)和/或HTTP/2响应264(x)相关联的任何数量和类型的操作。每个HTTP处置程序还可以向http.responseWriter进行写入、在任一方向上将控制权转移到管道中的下一个HTTP处置程序、停止通过管道传播的控制权,等等。
当与HTTP/1.1请求232(x)相关联的执行线程进入HTTP库层310时,HTTP库层310生成http.responseWriter和代表HTTP/1.1请求232(x)的http.Request。然后,HTTP库层310将控制权转移到管道中的第一个HTTP处置程序,以发起在向前方向上的传播。在图3中描绘的实施例中,管道中的第一个HTTP处置程序是射后不理处置程序320。
如图所示,射后不理处置程序320包括但不限于HTTP标头触发器324、最大并发卸载322和卸载操作326。HTTP标头的触发器324指定了区分射后不理标头的名称“射后不理”。最大并发卸载322指定了在任何给定的时间可以针对其激活卸载的HTTP/1.x请求232(即线程)的最大数量。卸载操作326是当针对执行线程卸载是激活的时,射后不理处理320中所执行的操作。
当射后不理处置程序320接收到执行线程的控制时,射后不理处置程序320基于HTTP标头触发器324确定HTTP/1.1请求232(x)是否包括射后不理标头。如果射后不理处置程序320确定HTTP/1.1请求232(x)不包括射后不理标头,那么射后不理处置程序320在向前的方向上充当传递者。更确切地说,射后不理处置程序320将控制转移到向前方向上的管道中的下一个处置程序330(1),而不执行卸载操作326。
然而,如果射后不理处置程序320确定HTTP/1.1请求232(x)包括射后不理标头,那么射后不理处置程序320基于最大并发卸载322确定是否针对HTTP/1.1请求232(x)激活卸载。一般来说,射后不理处置程序320将针对其激活卸载的HTTP/1.1请求232的总数限制为最大并发卸载322。
射后不理处置程序320可以以任何技术上可行的方式跟踪和限制针对其激活卸载的HTTP/1.x请求232的总数。例如,在一些实施例中,射后不理处置程序320可以使用GO语言的并发功能(例如,通道)来限制在任何给定时间针对其激活卸载的线程的总数。在其他实施例中,射后不理处置程序320可以维持针对其激活卸载的执行线程的计数,并将该计数与最大并发卸载322进行比较。如果该计数等于最大并发卸载322,则射后不理处置程序320不针对HTTP/1,1请求232(x)启用卸载,并在向前方向上充当传递者。更确切地说,射后不理处置程序320将控制转移到向前方向上管道中的下一个处置程序330(1),而不执行卸载操作326。
在替代实施例中,射后不理处置程序320可以以任何技术上可行的方式针对HTTP/request 232(x)激活卸载。例如,射后不理处置程序320可以将与HTTP/request 232(x)相关联的卸载标志初始化为假(false)。如果HTTP/请求232(x)包括射后不理标头,并且针对其激活卸载的HTTP请求总数小于最大并发卸载322,那么射后不理处置程序320将卸载标志设定为真(true)。如果卸载标志为假,那么射后不理处置程序320就不执行卸载操作326。否则,射后不理处置程序320执行卸载操作326。
如果射后不理处置程序320保留执行线程的控制,那么针对HTTP/1,1请求232(x)卸载被激活,并且射后不理处置程序320开始执行卸载操作326。射后不理处置程序320生成成功通用HTTP/1.x响应234(x)。然后,射后不理处置程序320将成功通用HTTP/1.x响应234(x)写入到http.responseWriter。作为回应,http.responseWriter通过接收HTTP/1.1请求232(x)的客户端/代理TCP连接230来传输成功通用HTTP/1.x响应234(x)。请注意,向http.responseWriter的写入对于执行线程来说是一个非阻塞的操作。在向http.responseWriter写入之后,射后不理处置程序320将执行线程的控制转移给在前进方向上的管道中的下一个处置程序330(1)。
每个处置程序330在将执行线程的控制转移到管道中的下一个HTTP处置程序之前可以执行任何数量和类型的操作。当执行线程的控制转移到代理处置程序340,代理处置程序340将HTTP/1.x请求232(x)转换为HTTP/2请求262(x)。然后,代理处置程序340尝试将HTTP/2请求262(x)传输到后端服务器270。将HTTP/2请求262(x)传输给后端服务器270会阻塞执行线程,直到代理处置程序340收到HTTP/2响应264(x)或代理处置程序340确定后端服务器270无法传输相应的HTTP/2响应。如果代理处置程序340确定后端服务器270无法传输相应的HTTP/2响应,则代理处置程序340生成服务器错误HTTP/2响应264(x),其状态代码不包括在与HTTP/1.x请求232(x)相关联的成功代码列表中。随后,代理处置程序340将执行线程的控制返回到代理处置程序340从该处接收到控制的HTTP处置程序,从而发起管道的反向传播。
当执行线程的控制返回到射后不理处置程序320,射后不理处置程序320在卸载操作326之外或之内恢复执行。如果针对HTTP/请求232(x),卸载没有被激活,那么射后不理处置程序320就会在卸载操作326之外恢复执行。射后不理处置程序320将HTTP/2响应264(x)转换为HTTP/1.x响应234(x)。然后,射后不理处置程序320将HTTP/1.x响应234(x)写入到http.responseWriter。作为响应,http.responseWriter通过接收HTTP/1.x请求232(x)的客户/代理TCP连接230传输HTTP/1.x响应234(x)。
然而,如果针对HTTP/1.x请求232(x),卸载是激活的,那么射后不理处置程序320在卸载操作326内恢复执行。如果HTTP/2响应264(x)的状态代码表示成功,那么射后不理处置程序320就终止执行线程。否则,射后不理处置程序320执行与HTTP/1.x请求232(x)相关联的持久性水平相对应的错误处置程序。
如前所述,如果HTTP/2响应264(x)的状态代码和与HTTP/1.x请求232(x)相关联的成功代码列表中包括的状态代码之一相匹配,那么射后不理处置程序320确定HTTP/2响应264(x)表示成功。否则,射后不理处置程序320确定HTTP/2响应264(x)不表示成功。一般来说,后端服务器270可以在HTTP/2响应264(x)中包括任何状态代码。因此,如果HTTP/2响应264(x)是由后端服务器270生成的,那么根据成功代码列表,HTTP/2响应264(x)可能表示成功也可能不表示成功。相比之下,如果HTTP/2响应264(x)由代理处置程序340生成以表示后端服务器270无法响应HTTP/2请求262(x),那么HTTP/2响应264(x)不按照成功代码列表表示成功。
作为执行错误处置程序的一部分,射后不理处置程序320可以导致执行线程在射后不理处置程序320和代理处置程序340之间重复地来回传播。该错误处置程序最终终止了执行线程。
可以理解的是,本文描述的代理应用250是说明性的,并且变更和修改是可能的。例如,在替代实施例中,射后不理处置程序320可以以任何技术上可行的方式向代理处置程序340表示针对HTTP/request 232(x)卸载是否是激活的。如果卸载针对HTTP/请求232(x)不是激活的,那么代理处置程序340生成HTTP/1.x响应234(x)并将HTTP/1.x响应234(x)写入到http.responseWriter。然后,代理处置程序340终止执行线程。
仅出于解释的目的,图3描绘了与图2的HTTP/1.x请求232(3)相关联的执行线程的控制,作为一系列编号的气泡从客户端应用220(1)接收HTTP/1.x请求232(3)。HTTP/1.x请求232(3)包括但不限于请求行、主机标头、射后不理标头和正文。请求行指定了POST方法、请求目标“/upload”以及协议版本HTTP/1.1。POST方法将HTTP/1.x请求232(3)(未示出)的正文发送到后端服务器270,以创建或修改请求目标“/upload”。主机标头指定了后端服务器270的域名“www.XYZ.com”。射后不理标头指定了名称“射后不理”和包括状态代码200的成功代码列表。因为HTTP/1.x请求232(3)不包括持久性标头,所以HTTP/1.x请求232(3)与默认的持久性水平高相关。
如用编号为1的气泡所描绘的,与HTTP/1.x请求232(3)相关联的执行线程进入HTTP库层310。HTTP库层310生成代表HTTP/1.x请求232(3)的http.responseWriter和http.Request,然后将控制权转移到射后不理处置程序320。因为HTTP/1.x请求232(3)包括射后不理标头,所以射后不理处置程序320根据最大并发卸载322来确定是否激活HTTP/1.x请求232(3)的卸载。仅为了解释的目的,卸载被激活的HTTP/1.x请求232的总数小于最大并发卸载322。因此,射后不理处置程序320激活了HTTP/1.x请求232(3)的卸载,并开始执行卸载操作326。
如用编号为2的气泡描绘的那样,射后不理处置程序320配置http.responseWriter以便以非阻塞方式将成功的通用HTTP响应234(x)传输到客户端应用220(1)。然后,射后不理处置程序320使执行线程以在向前的方向上在管道中传播,直到代理处置程序340接收到执行线程的控制权。代理处置程序340将HTTP/1.x请求232(3)转换为HTTP/2请求262(3)。
如用编号为3的气泡描绘的那样,代理处置程序340将HTTP/2请求262(3)传输到后端服务器270。然后,执行线程接收到HTTP/2响应264(3),该响应指明“504网关超时”的HTTP状态线(用编号为4的气泡描绘)。随后,代理处置程序340使执行线程以相反的方向在管道中传播,直到到达射后不理处置程序320。
射后不理处置程序320在卸载操作326内恢复执行。因为HTTP/2响应264(3)没有指明成功状态代码,所以射后不理处置程序320执行与持久性水平高相对应的错误处置程序。更具体地说,并如编号为5的气泡所描绘的那样,射后不理处置程序320进行重新传输尝试328。为了执行重新传输尝试328,射后不理处置程序320将执行线程的控制权转移到代理处理程序320(1),并且执行线程在向前的方向上重新穿过管道传播,直到到达代理处置程序340。
如编号为6的气泡所描绘的,代理处置程序340尝试将HTTP/2请求262(3)重新传输到后端服务器270。随后,如编号为7的气泡所描绘的,代理处置程序340接收到HTTP/2响应264(3'),该响应指明HTTP状态行为“200OK”。代理处置程序340使执行线程在管道中以相反的方向重新传播,直到到达“射后不理”处理程序320。射后不理处置程序320在错误处置过程中恢复执行。因为HTTP/2响应的状态代码264(3')表示成功,所以射后不理处置程序320终止了执行线程。
请注意,这里描述的技术是说明性的而不是限制性的,并且可以在不脱离本发明的更广泛的精神和范围的情况下进行变更。对于本领域的普通技术人员来说,在不脱离所描述的实施例和技术的范围和精神的情况下,许多修改和变更将是显而易见的。特别是,代理应用250的功能可以以任何技术上可行的方式实施。例如,在另选实施例中,代理应用250可以包括任何数量(包括一个)和类型的功能,而不是包括HTTP处理程序功能的管道。
图4是根据本发明的各种实施例的用于处理与基于网络的服务相关联的请求的方法步骤的流程图。尽管参照图1至图3的系统描述了方法步骤,但本领域的技术人员将理解,被配置为以任何顺序实施方法步骤的任何系统都属于本发明的范围内。
如图所示,方法400开始于步骤402,其中代理应用250从客户端应用220之一接收HTTP请求。该HTTP请求可以是HTTP/1.x格式(即,HTTP/1.x请求232(x))或HTTP/2格式(即,HTTP/2请求.262(x))。在步骤404,射后不理处置程序320根据HTTP请求是否包括射后不理标头以及可选地包括最大并发卸载322来确定是否针对HTTP请求激活卸载。在步骤406,射后不理处置程序320确定是否针对HTTP请求激活卸载。如果在步骤406,射后不理处置程序320确定针对HTTP请求的卸载是激活的,那么方法400进行到步骤408。
在步骤408,射后不理处置程序320在与HTTP请求相关联的HTTP版本中向客户端应用220传输成功通用HTTP响应。在步骤410,代理处置程序340尝试将对应于HTTP请求的HTTP/2请求262传输到后端服务器270。对应于HTTP请求的HTTP/2请求262可以是HTTP请求。在步骤412,射后不理处置程序320确定代理处置程序340是否接收到表示成功的HTTP/2响应264。如果在步骤412,射后不理处置程序320确定代理处置程序340接收到表示成功的HTTP/2响应264,则方法400终止。
然而,如果在步骤412,射后不理处置程序320确定代理处置程序340没有接收到表示成功的HTTP/2响应264,则方法400继续进行到步骤414。在步骤414,射后不理处置程序320根据持久性水平来执行错误处置程序。持久性水平在HTTP请求的持久性标头中指定,或者等于默认持久性水平。错误处置过程可能涉及任何数量(包括零)的重新传输尝试328。然后,该方法400终止。
现在返回到步骤408,射后不理处置程序320确定针对HTTP请求卸载没有被激活,那么方法400直接进行到步骤416。在步骤416,代理处置程序340尝试将对应于HTTP请求的HTTP/2请求262传输到后端服务器270。对应于HTTP请求的HTTP/2请求262可以是HTTP请求。
在步骤418,代理处置程序340确定是否从后端服务器270接收到相应的HTTP/2响应264。如果在步骤418,代理处置程序340确定从后端服务器270接收到相应的HTTP/2响应264,则方法400直接进行到步骤422。如果在步骤418,代理处置程序340确定没有从后端服务器270接收到相应的HTTP/2响应264,则方法400进行到步骤420。在步骤420,代理处置程序340生成服务器错误HTTP/2响应264,并且方法400进行到步骤422。
在步骤422,射后不理处置程序320向客户端应用220发送HTTP/2响应264的版本。如果从客户端应用220接收到的HTTP请求是HTTP/2格式的,那么射后不理处置程序320将HTTP/2响应264传输到客户端应用220。否则,射后不理处置程序320将HTTP/2响应264转换为HTTP/1.x响应234,并将HTTP/1.x响应234传输给客户端应用220。然后,该方法400终止。
总之,使用所公开的技术,代理应用可以使实施基于TCP的HTTP/1.x的客户端应用高效地与后端服务器交互以访问基于网络的服务。客户端应用可以在针对信息性上传的HTTP请求中添加“射后不理”标头,以表示相应的HTTP响应是不重要的。射后不理标头指定成功的状态代码列表,这些状态代码将被视为成功。射后不理标头与默认的持久性水平相关联,客户端应用也可以在HTTP请求中添加“持久性”标头,该标头明确指定持久性水平。持久性水平与接收HTTP请求的后端服务器的重要性水平相关联。
代理应用在代理服务器上执行,该代理服务器充当客户端应用和后端服务器之间的中介。在接收到来自客户端应用的HTTP请求时,代理应用确定是否针对HTTP请求激活卸载。如果HTTP请求具有射后不理标头,并且没有达到并发卸载的最大数量,那么代理应用就针对HTTP请求激活卸载。否则,代理应用不针对HTTP请求激活“射后不理”。
如果HTTP请求的卸载被激活,那么代理应用将成功通用HTTP响应传输到客户端。成功通用HTTP响应指定了包括在成功代码列表中的状态代码之一,从而有意地且错误地表示后端服务器已经成功接收并处理了HTTP请求。然后,代理应用尝试将HTTP/2版本的HTTP请求传输给后端服务器。如果代理应用接收到表示按照成功代码列表来说成功的HTTP/2响应,那么代理应用将丢弃该HTTP/2响应。否则,代理应用会根据持久性水平执行错误处置过程。错误处置过程可以涉及任何数量的重新传输尝试。
如果针对HTTP请求,卸载未被激活,那么代理应用尝试将HTTP/1.x请求的HTTP/2版本传输到后端服务器。如果代理应用没有从后端服务器接收到HTTP/2响应,则代理应用向客户端应用传输服务器错误HTTP/1.x响应。否则,代理应用将从后端服务器接收到的HTTP/2响应的HTTP/1.x版本传输给客户端应用。
相对于现有技术,本公开技术的至少一个技术优势在于:对于实施HTTP/1.x overTCP的客户端应用,使用本公开的技术,交互式HTTP事务不太可能被信息性HTTP事务延迟。特别地,一旦代理服务器对来自客户端应用的信息性HTTP事务做出响应,客户端应用就可以关闭或重新使用相关的TCP连接,而不必等待后端服务器的响应。因此,客户端应用不太可能将所有可用的TCP连接用于信息性HTTP事务,并延迟交互式HTTP事务的传输和处理。此外,由于代理服务器随后尝试将与信息性HTTP事务相关联的信息上传到后端服务器,所以信息最终被丢弃的可能性不会增加。而且,由于代理服务器通过HTTP/2使用预先建立和预先认证的TCP连接与后端服务器进行通信,客户端应用和后端服务器之间的通信时间被缩短。这些技术优势代表了相对于现有技术方法的一个或多个技术进步。
1.在一些实施例中,一种方法包括:确定从客户端应用接收到的第一请求表示可以从服务器机器卸载对第一请求的响应;以及在将第一请求传输到服务器机器之前,将对第一请求的第一响应传输到客户端应用,该第一响应表示服务器机器已经成功地处理第一请求,其中,在接收到第一响应后,客户端应用能够发起第二请求。
2.根据条款1的方法,其中,第一请求包括表示服务器机器已成功处理第一请求的状态代码。
3.根据条款1或2的方法,其中,第一请求与超文本传输协议(HTTP)/1.x相关联,并且将第一请求传输到服务器机器包括:基于第一请求生成与HTTP/2相关联的第二请求;以及将第二请求与和HTTP/2相关联的至少第三请求通过第一传输控制协议(TCP)连接多路传输到服务器机器。
4.根据条款1至3中任一项的方法,还包括确定服务器机器未成功处理第一请求;确定第一请求表示第一持久性水平;以及基于第一持久性水平来执行一个或多个错误处置操作,其中,该一个或多个错误处置操作使得服务器机器成功处理第一请求。
5.根据条款1至4中任一项的方法,其中,确定第一请求表示第一持久性水平包括:确定第一请求包括如下的标头部分:该标头部分指明与第一持久性水平相对应的持久性参数的值。
6.根据条款1至5中任一项的方法,其中,第一请求包括正在上传到服务器机器的信息性数据。
7.根据条款1至6中任一项的方法,还包括从服务器机器接收对第一请求的第二响应;以及丢弃第二响应,而不是将第二响应传输给客户端应用。
8.根据条款1至7中任一项的方法,其中,客户端应用通过传输控制协议(TCP)连接接收第一响应,并重新使用或重新生成TCP连接以发起第二请求。
9.根据条款1至8中任一项的方法,还包括确定从客户端应用接收到的第二请求不表示可以从服务器机器卸载对第二请求的响应;将第二请求直接传输给服务器机器;以及在从服务器机器接收到对第二请求的第二响应后,将第二响应传输给客户端应用。
10.根据条款1至9中任一项的方法,其中,确定第一请求表示对第一请求的响应可以被卸载包括识别第一请求包括如下的标头部分:该标头部分表示对第一请求的响应不关键。
11.在一些实施例中,计算机实施的计算机可读存储介质包括指令,所述指令当由处理器执行时,使处理器执行以下步骤:确定从客户端应用接收到的第一请求可以从服务器机器卸载;以及在将第一请求传输到服务器机器之前,将对第一请求的第一响应传输到客户端应用,该第一响应表示服务器机器已经成功地处理第一请求,其中,在接收到第一响应后,客户端应用能够发起第二请求。
12.根据条款11的一个或多个非暂时性计算机可读介质,其中,第一请求与超文本传输协议(HTTP)/1.x相关联,并且将第一请求传输到服务器机器包括:基于第一请求生成与HTTP/2相关联的第二请求;以及将第二请求与和HTTP/2相关联的至少第三请求通过第一传输控制协议(TCP)连接多路传输到服务器机器。
13.根据条款11或12的一个或多个非暂时性计算机可读介质,还包括确定服务器机器未成功处理第一请求;确定第一请求表示第一持久性水平;以及基于第一持久性水平来执行一个或多个错误处置操作,其中,该一个或多个错误处置操作使得服务器机器成功处理第一请求。
14.根据条款11至13中任一项的一个或多个非暂时性计算机可读介质,其中,所述一个或多个错误处置操作包括将第一请求存储在持久性存储器中的一个或多个写入操作。
15.根据条款11至14中任一项的一个或多个非暂时性计算机可读介质,其中,所述第一请求包括以下项中的至少一项:事件日志、表示客户端应用正确执行的心跳、以及度量日志。
16.根据条款11至15中任一项的一个或多个非暂时性计算机可读介质,还包括:从服务器机器接收对第一请求的第二响应;以及丢弃第二响应,而不是将第二响应传输给客户端应用。
17.根据条款11至16中任一项的一个或多个非暂时性计算机可读介质,其中,客户端应用通过传输控制协议(TCP)连接接收第一响应,并重新使用或重新生成TCP连接以发起第二请求。
18.根据条款11至17中任一项的一个或多个非暂时性计算机可读介质,还包括确定可以从服务器机器卸载从客户端应用接收的第二请求;确定并发卸载的当前数量等于并发卸载的最大数量;将第二请求直接传输到服务器机器;以及在从服务器机器接收对第二请求的第二响应后,将第二响应传输到客户端应用。
19.根据条款11至18中任一项的一个或多个非暂时性计算机可读介质,其中,确定第一请求可以被卸载包括识别第一请求包括如下的标头部分:该标头部分表示对第一请求的响应不关键。
20.在一些实施例中,系统包括存储指令的一个或多个存储器;以及一个或多个处理器,这些处理器耦合到一个或多个存储器并且在执行指令时被配置为确定通过第一连接从客户端应用接收到的第一请求表示可以从服务器机器卸载对该第一请求的响应;并在将第一请求传输给服务器机器之前,将对第一请求的第一响应传输给客户端应用,该第一响应表示服务器机器已经成功地处理了第一请求,其中,在接收到第一响应后,客户端应用能够重新使用或重新生成第一连接以发起第二请求。
任何权利要求书中所叙述的任何权利要求元素和/或本申请中所描述的任何元素的以任何方式的任何和所有组合都落入本发明和保护的设想范围内。
对各种实施例的描述是为了说明的目的而提出的,但并不意味着详尽无遗或限于所公开的实施例。对于本领域普通技术人员来说,在不脱离所述实施例的范围和精神的情况下,许多修改和变更将是显而易见的。
本实施例的各方面可体现为系统、方法或计算机程序产品。因此,本公开的各方面可以采取完全的硬件实施例、完全的软件实施例(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施例的形式,这些实施例在本文中都可以一般称为“模块”、“系统”或“计算机”。此外,本公开中描述的任何硬件和/或软件技术、过程、功能、部件、引擎、模块或系统可以作为电路或一组电路来实施。此外,本公开的各个方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,介质上体现有计算机可读程序代码。
可以利用一种或多种计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备或上述的任何适当组合。计算机可读存储介质的更具体的示例(非详尽清单)将包括以下:具有一条或多条导线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光学存储装置、磁存储装置或上述的任何适当组合。在本文的上下文中,计算机可读存储介质可以是任何可以包含或存储程序的有形介质,供指令执行系统、装置或设备使用或与之相关。
以上参照根据本公开的实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图来描述本公开的各个方面。可以理解的是,流程图和/或框图的每个块以及流程图和/或框图中的块的组合可以通过计算机程序指令实施。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,以产生一台机器。这些指令在通过计算机或其他可编程数据处理装置的处理器执行时,能够实现流程图和/或框图中指定的一个或多个块的功能/行为。这样的处理器可以是但不限于通用处理器、特殊用途处理器、特定应用处理器或现场可编程门阵列。
图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实施例的结构、功能和操作。在这方面,流程图或框图中的每个块均可以代表代码的模块、段或部分,其包括一个或多个用于实施指定逻辑功能的可执行指令。还应注意的是,在一些另选实施例中,块中指出的功能可能不按图中指出的顺序出现。例如,连续示出的两个块实际上可能基本上是同时执行的,或者这些块有时可能以相反的顺序执行,这取决于所涉及的功能。还将注意到,框图和/或流程图中的每个块以及框图和/或流程图中的块的组合,可以由执行指定功能或行为的基于特殊目的硬件的系统或特殊目的硬件和计算机指令的组合来实施。
虽然前述内容是针对本公开的实施例,但在不脱离其基本范围的情况下可以设计出本公开的其他和进一步的实施例,并且其范围由所附权利要求书确定。
Claims (20)
1.一种计算机实施的方法,所述方法包括:
确定从客户端应用接收到的第一请求表示可以从服务器机器卸载对所述第一请求的响应;以及
在将所述第一请求传输到所述服务器机器之前,将对所述第一请求的第一响应传输到所述客户端应用,所述第一响应表示所述服务器机器已经成功地处理所述第一请求,
其中,在接收到所述第一响应后,所述客户端应用能够发起第二请求。
2.根据权利要求1所述的方法,其中,所述第一请求包括表示所述服务器机器已成功处理所述第一请求的状态代码。
3.根据权利要求1所述的方法,其中,所述第一请求与超文本传输协议(HTTP)/1.x相关联,并且将所述第一请求传输到所述服务器机器包括:
基于所述第一请求生成与HTTP/2相关联的第二请求;以及
通过第一传输控制协议(TCP)连接将所述第二请求连同至少第三请求多路传输到所述服务器机器,所述第三请求与HTTP/2相关联。
4.根据权利要求1所述的方法,还包括:
确定所述服务器机器未成功处理所述第一请求;
确定所述第一请求表示第一持久性水平;以及
基于所述第一持久性水平执行一个或多个错误处置操作,其中,所述一个或多个错误处置操作使得所述服务器机器成功处理所述第一请求。
5.根据权利要求4所述的方法,其中,确定所述第一请求表示第一持久性水平包括确定所述第一请求包括如下的标头部分:该标头部分指明与所述第一持久性水平相对应的持久性参数的值。
6.根据权利要求1所述的方法,其中,所述第一请求包括正在被上传到所述服务器机器的信息性数据。
7.根据权利要求1所述的方法,还包括:
从所述服务器机器接收对所述第一请求的第二响应;以及
丢弃所述第二响应,而不是将所述第二响应传输给所述客户端应用。
8.根据权利要求1所述的方法,其中,所述客户端应用通过传输控制协议(TCP)连接接收所述第一响应并重新使用或重新生成所述TCP连接以发起所述第二请求。
9.根据权利要求1所述的方法,还包括:
确定从所述客户端应用接收的所述第二请求不表示可以从所述服务器机器卸载对所述第二请求的响应;
将所述第二请求直接传输给所述服务器机器;以及
在从所述服务器机器接收对所述第二请求的第二响应后,将所述第二响应传输给所述客户端应用。
10.根据权利要求1所述的方法,其中,确定所述第一请求表示对所述第一请求的响应可以被卸载包括识别所述第一请求包括如下的标头部分:该标头部分表示对所述第一请求的响应不关键。
11.一个或多个非暂时性计算机可读介质包括指令,所述指令当由一个或多个处理器执行时,使所述一个或多个处理器执行以下步骤:
确定可以从服务器机器卸载从客户端应用接收到的第一请求;以及
在将所述第一请求传输到所述服务器机器之前,将对所述第一请求的第一响应传输到所述客户端应用,所述第一响应表示所述服务器机器已经成功地处理所述第一请求,
其中,在接收到所述第一响应后,所述客户端应用能够发起第二请求。
12.根据权利要求11所述的一个或多个非暂时性计算机可读介质,其中,所述第一请求与超文本传输协议(HTTP)/1.x相关联,并且将所述第一请求传输到所述服务器机器包括:
基于所述第一请求生成与HTTP/2相关联的第二请求;以及
通过第一传输控制协议(TCP)连接将所述第二请求连同至少第三请求多路传输至所述服务器机器,所述第三请求与HTTP/2相关联。
13.根据权利要求11所述的一个或多个非暂时性计算机可读介质,还包括:
确定所述服务器机器未成功处理所述第一请求;
确定所述第一请求表示第一持久性水平;以及
基于所述第一持久性水平执行一个或多个错误处置操作,其中,所述一个或多个错误处置操作使得所述服务器机器成功处理所述第一请求。
14.根据权利要求13所述的一个或多个非暂时性计算机可读介质,其中,所述一个或多个错误处置操作包括将所述第一请求存储在持久性存储器中的一个或多个写入操作。
15.根据权利要求11所述的一个或多个非暂时性计算机可读介质,其中,所述第一请求包括以下项中的至少一项:事件日志、表示所述客户端应用正确执行的心跳、以及度量日志。
16.根据权利要求11所述的一个或多个非暂时性计算机可读介质,还包括:
从所述服务器机器接收对所述第一请求的第二响应;以及
丢弃所述第二响应,而不是将所述第二响应传输给所述客户端应用。
17.根据权利要求11所述的一个或多个非暂时性计算机可读介质,其中,所述客户端应用通过传输控制协议(TCP)连接接收所述第一响应并重新使用或重新生成所述TCP连接以发起所述第二请求。
18.根据权利要求11所述的一个或多个非暂时性计算机可读介质,还包括:
确定可以从所述服务器机器卸载从所述客户端应用接收的所述第二请求;
确定并发卸载的当前数量等于并发卸载的最大数量;
将所述第二请求直接传输到所述服务器机器;以及
在从所述服务器机器接收对所述第二请求的第二响应后,将所述第二响应传输到所述客户端应用。
19.根据权利要求11所述的一个或多个非暂时性计算机可读介质,其中,确定所述第一请求可以被卸载包括识别所述第一请求包括如下的标头部分:该标头部分表示对所述第一请求的响应不关键。
20.一种系统,包括:
存储指令的一个或多个存储器;以及
一个或多个处理器,所述一个或多个处理器耦合到所述一个或多个存储器并且在执行所述指令时被配置为:
确定通过第一连接从客户端应用接收的第一请求表示可以从服务器机器卸载对该第一请求的响应;以及
在将所述第一请求传输给所述服务器机器之前,将对所述第一请求的第一响应传输给所述客户端应用,所述第一响应表示所述服务器机器已经成功地处理所述第一请求,
其中,在接收到所述第一响应后,所述客户端应用能够重新使用或重新生成所述第一连接以发起第二请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/416,108 US11212368B2 (en) | 2019-05-17 | 2019-05-17 | Fire-and-forget offload mechanism for network-based services |
US16/416,108 | 2019-05-17 | ||
PCT/US2020/033268 WO2020236650A1 (en) | 2019-05-17 | 2020-05-15 | Fire-and-forget offload mechanism for network-based services |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113841373A true CN113841373A (zh) | 2021-12-24 |
Family
ID=70978639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080036475.XA Pending CN113841373A (zh) | 2019-05-17 | 2020-05-15 | 用于基于网络的服务的“射后不理”卸载机制 |
Country Status (11)
Country | Link |
---|---|
US (2) | US11212368B2 (zh) |
EP (1) | EP3970347A1 (zh) |
JP (1) | JP7344315B2 (zh) |
KR (1) | KR102612711B1 (zh) |
CN (1) | CN113841373A (zh) |
AU (1) | AU2020279111B2 (zh) |
BR (1) | BR112021023051A2 (zh) |
CA (1) | CA3139917A1 (zh) |
MX (1) | MX2021014020A (zh) |
SG (1) | SG11202112793TA (zh) |
WO (1) | WO2020236650A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11188406B1 (en) | 2021-03-31 | 2021-11-30 | Advanced Micro Devices, Inc. | Detecting execution hazards in offloaded operations |
CN113407880A (zh) * | 2021-05-06 | 2021-09-17 | 中南大学 | 一种适用于加密http/2网页的访问行为识别方法 |
US11757929B2 (en) * | 2021-05-27 | 2023-09-12 | Pantheon Systems, Inc. | Traffic-shaping HTTP proxy for denial-of-service protection |
CN113992749B (zh) * | 2021-10-08 | 2024-05-14 | 浪潮云信息技术股份公司 | 一种基于go语言的http反向代理方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852717A (en) * | 1996-11-20 | 1998-12-22 | Shiva Corporation | Performance optimizations for computer networks utilizing HTTP |
CN101535965A (zh) * | 2005-10-14 | 2009-09-16 | 塞门铁克操作公司 | 用于提高存储管理系统的可伸缩性和可移植性的技术 |
CN102667509A (zh) * | 2009-10-08 | 2012-09-12 | 霍乐网络有限公司 | 用于提供更快速且更高效的数据通信的系统和方法 |
US20150067819A1 (en) * | 2013-08-28 | 2015-03-05 | Hola Networks Ltd. | System and Method for Improving Internet Communication by Using Intermediate Nodes |
US9003540B1 (en) * | 2009-10-07 | 2015-04-07 | Amazon Technologies, Inc. | Mitigating forgery for active content |
CN105531979A (zh) * | 2013-07-31 | 2016-04-27 | 微软技术许可有限责任公司 | 建立用于数据交换的上下文的http协议上的消息传递api |
US20180365190A1 (en) * | 2017-06-20 | 2018-12-20 | Netflix, Inc. | Acceleration system for facilitating processing of api calls |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154244A1 (en) * | 2002-02-13 | 2003-08-14 | Zellers Mark H. | Method and system to provide flexible HTTP tunnelling |
US7945673B2 (en) * | 2002-12-06 | 2011-05-17 | Hewlett-Packard Development Company, L.P. | Reduced wireless internet connect time |
JP4888653B2 (ja) * | 2007-03-29 | 2012-02-29 | 日本電気株式会社 | トラヒック規制方法、中継システム、中継装置およびプログラム |
US8855088B2 (en) * | 2010-12-22 | 2014-10-07 | Intel Corporation | Reverse protocol for low latency wireless applications |
KR101990489B1 (ko) * | 2014-04-21 | 2019-09-30 | 엘지전자 주식회사 | 무선 통신시스템에서 블루투스를 이용하여 http 데이터를 전송하기 위한 방법 및 장치 |
GB2534849A (en) * | 2015-01-28 | 2016-08-10 | Canon Kk | Client-driven push of resources by a server device |
JP6516539B2 (ja) * | 2015-04-15 | 2019-05-22 | キヤノン株式会社 | 通信装置、通信方法、およびプログラム |
US9961093B1 (en) * | 2015-09-30 | 2018-05-01 | EMC IP Holding Company LLC | Monitoring for reverse-connection network activity to detect a remote-administration tool |
US10826966B2 (en) * | 2018-02-23 | 2020-11-03 | Servicenow, Inc. | Scheduling and concurrent processing of protocol transactions |
-
2019
- 2019-05-17 US US16/416,108 patent/US11212368B2/en active Active
-
2020
- 2020-05-15 SG SG11202112793TA patent/SG11202112793TA/en unknown
- 2020-05-15 EP EP20730873.5A patent/EP3970347A1/en active Pending
- 2020-05-15 MX MX2021014020A patent/MX2021014020A/es unknown
- 2020-05-15 BR BR112021023051A patent/BR112021023051A2/pt unknown
- 2020-05-15 KR KR1020217040983A patent/KR102612711B1/ko active IP Right Grant
- 2020-05-15 AU AU2020279111A patent/AU2020279111B2/en active Active
- 2020-05-15 CA CA3139917A patent/CA3139917A1/en active Pending
- 2020-05-15 WO PCT/US2020/033268 patent/WO2020236650A1/en active Application Filing
- 2020-05-15 JP JP2021566488A patent/JP7344315B2/ja active Active
- 2020-05-15 CN CN202080036475.XA patent/CN113841373A/zh active Pending
-
2021
- 2021-12-27 US US17/562,466 patent/US20220124173A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852717A (en) * | 1996-11-20 | 1998-12-22 | Shiva Corporation | Performance optimizations for computer networks utilizing HTTP |
CN101535965A (zh) * | 2005-10-14 | 2009-09-16 | 塞门铁克操作公司 | 用于提高存储管理系统的可伸缩性和可移植性的技术 |
US9003540B1 (en) * | 2009-10-07 | 2015-04-07 | Amazon Technologies, Inc. | Mitigating forgery for active content |
CN102667509A (zh) * | 2009-10-08 | 2012-09-12 | 霍乐网络有限公司 | 用于提供更快速且更高效的数据通信的系统和方法 |
CN105531979A (zh) * | 2013-07-31 | 2016-04-27 | 微软技术许可有限责任公司 | 建立用于数据交换的上下文的http协议上的消息传递api |
US20150067819A1 (en) * | 2013-08-28 | 2015-03-05 | Hola Networks Ltd. | System and Method for Improving Internet Communication by Using Intermediate Nodes |
US20180365190A1 (en) * | 2017-06-20 | 2018-12-20 | Netflix, Inc. | Acceleration system for facilitating processing of api calls |
Non-Patent Citations (2)
Title |
---|
JERRY BASKIN: "Methods to Mitigate Contamination and Moisture Ingress in Switchgear", 《ESMO 2006 - 2006 IEEE 11TH INTERNATIONAL CONFERENCE ON TRANSMISSION & DISTRIBUTION CONSTRUCTION, OPERATION AND LIVE-LINE MAINTENANCE》, 10 April 2007 (2007-04-10) * |
夏永泉, 张秉权, 许洁萍: "SOCKS5代理技术分析及应用", 兵工自动化, no. 01, 15 February 2003 (2003-02-15) * |
Also Published As
Publication number | Publication date |
---|---|
WO2020236650A1 (en) | 2020-11-26 |
US11212368B2 (en) | 2021-12-28 |
AU2020279111A1 (en) | 2021-12-23 |
CA3139917A1 (en) | 2020-11-26 |
SG11202112793TA (en) | 2021-12-30 |
US20200366761A1 (en) | 2020-11-19 |
US20220124173A1 (en) | 2022-04-21 |
JP2022531940A (ja) | 2022-07-12 |
BR112021023051A2 (pt) | 2021-12-28 |
MX2021014020A (es) | 2021-12-10 |
AU2020279111B2 (en) | 2023-01-05 |
KR102612711B1 (ko) | 2023-12-13 |
KR20220007696A (ko) | 2022-01-18 |
JP7344315B2 (ja) | 2023-09-13 |
EP3970347A1 (en) | 2022-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2020279111B2 (en) | Fire-and-forget offload mechanism for network-based services | |
EP3238401B1 (en) | Network extended tcp splicing | |
JP6564960B2 (ja) | ネットワーキング技術 | |
US11016911B2 (en) | Non-volatile memory express over fabric messages between a host and a target using a burst mode | |
US8671152B2 (en) | Network processor system and network protocol processing method | |
JP3833847B2 (ja) | パケットベースの通信ネットワークにおけるメッセージ受信の肯定応答システム及び方法 | |
US9413830B2 (en) | Application streaming service | |
US20180278539A1 (en) | Relaxed reliable datagram | |
CN110999260B (zh) | 在基于代理的网络通信中的控制数据的传输 | |
US8793384B2 (en) | Recovery of disconnected channels over a reliable protocol | |
US10108572B1 (en) | Pipelined I/O adapter device with low-latency write requests retries | |
US20150372908A1 (en) | Hybrid approach for performance enhancing proxies | |
Mansley | Engineering a user-level TCP for the CLAN network | |
Stanciu et al. | Design and development of a UDP-based connection-oriented multi-stream one-to-many communication protocol | |
Lloyd et al. | Coercing clients into facilitating failover for object delivery | |
CN113934449A (zh) | 游戏开发系统、方法、计算机可读存储介质和计算机程序产品 | |
CN113301398A (zh) | 信息处理方法及系统、服务端设备、客户端设备 | |
Lloyd et al. | Transparent Recovery for Object Delivery Services |
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 |