学习
实践
活动
专区
工具
TVP
写文章

思考一个HTTP的GET请求

用户使用浏览器访问一个网站,动动手指刷新下页面就是一个HTTP GET请求,那么从发起请求到显示具体页面之间这个过程发生了什么呢?这个问题就是我一直在思考的。正好今天有点空闲,就把这个流程根据我正在做的项目整理了下,然后画了这个流程图,有不对的地方请大家指出,献丑。图如下:

如图一个请求从发起到显示到用户有如下步骤:

1、浏览器发起请求,通过本地DNS服务转发到DNS服务器

2、DNS服务器解析请求的域名,返回给浏览器实际要访问的IP地址,在这个项目中我们在服务器端做了个分发,通过算法从多个负载均衡服务器中选取一个IP返回给浏览器

3、浏览器根据获取到的IP地址,访问具体的负载均衡服务器。

4、负载均衡服务器根据算法把请求分发给一个具体的应用服务器

5、应用服务器根据具体的请求地址匹配路由,处理相关业务。在这个项目中一个业务是由一个或多个服务构成。在业务中去调用服务,每个服务都有自己的服务器。

6、服务调用开始获取数据,首先先从缓存中读取数据,缓存返回结果。

7、缓存返回结果给服务,服务判断是否获取到了数据。获取到了就直接返回至应用。

8、如果缓存没命中那就从数据库中读取数据并同步至缓存中。服务把数据返回至应用

9、在返回给应用之前如果要收集本次请求的相关信息,那就把这个请求相关的信息交给消息队列(这个是可选,异步的)

10、服务返回数据给应用,应用组合服务相关的数据

11、应用根据返回的数据,生成相关响应,返回至浏览器处理。

以上就是我在做项目的请求大致流程。从中不难看出一些疑问。我们要注意到是应用服务器直接返回给浏览器,而不是通过负载均衡服务器返回的。这个是为什么呢?

在这个项目中负载均衡使用的是数据链路层负载均衡方案,数据链路层负载均衡工作在Linux内核进程,性能很高。后端服务器的响应不需要再次经过负载均衡服务器,解决了负载均衡服务器网卡流量瓶颈的问题。

同时,我根据每一步的过程画了个技术相关的图,可能有的知识点遗漏了,请大家给予指正,如下:

画完这个图之后,发现要学的东西有很多很多。所以要努力学习啊,早日成为大牛,加油!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712G1Z4Q100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券