当前位置: 首页 > 面试题库 >

HTTP 1.1流水线

酆俊远
2023-03-14
问题内容

我必须用Java实现HTTP客户端,并且出于我的需要,似乎最有效的方法是实现HTTP管道(按照RFC2616)。

顺便说一句,我想管道POST。(我也不在谈论多路复用。我在谈论流水线,即在接收到任何HTTP请求的响应之前,通过一个连接发送许多请求)

我找不到明确声明其支持流水线的第三方库。但是我可以使用例如Apache
HTTPCore
来构建这样的客户端,或者如果需要的话,可以自己构建。

我的问题是,这是否是个好主意。我没有找到任何权威性的参考,认为HTTP流水线不仅是理论模型,而且可以由HTTP服务器正确实现。此外,默认情况下,所有支持流水线的浏览器均禁用此功能。

因此,我应该尝试实现这样的客户端,否则由于服务器的实现(或代理)会遇到很多麻烦。有没有参考资料可以提供有关这些准则的指南?

如果不是一个好主意,那么效率的替代编程模型将是什么?单独的TCP连接?


问题答案:

我已经实现了管道HTTP客户端。基本概念听起来很简单,但是错误处理非常困难。性能提升微不足道,以至于我们很久以前就放弃了这些概念。

我认为,这对于正常的用例来说是没有意义的。仅当请求具有逻辑连接时,它才有一些好处。例如,您有一个3请求事务,您可以将它们全部批量发送。但是通常,如果可以管道化它们,则可以将它们组合为一个请求。

以下只是我记得的一些障碍,

  1. TCP的keepalive不能保证持久连接。如果在连接中传送了3个请求,则服务器在第一个响应后将断开连接。您应该重试接下来的两个请求。

  2. 当您有多个连接时,负载平衡也很棘手。如果没有空闲连接,则可以使用繁忙的连接,也可以创建一个新的连接。

  3. 超时也很棘手。当一个请求超时时,您必须丢弃所有请求,因为它们必须按顺序返回。



 类似资料:
  • 推荐: http://blog.csdn.net/elifefly/article/details/3964766 请求头Host字段,一个服务器多个网站 长链接 文件断点续传 身份认证,状态管理,Cache缓存 HTTP请求8种方法介绍 HTTP/1.1协议中共定义了8种HTTP请求方法,HTTP请求方法也被叫做“请求动作”,不同的方法规定了不同的操作指定的资源方式。服务端也会根据不同的请求方法

  • 主要内容:实例,实例,实例,实例,实例,实例关键词:流水线,乘法器 硬件描述语言的一个突出优点就是指令执行的并行性。多条语句能够在相同时钟周期内并行处理多个信号数据。 但是当数据串行输入时,指令执行的并行性并不能体现出其优势。而且很多时候有些计算并不能在一个或两个时钟周期内执行完毕,如果每次输入的串行数据都需要等待上一次计算执行完毕后才能开启下一次的计算,那效率是相当低的。流水线就是解决多周期下串行数据计算效率低的问题。 流水线 流水线的基

  • 流水账单详细记录了云账号支出明细信息。 流水账单详细记录了云账号支出明细信息。一条流水账单详细记录了用户通过云账号在1天内一次性使用资源的时长和产生的费用信息,一条流水账单的资源使用时长最长为1天。1天内若多次使用指定资源,将产生多条流水账单记录。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “费用/账单/流水账单” 菜单项,进入流水账单页面。 查看流水账单 该功能用于查看流水账

  • 我不太会流口水和咕噜。 我有一个关于规则流的基本问题。 我在guvnor插件上使用引导编辑器创建了3条规则。现在我想根据第一条规则的结果调用第二条或第三条规则。 e、 g.如果患者年龄小于18岁,则进行第二条规则的小检查,否则请调用第三条规则由高级医生进行检查。 那么,这可以通过使用规则流来实现吗?如果是,如何?是否有任何示例链接和文档来演示它?非常感谢您的帮助。 谢啦

  • 问题内容: 这是我的流口水验证问题的第二部分。第一部分已经回答,我的代码中已经实现了建议的解决方案。 这是我的java类结构 好的,我的问题是,如果FinanceItemName为“土地或建筑物”,并且该用户的地址符合以下条件,则我需要验证FinanceDetails实例的itemValue, AddressStatus ==当前 AddressType ==物理 AddressUseType =

  • 问题内容: 因此,我想使用node.js和http请求管道,但是我只想将HTTP用作传输方式,而没有其他用途。我对利用请求流水线功能感兴趣。但是,我遇到的一个问题是,在发送对前一个请求的响应之前,节点不会触发下一个请求的回调。我想要一种能够做到这一点的方法。我将在应用程序中处理结果的排序。有没有办法做到这一点? HTTP RFC提到响应应该井井有条,但是我看不出有任何理由让node.js在响应第一