移动端IM开发者必读,开发im用哪家sdk好

移动端IM开发者必读 本文由爱奇艺技术团队分享,作者isno,原题“爱奇艺海外App的网络优化实践”,下文进行了排版和内容优化等。 1、引言
做海外市场,特别目标是面向全球的用户&#

本文由爱奇艺技术团队分享,作者isno,原标题为《爱奇艺海外应用网络优化实践》。以下是布局和内容优化。

1、引言

在拓展国外市场时,一个特殊的目标是瞄准世界各地的用户。网络的重要性不言而喻。想象一下移动应用程序,例如即时消息IM。聊天消息的本质是发送和接收需要10 秒。这可能会导致用户崩溃并被无情地卸载。海外市场只是一个梦想。

这次我们分享的文章内容是基于爱奇艺面向全球用户推出的国际版,针对海外复杂的跨国网络环境,针对弱网进行了一系列的优化实践,取得了不错的效果。实现了。在这里我们将分享一些我们的实践和优化思路,希望对您有用。

综上所述,跨境弱网优化实践的核心原则是:

1)如果无法请求网络,就不要这样做。 2) 请求的链路目标是0-RTT。 3)请求的内容越小越好。

我们将针对技术点一一分享正文内容。

技术交流:

– 移动IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》

– 开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(点击此处查看替代地址)

(本文同时发布于http://www.52im.net/thread-4669-1-1.html)

2、系列文章

本文是该系列的第三篇文章。本文摘要如下:

《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》 《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结》 《移动端IM开发者必读(三):爱奇艺移动端跨国弱网通信的优化实践》 (*本文)

如果您是IM 开发新手,我们强烈建议您先阅读《新手入门一篇就够:从零开发移动端IM》。

3、 跨国弱网样本摸底

在应用程序的早期版本中增加请求链接的采样。如果你有足够大的样本量,你就能了解到你想要推广的市场处于什么样的环境。通过样本数据,我们可以清楚地发现不同国家和地区的网络问题。在进行任何重大促销或投资之前,对您的应用程序进行一些基本工作非常重要。

海外用户到海外数据中心的网络延迟(这是监控节点数据,所以用户侧延迟较多):

海外主要国家/地区移动网络状况:

在我们的研究阶段,我们发现了以下相对明显且对运营和应用体验有实际影响的问题。

这些问题主要是:

1)电信运营商劫持,如DNS劫持、HTTP劫持现象严重。 2)东南亚移动网络复杂,网络基础设施有待完善。 3)低端Android智能手机占比一定,销量水平较高。影响决策。 4) 国际网络从客户端到服务器的延迟增加。

初期阶段,技术工作将重点解决上述问题,为后续运营奠定基础。由于大多数业务接口都是HTTP格式,所以围绕HTTPS开始有针对性的改进。

HTTPS请求阶段分析:

HTTPS 在第一个请求上有5 个RTT。

1RTT(DNS)+ 1RTT(TCP 握手)+ 2RTT(TLS1.2)+ 1RTT(HTTP 链接)

例如,终端服务延迟为50 毫秒:

HTTPS接口延迟=350ms=50*5+100ms(服务器)

如果目标是非国内用户,打开主页需要1.1秒,显然需要更长的时间。

下面开始正文的技术改进。总结技术优化要点包括:

4、基础链路的改进优化

4.1DNS 优化调整

DNS解析更改为HTTPDNS。 DNS 改进上线后,我们观察到初始连接请求的效率提高了17%。

主要目标是:

1)解决域名劫持问题(从东南亚返回的数据显示大量劫持),2)解决LocalDNS的非邻近分发问题,3)结合业务的温解决方案可以执行。

4.2传输层的优化调整

MTU问题:

1)客户端和服务器端的MTU值不同会导致丢包率过高。某些AWS 场景实例的默认巨型帧:MTU 为9001,但接收方默认为1500。这个时候就会出现一些丢包的情况。 2) 使用多个云提供商服务时,使用VPN 网络和IP 隧道封装。数据阈值为1500,这会导致丢包和数据包重传问题。 3)最严重的情况:某些网络阻塞了ICMP协议,MTU无法自动协商。

优化TCP拥塞控制:

拥塞窗口CongWin 是在未收到接收方确认的情况下发送的连续字节数。 CongWin根据带宽和延迟的乘积动态调整(例如100MB带宽,100ms延迟环境)。

延迟带宽乘积=100Mbps*100ms=(100/8)*(100/1000)=1.25MB

理论上,一个CongWin窗口可以最大化到1.25MB。 CentOS默认是CongWin=20*MSS,大约是29KB,但是增加默认值会让TCP启动更快。

TCP 快速打开(TCP 快速打开:TFO):

使用TCP keepalive,仍然存在链路断开的情况,TFO 针对这种情况进行了优化。

TFO原理机制:

我们观察到,开启TFO机制后,海外业务的RTT通常需要100ms以上,HTTP请求效率提升约12%。

5、应用层的改进优化

5.1HTTP 的优化

HTTP 1.1 具有keep-alive 功能,可以重用TCP 链接,减少新链接的消耗,使其适合浏览器业务,但对于移动设备上等时间分散的请求,大多数请求仍然会创建新连接。

HTTP1.1串行机制存在标头阻塞问题。

5.2SSL 层优化

