协议优化
HTTP/2
多路复用:
HTTP/2在连接建立后,会存在一个请求-响应流的映射表。浏览器可以按任意顺序通过该连接发出多个请求,服务器接收到后按流标识知道属于哪一个请求,然后回传响应。这样就实现了同一个连接上并发请求和响应,大大提高了连接的利用效率。
多路复用相当于在一个TCP串行使用多个stream传输,表面上是并行其实是单个TCP连接传输
但是由于在tcp通道中传输并不是真正的并发进行(速度较快比较像),出现丢包时可能会导致队头阻塞的情况(option优化)
QUIC/HTTP3.0
QUIC(Quick UDP Internet Connections)是Google设计的一个新的网络传输协议,用来优化TCP的连接建立和拥塞控制。它主要通过以下两点方式解决了HTTP/2的队头阻塞问题:
-
基于UDP的连接
QUIC底层使用UDP进行数据传输,而不是TCP。UDP没有连接建立的过程,客户端和服务器只要知道对方的IP和端口就可以立即开始传输数据。这避免了TCP三次握手的时延。
-
支持多路复用的数据流
QUIC同样支持多路复用的数据流,一个连接上可以有多个请求-响应通道。不同的是,每个数据流都有独立的拥塞控制,如果一个数据流上的包丢失了,不会影响到其他数据流的传输。
路径优化
数据中心分布
核心机房:存储核心数据
pop接入:集中于跟互联网交互的机房
边缘机房:靠近用户的机房
同运营商访问
用户访问网站时,通过的网络运营商与网站托管运营商是同一家。通过智能解析客户端IP接入对应接口从而加快速度
静态资源(图片视频)路径优化(CDN)
静态缓存,访问时先到边缘机房缓存,无则一级一级从边缘机房往下找(边缘机房->汇聚机房->核心机房)
动态API(播放评论接口)路径优化
假设用户A最靠近机房A,如下通过路径最优算法在网络拓扑结构中找到最优路径访问服务器位置(机房I)
网络稳定
容灾概念
故障发生->故障感知->自动切换->服务恢复
例1. 外网容灾:专线不可用时走外网容灾
专线(Dedicated Line)是指点对点之间独享的物理连接线路,不经过公共网络。
外网(外部网络)通常指公司或组织内部使用的局域网(LAN)以外的网络环境
例2. 调度容灾:全局容灾系统
该网址解析到A、B机房,当A机房不可用时剔除掉1.1.1.1的解析(自动容灾)
- 故障感知
- 确保机房B能够承载1.1.1.1的流量
- 迁移流量
例3. 云控制:当某个服务器出现故障时,云到端自动控制让用户不再访问对应服务器
例4. 降级
LB/CDN(多层系统)节点到下一层代码出现问题,该节点备置cache缓存文件(前置兜底逻辑),响应上一次缓存的内容(降级)
无容灾故障
- 排查故障
- 先止损再排查
- 如何止损:
- 组件没有容灾,但系统有没有
- 降级
- 分段排查:
- 客户端排查
- 服务端排查
- 中间链路排查
- 常见排查指令:
- dig查询DNS问题
- ping/telent/nmap查询三层/四层连通性
- Traceroute排查中间链路
- iptabels查客户端
- tcpdump抓包