深入Web请求过程
B/S架构优点:
- 客户端使用统一浏览器,不需要特殊的配置和网络连接,有效的屏蔽了不同服务器提供商提供给用户使用服务的差异性。
- 服务端基于统一的HTTP为服务提供商简化了开发模式,节约开发成本。
- 用户发起请求
- DNS把域名解析为对应IP
- 根据IP找到对应的服务器发出请求
- 服务器经过负载均衡等处理把数据返回给用户(如果浏览器解析数据时发现有静态资源,会发起另外的HTTP请求,这些请求可能会在CDN服务器上)
DNS域名解析过程:
- 浏览器检查缓存中有没有解析过,如果有解析结束。
- 查看操作系统中是否有缓存,如果有解析结束。
- 把域名发送给LDNS(本地域名服务器),如果有解析结束。
- 如果LDNS没有,直接到Root Service域名服务器请求解析。
- 返回gTLD(国际顶级域名服务器)地址
- 本地服务器请求gTLD
- 本地服务器接收返回域名对应的Name Server服务器地址
- NameServer域名服务器会查询存储的域名IP映射表,将其返回
- LDNS缓存这个域名和IP
- 将结果返回给用户,用户做缓存
CDN(内容分发网络):目前以缓存网站中的静态数据为主。CDN=镜像+缓存+整体负载均衡,可以明显提高互联网中信息流动的效率。
负载均衡:链路负载均衡,集群负载均衡,操作系统负载均衡。
链路负载均衡:通过DNS解析成不同的IP,然后用户根据这个IP来访问不同的目标服务器
集群负载均衡:一般分为软件负载均衡和硬件负载均衡。
软件负载均衡:成本低,一般一次访问要经过多次代理服务器,会增加网络延时。
硬件负载均衡:成本高,不能进行动态扩容,性能好
操作系统负载均衡:利用操作系统级别的软中断或者硬件中断来达到负载均衡,如可以设置多队列网卡等来实现。
CDN动态加速:
是否走这个链路并不一定根据耗时这个唯一条件,有时也要考虑网络成本,例如走某个节点虽然可以节省10ms,但是网络带宽的成本增加了很多,还有其他网络链路的安全等因素也要综合考虑。