(终于写到最后一个part了…)
三、Web应用
讨论除了HTTP协议之外影响Web性能的因素,这些问题HTTP协议本身是无法解决的。
1.CDN:你无法突破物理极限的
- HTTP 3快吗?
- 快!
- 那从美国到中国,HTTP 3要多久?
- 150ms!
- 和北京到上海相比,还快吗?
- 好像不够?
2.CDN:你的钱包够鼓吗?
- 流量多少钱1个G?
- 1块
- 那我在北京给上海的人发一部10G电影要10块钱?
- 对!
- 发10次一样的电影要100块?
- 是的!
- 我都发到上海了,不能内部分享吗?
反映的是如果一个网站只有一个中心服务器,世界各地的网络流量需要很多的路由器,而对于很多内容,尤其是视频内容,一遍一遍的通过中心服务器发送非常浪费资源,且财力消耗巨大。
3.CDN:你,够强大吗?
- 我们有几台服务器?
- 1台
- 它能抗多少流量?
- 100G!
- 双11巅峰值得是1000G啊,扛得住吗?
- 不一定,可能挂…
单个服务器承担的网络流量是非常有限的,过多的流量会导致服务器“崩掉”。
4.CDN:DNS劫持
- 域名解析一般由网站自己处理
- 要加速的域名则重定向到DNS厂商的域名解析服务处理
- CDN厂商根据来源确定最近的CDN服务器的IP
- 用户直接访问最近的CDN服务器
一个域名对应一个IP,一般情况下只有一台服务器会用该IP。 那么,如何实现北京的用户使用北京的服务器上抖音,上海的用户用上海的服务器上抖音呢?答案即在DNS上。
类似于之前的蟹堡王每开一家分店,都需要总店将分店信息发送给其他旧分店的员工一样,DNS即为Domain Name System-域名系统,用于命名组织到域层次结构中的计算机和网络服务。它管理和安排域名,将域名转换成为网络可以识别的IP地址,是进行域名解析的服务器。
一般只有一台服务器会应用这个IP这句话并不严谨,有一项技为anycast,这项技术允许多台服务器共享一个IP。
5.WebSocket
是除了HTTP协议之外的另一个应用层协议,相比于HTTP协议有以下特点:
- 有状态的持久连接
- 服务端可以主动推送消息
- 用WebSocket发送消息延迟比HTTP低
该协议是由HTTP协议升级而来的,即要使用WebSocket协议需要先连接HTTP协议。
6.小结:
- HTTP123的演进历史:逐渐由“智障”走向灵活变通
- CDN解决了HTTP协议之外的问题
- WebSocket从HTTP协议升级而来