尝试升级到TLS1.3(微信的TLS1.3做法:《微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解》),使用预共享密钥机制,开启ssl_early_data进一步优化“0-RTT”。如果TLS版本无法升级,则会进行优化。主要算法是ECDHE,速度更快,并且将握手消息的往返次数从2-RTT减少到1-RTT,与TLS1.3类似。

TLS 版本差异:

TLS1.3优化后,HTTP请求将从之前的4个RTT减少到3个RTT。

5.3升级 HTTP2.0

一些重要的改进:

1) 成帧传输,2) 复用,以及3) 报头压缩。

复用:

HTTP/2 有两个非常重要的概念:帧和流。帧代表数据的最小单位。每个帧都标识它属于哪个流。流是由多个帧组成的数据流。多路复用意味着一个TCP 连接上可以存在多个流。这些改进避免了HTTP 队头阻塞问题并提高了传输性能。

头部压缩:

如果开发人员在控制标头内容时不小心,标头内容可能会变得无法控制,并且客户端可以轻松存储非常大的cookie。

HTTP2帧发送机制:

5.4 边缘节点动态加速

这是一个非常有效的方法。

利用尽可能靠近用户的边缘节点优化路由和链路,提高动态服务的效率。相比直连模式,使用动态加速后,P90的接口延迟效率提升了60%。

爱奇艺海外动态加速效果提升(请求时间为秒):

5.5 启用自下而上的机制

对于失败的请求,启用回退协议QUIC 或kcp。

虽然客户端失败率约为3%,但我们发现这部分请求使用UDP协议使成功率提高了45%。

6、传输内容的优化

6.1应用 Brotli

由于字典是预先配置的,因此在相同压缩级别下,压缩率比gzip 高出至少17%,将界面的平均Content-Size 从30KB 减少到18KB。

6.2接口由 JSON 改为 Google Protobuf

应用Protobuf的一个重要原因是解析效率比JSON至少高4-5倍。当节点深度和数据量很大时,这一点变得很明显。

但是,请小心Protobuf 中的varint 压缩。这仅对小于128 的数字执行可变长度压缩。虽然实际效果不大,但是当生产环境数据量较大时,需要进行gzip等外部压缩。

PS:有关Protobuf的更多信息,请访问《IM通讯协议专题学习》。

6.3图片格式升级为 WebP

应用WebP 将海报图像质量设置为85%。与相同质量的JPEG 或PNG 相比,用肉眼很难区分。最多减少45%。

应用效果明显。应用程序主页上的图像加载是肉眼可见的。

7、业务层面的优化改进

7.1减少不必要请求:

一些通用内容,例如导航、频道等,通常是由运营商主动更新的。

添加启动阶段请求的接口,并将内容更新时间戳放在那里,如下图所示。如果时间戳与本地缓存不同,则会发出异步更新请求。

7.2区别用户网络,适应不同的策略

具体方法如下。

1) 视频,非WiFi默认起始码率为360P。 2)对于海报,后台界面提供两种质量URL:WiFi高质量和4G低质量。

7.3更多的业务优化

根据您的业务需求,您可以增加请求重试、调整HTTP 超时、请求缓存等。

8、本文小结

爱奇艺海外版APP进行了一系列细节优化,持续提升用户体验。用户界面延迟、客户端故障率、视频播放成功率等一系列关键指标均得到显着提升。至此,爱奇艺在东南亚多个国家的应用市场排名已升至榜首。

此外,这些系列可以相互补充,以最大限度地提高用户体验,包括优化应用程序、优化服务器延迟和改善产品体验。

9、参考资料

[1] TCP/IP详解- 第17章TCP:传输控制协议

[2]懒人网络编程入门(三):通过这篇文章让你快速了解TCP协议

[3] 这篇文章对于初学者来说已经足够了:从头开始开发移动IM

[4]现代移动网络短连接优化方法综述:请求速度、弱网络适配、安全保障。

[5] 全面了解移动DNS域名劫持等复杂问题:技术原理、根本原因、解决方案等。

[6] 美图App移动DNS优化实践:HTTPS请求时间减少近一半

[7]百度APP移动网络详细优化实践分享(一):DNS优化篇

[8]百度APP移动端网络彻底优化实践分享(二):网络连接优化篇

[9]百度APP移动端网络彻底优化实践分享(三):移动端弱网优化篇

[10]爱奇艺移动终端网络优化实践分享:网络请求成功率优化文章

[11]美团点评移动网络优化实践:显着提升连接成功率、速度等。

[12]淘宝移动综合网络库架构演进及弱网优化技术实现。

[13] 谈论移动IM 开发中优化登录请求。

[14]移动IM开发中的技术问题(通信协议选择等)

[15]浅谈移动IM开发的陷阱:架构设计、通信协议、客户端

[16]微信对互联网影响的技术实验与分析(论文全文)

[17]腾讯独创分享(二):如何大幅降低APP对移动网络的流量消耗(下)

[18]IM开发者零基础通信技术入门(12):网络卡顿?你的网络瘫痪了吗?在一篇文章中找到答案!

[19]微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解

[20] IM通信协议专题学习(一):从Protobuf初学者到高级用户,这篇文章就足够了!

(本文同时发布于http://www.52im.net/thread-4669-1-1.html)

#以上移动IM开发者需要从网上阅读的相关内容仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92503.html

(0)
CSDN's avatarCSDN
上一篇 2024年6月27日 上午11:53
下一篇 2024年6月27日 上午11:53

相关推荐

发表回复

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