4、弱网情况下的优化
4.1 使用QUIC优化弱网络
4.1.1 网络库切换4.1.2 QUIC 预连接
4.2 复合连接
4.3 其他
5. 弱网络测试
6. 参考文章
一、背景
========================================================================
在移动设备时代,手机网络的连接形式是无线的,即通过Wi-Fi。无线连接的优点是只要有无线电波就很方便。我可以访问互联网。缺点是不稳定,没有像电线那样的抗干扰措施,而且距离信号越远网络就越差。几乎每个手机用户都会遇到网络状况不佳的情况。
移动开发需要解决弱网络环境中出现的问题,因为如果处理不当,与弱网络的交互会导致带宽消耗、电力浪费和其他资源问题。在弱网优化中,有两个核心问题需要解决。
移动网络环境极其复杂,但如何判断当前的网络环境是否存在漏洞?
如果您的网络环境较弱,那么如何在弱网环境下提高您的业务成功率呢?
2. 网络薄弱
========================================================================
2.1 什么是弱网络?
弱网络没有明确的定义,因此必须根据实际场景建立一套标准。一般来说,大指标有两个角度。
丢包率
网络延迟
上述两种情况都是由于网络过于复杂,导致丢包率和网络时延较高。
在网络拥塞情况下,服务器的处理策略是丢弃数据包,以减轻服务器的负载(尽管有些服务器策略可能不会丢弃数据包,而是将其排队等待处理。这是两种完全不同的情况,客户端应该完全处理它们)相反的方式(所以这必须在客户端和服务器之间协商)
信号微弱
2G网络3G网络
虽然传输的数据量很大,但带宽较低,导致大量数据丢失,表现为网络延迟。
中间网络节点宕机
……
因为没有明确的定义,判断你当前的网络是否弱的唯一方法就是使用各种工具和方法。丢包率和网络延迟都可以通过数据来衡量。下面介绍更详细的指标。
2.2 网络指标薄弱
如下所示:
httprtt(HTTP 轮尖时间)
也称为TTFB(time to first byte),是指客户端请求第一个字节与接收到http header的第一个字节之间的时间差。即httprtt=第一个字节接收时间-第一个字节发送时间。如果httprtt 花费很长时间,您可能遇到网络延迟或您正在访问的网络质量存在问题。
tcprtt(TCP 圆尖时间)
tcprtt=通过TCP 通道接收到的第一个字节的时间- 发送到的第一个字节的时间。由于Http是基于Tcp的,如果重用同一个tcp通道,httprtt时间包括tcprtt时间。大多数情况下,httprtt 已经解释了问题的原因。
吞吐量
吞吐量用于衡量单位时间内成功传输数据的数量,是网络质量相对可靠的官方指标。最简单的公式:吞吐量=C/T ,其中C 是完成的任务总数,T 是完成这些任务的时间。
歌曲的强度
这是指无线信号强度,也就是Wi-Fi信号网格。 Android的SDK可以支持获取,但iOS必须通过黑科技来获取。
带宽延迟积(Bandwidth Delay Product)
如果满足3G、4G或5G网络条件,则会标记为GOOD状态。
按门槛标记3G和广义4G。 httprtt 至少为273 毫秒,tcprtt 至少为204 毫秒。即会被标记为3G状态。
如果您的网络小于这两个值,则会被标记为4G 或5G 网络。
坏的
在2G网络中,如果httprtt大于1.31秒并且满足任何一个条件,就会被标记为BAD条件。阈值应在线查询并根据您的业务进行调整。
未知
如果满足任何无效的httprtt、tcprtt 或吞吐量条件,则会将其标记为UNKNOWN 状态。例如,在初始化时,有些值被标记为-1。
离线
为了根据平台功能做出决策,Android 可以使用ConnectivityManager 检索NetworkInfo 并确定网络信息(例如未连接到Wi-Fi 或Wi-Fi 上没有网络)。
4、弱网情况下的优化
================================================================================
4.1 使用QUIC优化弱网络
QUIC是Google发明的UDP协议,实现了TCP+TLS+HTTP/2。它还有一个更流行的名称Http/3,Cronet 库支持该名称,并且可用于Android 和iOS 平台。我自己对QUIC了解不多,这里就不过多介绍如何使用。下个月我想学习并写一篇关于QUIC 的文章。
总的来说,QUIC协议本身具有高效率和节流特性,使其在弱网络环境下很有用。那么如何使用它呢?
3.1.1 策略层
如果根据检测结果诊断当前网络状况为弱,则进行网络检测并切换网络请求。即请求库切换为QUIC。
一旦网络发现恢复正常,请使用常规网络库,例如OkHttp。
3.1.2 基础能力层
所谓QUIC预连接,就是在进入弱网状况之前预先建立QUIC连接。 QUIC 拥有0RTT,但在首次建立连接时需要1RTT。客户端首先向服务器发送一条客户端问候消息,然后服务器用包含服务器配置的服务器拒绝消息进行响应。服务器配置允许客户端直接计算密钥并完成0RTT。
因此,在应用程序启动过程中,它会执行QUIC预连接并下拉服务器配置,以便在进入弱网络后可以使用QUIC协议。
4.2 复合连接
复合连接,或多个连接。这个解决的场景是多IP地址连接选择问题。无论是HttpDNS还是LocalDNS,都可以通过一个域名获得多个IP。找到最适合您的连接的IP。
例如,如果您想通过HttpDNS 获取两个IP,请执行以下操作:
如果结果具有IPv6 地址,则此规则遵循HappyEyeBall 机制(请参阅系列1 HappyEyeBall 概述)。
然后这两个IP 轮流尝试建立连接。如果第一个IP 返回失败,将立即启动与第二个IP 的连接。
如果第一个IP 成功返回,则第二个IP 将添加到连接尝试列表中,并停止所有连接尝试。
如果第一个IP 出现故障,则立即启动与第二个IP 的连接。
请注意,如果第一个IP 待处理,则会启动计时器,默认延迟为2 秒,如果有多个IP,则连接是递归的。对于不同的网络标准它是不同的。此方法提供了更好的体验。
复合连接的优点是提供了最优的IP选择机制,但同时也给服务器带来了较高的负载,因此其使用需要综合评估。
4.3 其他
3.1.3 接口层
多年来,编辑了解到,大多数入门级和中级Android工程师想要提高自己,往往必须自己探索和成长,这是不系统的、短暂的,我了解到这并没有帮助。
因此,我们收集整理了《2024年Android移动开发全套学习资料》册。最初的目的也很简单。换句话说,我们想帮助那些想学习、提高自己,但不知道从哪里开始的朋友。
由于文件较多,这里仅展示部分目录截图。这套完整的内容包括对领先制造商的采访、学习笔记、源代码讲义、实践项目、概述路线、电子书和教学视频。它将继续更新。
一个人可以走得快,但一群人可以走得更远。无论是IT行业的资深人士还是对IT行业感兴趣的新人。
欢迎任何人加入我们的圈子(技术交流、学习资源、职场投诉、大公司内部推荐、面试指导),让我们一起学习、成长!
如果您需要此信息,请从第 栏中获取。
其影响是持久且令人丧失能力的**。
因此,我们收集整理了《2024年Android移动开发全套学习资料》册。最初的目的也很简单。换句话说,我们想帮助那些想学习、提高自己,但不知道从哪里开始的朋友。
[外部链接图像正在传输.(img-mnRgevHF-1719169724470)]
[外部链接图像正在传输.(img-YDrFryDZ-1719169724471)]
[外部链接图像正在传输.(img-AMoYnqKg-1719169724471)]
[外部链接图像正在传输.(img-WYjITRFo-1719169724473)]
由于文件较多,这里仅展示部分目录截图。这套完整的内容包括对领先制造商的采访、学习笔记、源代码讲义、实践项目、概述路线、电子书和教学视频。它将继续更新。
一个人可以走得快,但一群人可以走得更远。无论是IT行业的资深人士还是对IT行业感兴趣的新人。
欢迎任何人加入我们的圈子(技术交流、学习资源、职场投诉、大公司内部推荐、面试指导),让我们一起学习、成长!
如果您需要此信息,请从第 栏中获取。
#Android网络性能优化(四)以上弱网优化相关内容来源仅供大家参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91875.html