Android 网络性能优化(4)弱网优化 手机模拟弱网工具

Android 网络性能优化(4)弱网优化 4. 弱网状态下的优化 4.1 使用QUIC进行弱网优化 4.1.1 网络库切换 4.1.2 QUIC预连接 4.2 复合连接 4.3 其他 5. 弱网测试 6. 参考文章
1.

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

(0)
CSDN's avatarCSDN
上一篇 2024年6月24日 上午3:08
下一篇 2024年6月24日 上午3:43

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注