http 请求中的长连接与短链接

一、"http连接"的说法不准确

http 属于 网络层协议,实际上网络层协议只是发起请求和响应请求,解决路由寻址等问题,所以http连接这个说法应该是不准确的。

本质上的连接是传输层的TCP连接,所以长连接短链接是针对TCP连接而言的。TCP主要负责可靠地传输数据包,保证数据包顺序的发送和接收。

二、http1.0 , http1.1,http2 的TCP长短连接

http1/.0版本,默认使用TCP短链接,客户端每发起一次请求,就与服务器建立一次连接,本次任务结束,连接断开。

http /1.1版本,默认使用TCP长连接,connect-type: keep-alive,长连接不会一致存在,会有生存周期,在空闲一段时间后会失效,这个时间可以设置,beego里可设置idletimeout。并发时,一个客户端可与同一个域名产生多个长连接

http2 版本,一个客户端与一个域名只会产生一个长连接。

  • 同域名下所有通信都在单个连接上完成。
  • 单个连接可以承载任意数量的双向数据流。
  • 数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装。

这一特性,性能会有极大的提升,因为:

  • 同个域名只需要占用一个TCP连接,消除了因多个TCP连接而带来的延时和内存消耗。
  • 单个连接上可以并行交错的请求和响应,之间互不干扰。

关于http2.0可查看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HttpClient是一个非常流行的Java库,用于发送HTTP请求和接收HTTP响应。在HttpClient,可以使用链接长连接来与服务器进行通信。 链接是指每次发送请求时都会创建一个新的连接,并在请求完成后关闭连接。这种方式适用于只需要发送少量请求的场景,每次请求都需要重新建立连接,无需维护连接状态。 长连接是指在发送请求后保持连接打开,并可以发送多个请求和接收多个响应。这样可以减少每次通信的开销,提高性能。长连接适用于需要频繁发送请求或保持与服务器的持续通信的场景。 在HttpClient,默认情况下是使用链接的。如果需要使用长连接,可以通过配置HttpClient的连接管理器来实现。一种常见的方式是使用连接池来管理连接,可以重复利用已经建立的连接,减少连接的创建和销毁开销。 以下是使用HttpClient进行链接长连接的示例代码: 1. 链接: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://example.com/api"); CloseableHttpResponse response = httpClient.execute(httpGet); // 处理响应 response.close(); httpClient.close(); ``` 2. 长连接: ```java PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(); connManager.setMaxTotal(100); // 设置最大连接数 connManager.setDefaultMaxPerRoute(20); // 设置每个路由的最大连接数 HttpClient httpClient = HttpClients.custom() .setConnectionManager(connManager) .build(); HttpGet httpGet1 = new HttpGet("http://example.com/api/1"); CloseableHttpResponse response1 = httpClient.execute(httpGet1); // 处理响应 response1.close(); HttpGet httpGet2 = new HttpGet("http://example.com/api/2"); CloseableHttpResponse response2 = httpClient.execute(httpGet2); // 处理响应 response2.close(); // 不需要显式关闭HttpClient,连接管理器会自动管理连接的关闭 ``` 希望这些信息能对你有所帮助!如果你还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值