网络架构实战课
15
15
1.0x
00:00/00:00
登录|注册

11|减法与重试:怎样优化弱网?

你好,我是谢友鹏。
前几节课中,我们讨论了单机性能优化的各种技巧,但当用户的网络质量本身较差时,这些优化手段可能并不足以解决问题。在面对大规模用户时,弱网问题几乎是不可避免的。弱网环境会导致高延迟、网络抖动甚至请求处理失败,严重影响应用的稳定性和用户体验。
那么,弱网问题是如何产生的?我们又该采取哪些措施,让服务在弱网环境下也能保持流畅和稳定呢?今天,我们将剖析弱网的成因,并分享一套优化方案,帮助你的应用在网络条件较差时依然能够平稳运行,提升用户的整体体验。

弱网的成因

在用户的角度来看,弱网主要体现在高延迟和低带宽两个方面,这与网络的复杂链路、信号强度、基站距离、网络制式(如 3G、4G、5G)以及网络拥塞密切相关。
高延迟通常因为信号强度不足或数据包在多级链路中传递导致时间放大,而低带宽则可能因无线干扰、网络负载或远距离传输效率受限而减小。此外,大型活动场所或高用户密度区域也会加剧这些问题。
以下是一些常见的弱网场景及其特点:

弱网识别

了解了弱网的成因后,我们来看看如何识别弱网。弱网最终会体现在请求的不同阶段的数据上。因此,我们可以通过分析请求在各阶段的网络数据特征,量化弱网的判断标准。
以常见的 HTTPS 下载为例,一个请求通常经历以下几个阶段:DNS 解析、TCP 握手、SSL 握手、HTTP 请求发送,最后是 HTTP 响应接收
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 弱网问题的成因主要体现在高延迟和低带宽两个方面,与网络的复杂链路、信号强度、基站距离、网络制式以及网络拥塞密切相关。 2. 通过分析请求在各阶段的网络数据特征,可以量化弱网的判断标准,包括DNS解析时间、TCP握手时间、SSL握手时间、HTTP首包时间和吞吐量。 3. 识别弱网的方法包括基于请求特征的数据分析和主动探测,如定期对各IP地址进行探测,评估其延时、丢包率等参数,并借助手机厂商提供的指标作为补充信息。 4. 弱网优化的两大法宝是“减法”和“重试”,减法旨在减少网络交互的次数和传输数据的大小,而重试则是在失败情况下通过合理的策略弥补网络的不可靠性。 5. 减法优化可以通过网络协议和应用逻辑两个维度入手,包括使用TCP长连接、HTTP/2、SSL会话复用技术、缓存、批量请求、压缩算法等方式来减少交互次数和优化数据大小。 6. 重试优化可以通过降低重试的成本、限制针对弱网的超时时间、复合建连、使用对移动互联网支持更友好的协议等策略来提升重试成功的概率。 7. 在处理网络异常时,支持流式处理、使用FEC算法提高数据的抗丢包能力以及保留已经成功传输的数据是实用的小技巧,能够提升弱网环境下的体验。 8. 弱网优化还可以采用流式追加存储的方式,在网络异常时保留已上传的部分数据,逐步积累,直至整个文件上传完成。 9. 选择不同的方式进行重试会增加成功的概率,比如多网卡、多协议等。 10. 通过并行连接多个候选IP地址,可以大幅缩短整体连接时间,是在弱网环境中高效的策略之一。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《网络架构实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • robing
    我们今天讲到可以通过压缩的方式减少传输数据量来优化弱网,那你知道什么情况下,不适合使用压缩的策略吗? 1. 网络丢包率较高的情况下,不适合压缩,压缩数据丢失后,整个压缩数据都会无法解析,可能增加总体数据传输量 2. 发送端或接收端性能不足以快速支持解压,或者说解压的性能消耗不能满足业务需求了,比如解压耗时超过预期,也不适用压缩策略

    作者回复: 不错的思考。

    2025-03-05归属地:浙江
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)