网络框架怎么给抖音提质
- 网络提速
- 网络稳定
网络提速
2.1 网络提速-HTTP2.0
2.2网络提速-怎么理解多路复用/stream
2.2.1 单个TCP链接传输
使用单个TCP链接传输多个数据,可以避免建立多个独立的TCP连接所需要的建立和维护开销。实现单个TCP连接传输多个数据流的方法有多种,其中一种常见的方法是使用应用层协议或应用层协议扩展来在TCP连接上进行数据分包和重组。以下是一种简单的可能的实现方式:
- 数据分包:在发送端,将多个数据流的数据分割成小的数据包,并给每个数据包添加一些标识符,以便接收端能够识别和重组数据流。
- 数据重组:在接收端,根据标识符将接收到的数据包重新组合成原始的多个数据流。
- 数据流管理:发送端和接收端需要维护一个对应关系表,它记录了每个数据流的标识符和对应的数据包,以确保正确的数据重组和传输顺序。
常见问题:数据包的乱序、丢包等问题。
解决方法:使用一些差错控制和拥塞控制机制或者使用并行连接。
2.2.2 如果TCP丢包了怎么办
如果发生了对头阻塞问题,会由于等待丢失或延迟的数据包,导致整体的传输延迟增加,而且其他的数据包也会因此无法及时传输,从而降低了带宽的有效利用率;
措施:
- 使用并行连接:通过创建多个并行的TCP连接,将数据流分散到多个连接上传输,可以减少对头阻塞的影响,提高整体的传输效率。
- 使用拥塞控制算法:合适的拥塞控制算法可以根据网络状态进行动态调整,避免对头阻塞引起的过度阻塞。
- 使用可靠的传输协议:例如TCP提供丢失重传的机制。
2.3 网络提速-QUIC/HTTP3.0
QUIC是一种基于UDP的传输层协议
TCP和UDP
TCP是面向连接的可靠的数据传输协议;UDP是面向无连接的不可靠的数据传输协议。
Kernel和Userspace
kernel(内核):是操作系统的核心部分,它负责管理计算机的硬件资源(如处理器、内存、设备等)并提供系统服务和功能。内核是操作系统的第一层,它直接与硬件交互,并提供了一组系统调用接口供用户程序使用。
Userspace(用户空间):是指操作系统内核之外的部分,它是用户程序运行的环境。用户空间包括应用程序、服务程序和用户库等,用于执行各种任务和提供各种应用功能。
0-RTT(零往返时间)
QUIC采用了0-RTT握手方式,减少了建立连接的时间。
优势:降低建立连接的时延,提高应用程序的性能和响应速度。
缺点:因为服务器在接收到客户端的0-RTT数据时无法验证其真实性,可能会面临重放攻击(replay attack)的风险。因此,安全协议通常会在0-RTT阶段引入额外的安全机制来保证数据的合法性和防止攻击。
弱网优势
QUIC通过减少连接建立时间,抗丢包能力强、继承了加密功能和至此多路复用等特点,在软网传输条件下具有优势。
总结:HTTP3.0主要是对HTTP2.0的多路复用进行了一个优化,解决对头阻塞的问题
2.4 网络提速-数据中心分布
2.5网络提速-同运营商访问
2.6网络提速-静态资源(图片视频)路径优化(CDN)
CDN缓存系统:是一种分布式存储和传输内容的网络架构,用于提供快速、可靠的内容传输和加速用户访问速度。
核心机房(源服务器):存储静态文件或动态内容的副本
边缘机房:主要任务是缓存并传送静态内容。当用户请求特定内容时,边缘服务器会检查是否有该内容,避免从源服务器拉取的时延。
2.7 网络提速-动态API(播放/评论接口)路径优化(DSA)
路径优化算法DSA(Dijkstra’s Algorithm)
是一种常用于图论中的路径优化算法,用于找到两个节点之间的最短路径。
网络提质
2.8 网络稳定-容灾概念
2.8.1 网络容灾的具体案例一
外网容灾是保障组织网络稳定和服务可用性的重要措施。通过综合考虑业务需求、风险评估和预算等因素,可以制定合适的外网容灾策略并实施相关措施,以确保在网络故障或灾难情况下能够快速恢复和继续运行。
2.8.2 网络容灾的具体案例二
调度容灾(Disaster Recovery Planning and Scheduling)是指在实施容灾计划时,对恢复步骤和恢复时间进行安排和调度的过程。调度容灾包括确定恢复顺序、时间目标、资源需求,并制定合理的计划和时间表,以确保在灾难发生时能够有效地执行容灾方案。
2.9 网络稳定-故障排查
2.10 网络稳定-故障明确
出现什么故障? -> 沟通是前提
- 什么业务?什么接口故障?
- 故障体现在哪里?
- 访问其他目标是否出现异常?
- 是否是修改导致的异常?
2.11 网络稳定-故障止损
先止损再排查
- 用户体验第一
- 对公司收入的影响是按照分钟甚至秒来计算
如何止损
- 组件没有容灾,但是系统有没有?
- 降级
2.12 网络稳定-分段排查
客户端排查
- 客户端访问其他服务没问题吗
- 其他客户端访问目标服没问题吗
服务端排查
- 服务端监控/指标都正常吗
- 手动访问一下正常吗
- 分组件排查
中间链路排查
- 服务端跟客户端确保都没有问题
- 中间网络设备有没有问题?(网络机/路由器/网关LB)
- 旁路的DNS有没有问题
2.13 网络稳定-网络故障排查常用命令
- dig查询DNS(域名系统)问题
- ping/telnet/nmap查询三层(网络层)/四层(传输层)连通性
用法示例:
ping 192.168.0.1
telnet 192.168.0.1 22
nmap -p 80 192.168.0.1
- Traceroute排查中间链路
- iptabels
- tcpdump
2.13.1 网络故障排查案例一
客户端异常 -> 服务端自测正常 -> 网关转发异常 -> 健康检查异常