一个请求的复杂性

互联网应用中,用户从手机或者 PC 上发起一个请求,请问这个请求数据经历了怎样的旅程?完成了哪些计算处理后响应给用户?

  • 首先,一个请求从 Web 或者移动 App 上发起,请求的 URL 是用域名标识的,比如 taobao.com 这样,而 HTTP 网络通信需要得到 IP 地址才能建立连接,所以先要进行域名解析,访问域名解析服务器 DNS,得到域名的 IP 地址。

  • 得到的这个 IP 地址其实也不是淘宝的服务器的 IP 地址,而是 CDN 服务器的 IP 地址,CDN 服务器提供距离用户最近的静态资源缓存服务,比如图片、JS、CSS 这些。如果 CDN 有请求需要的资源就直接返回,如果没有,再把请求转发给真正的淘宝数据中心服务器。

  • 请求到达数据中心后,首先处理请求的是负载均衡服务器,它会把这个请求分发给下面的某台具体服务器处理。

  • 这台具体的服务器通常是反向代理服务器,这里同样缓存着大量的静态资源,淘宝也会把一些通常是动态资源的数据,比如我们购物时经常访问的商品详情页,把整个页面缓存在这里,如果请求的数据在反向代理服务器,就返回;如果没有,请求将发给下一级的负载均衡服务器。

  • 这一级的负载均衡服务器负责应用服务器的负载均衡,将请求分发给下面某个具体应用服务器处理,淘宝是用 Java 开发的,也就是分发被某个 Java Web 容器处理。事实上,淘宝在 Java Web 容器之前,还前置了一台 Nginx 服务器,做一些前置处理。

  • 应用服务器根据请求,调用后面的微服务进行逻辑处理。如果是一个写操作请求,比如下单请求,应用服务器和微服务之间通过消息队列进行异步操作,避免对后面的数据库造成太大的负载压力。

  • 微服务如果在处理过程中需要读取数据,会去缓存服务器查找,如果没有找到,就去数据库查找,或者 NoSQL 数据库,甚至用搜索引擎查找,得到数据后,进行相关计算,将结果返回给应用服务器。

  • 应用服务器将结果包装成前端需要的格式后继续返回,经过前面的访问通道,最后到达用户发起请求的地方,完成一次互联网请求的旅程。如果用架构图表示的话,就是下面的样子。
    大型网站技术架构

极客时间 time.geekbang.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__steve_yee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值