最全【135期】面试官问:为什么要合并 HTTP 请求,实现batch call?,大佬分享开发经验

我的面试宝典:一线互联网大厂Java核心面试题库

以下是我个人的一些做法,希望可以给各位提供一些帮助:

整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!

image

283页的Java进阶核心pdf文档

Java部分:Java基础,集合,并发,多线程,JVM,设计模式

数据结构算法:Java算法,数据结构

开源框架部分:Spring,MyBatis,MVC,netty,tomcat

分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等

微服务部分:SpringBoot,SpringCloud,Dubbo,Docker

image

还有源码相关的阅读学习

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

别问别人为什么,多问自己凭什么!

下方留言必回,有问必答!

每天 0****8:00 更新文章,每天进步一点点…

思考路径:

为什么要实现batch call? -> 减少网络中的传输损耗 -> 如何减少的? -> 通过合并HTTP请求 -> 合并HTTP请求是如何减少网络损耗的?

本文将解决这个问题。一起看看单个请求携载大量信息和多个请求携载小量信息对于整个时间的影响。

1. Client发出请求


1.1 HTTP 1.1

可以保持长连接,但是每个不同的请求之间,client要向server发一个请求头

请求无法并行执行的,在一个连接里面

假设如果不合并的话需要建立N个连接,那么合并就可以省去(N-1)*RTT的时间,RTT指网络延迟(在传输介质中传输所用的时间,即从报文开始进入网络到它开始离开网络之间的时间)。

1.2 TCP丢包问题

慢启动,拥塞控制窗口

TCP报文乱序到达,合并后的文件可以允许队首丢包以后在队中补上来,但是分开资源的时候,前一个资源未加载完成后面的资源是不能加载的,会有更严重的队首阻塞问题,丢包率会严重影响Keep alive情况下多个文件的传输速率。

1.3 浏览器线程数限制

多为2-6个线程,会在每个连接上串行发送若干个请求。TCP连接太多,会给服务器造成很大的压力的。

1.4 DNS缓存问题

每次请求都需要找DNS缓存,多个请求就需要查找多次,而且缓存有可能被无故清空

2. 服务器处理请求


每个请求需要使用一个连接,建立一个线程,分配一部分CPU, 对于CPU而言,是种负担,尤其是一般来说建立了连接以后,哪怕发回了请求,这个连接还会保持一段时间才会timeout。

这种时候,维持连接是对服务器资源的一种巨大的浪费。更多面试题,公众号Java精选,回复Java面试,获取最新面试题资料。

3. HTTP 2.0


上面描述的所有都是基于HTTP/1.1的一些特性,或者说弊端,有长连接但是无法并行处理请求,TCP的慢启动和拥塞控制,队首阻塞问题都给整个性能带来很多弊端,因此我们有了HTTP2.0来做针对性的改进。很有意思的东西,直接看图:

952e54b870fefd52d10df4529a52fbca.png

HTTP/1.1 network的请求图

ced0bab104f82c8989b53f82e779cd17.png

HTTP/2 network的请求图

就是这么酷炫,HTTP/2多了很多特性来解决HTTP/1.1的很多问题

3.1 Fully multiplexed

解决了队首阻塞的问题。对于同一个TCP连接,现在可以发送多个请求,接收多个回应了!在HTTP/1.1里面,如果在一个连接里上一个请求发生了丢包,那么后面的所有请求都必须等第一个请求补上包,收到回应以后才能继续执行。而在HTTP/2里面,可以直接并行处理。

线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识

一线互联网P7面试集锦+各种大厂面试集锦

学习笔记以及面试真题解析

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

需要这份系统化的资料的朋友,可以点击这里获取

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值