写点什么

业务出海必答题,融云全球通信网络技术挑战破解实践

  • 2022 年 8 月 24 日
    辽宁
  • 本文字数:3758 字

    阅读完需:约 12 分钟

出海服务,性能为王。关注【融云全球互联网通信云】了解更多


国内竞争白热化、市场饱和的背景下,越来越多的社交泛娱乐企业走上了全球化之路。


但是跨国网络延迟高、网络不稳定、网速慢,以及各种不确定性问题接踵而至,对通信服务提出诸多挑战。


作为全球 30 万+ App 背后的通信云力量,融云一直走在主动创新的路上,满足以社交、泛娱乐为主的全球化业务对用户体验的要求,不断从技术侧寻求优化体验的突破点。


全球化通信的主要挑战


体验优化的核心是从用户的实际需求出发来解决其使用过程中的痛点问题。

经过多年布局,融云在海外有多个独立数据中心,拥有覆盖全球 233 个国家和地区的数千个接入节点,提供稳定的海外链路、最优的通信质量、安全的数据备份及可靠的业务容灾能力。


在此基础上,想要为用户提供高流畅、低延时、高品质的音视频互动体验和稳定、可靠、海量并发的即时通讯服务,便要解决全球市场参差不齐的基础设施和复杂多样的终端设备,以及其他层出不穷的个性化问题带来的诸多挑战。


挑战一 智能 DNS 配置带来的多种问题

海外网络运营商参差不齐,基础设施差,导致带宽严重不足、拥塞严重,进而造成丢包率和 RTT(往返时延)高,带来复杂多样的 DNS 问题。


1. 智能 DNS 缓存解析错误

有客户在香港时反馈,手机端无法连接服务器,后经排查发现智能 DNS 运营商在该地域的缓存配置有问题。这是种比较常见的情况,不同地区的智能 DNS 运营商在具体操作中的数据和配置影响用户使用。我们会在各个地区持续挑选 Local DNS 服务器地址进行探测,防止类似问题发生。


2. 使用 VPN 影响网络接入

在用户使用了 VPN 的情况下,智能 DNS 将按照 VPN 的出口地域下发接入地址。这种情况下,终端用户将通过跨海专线连接服务,而非融云提供的网络加速服务和就近接入点,可能造成用户断线重连和发送消息失败的情况。


3. 海外团队办公网出口设置绕过专线服务

一些海外开发团队,办公网会设置两个出口,访问国内资源时使用国内 DNS。


这样,他们在开发测试时使用国内出口访问国内资源,绕过了融云网络加速服务,没有通过智能 DNS 分配的就近接入地址走跨海专线。这就导致客户端到国内线路太长,容易在周末遭遇网络波动情况(跨国线路在周末较忙)而造成连接不稳定。


面对这种情况,我们提供 Host 解决方式,并提醒客户端使用融云提供的加速地址。


4. 公共 DNS 缓存机制造成接入点不准确

某跨国公司客户反馈,员工出差时在酒店发生连接不正常的情况。


经排查发现,用户出差后使用的都是酒店提供的 WiFi,酒店的 DNS 使用 Google 公共 DNS。而公共 DNS 缓存机制会影响到融云下发客户端就近接入地址的准确性。

以上问题大多是智能 DNS 配置就近接入地址,终端用户在各种使用场景下分配到了错误就近地址导致的。


💡 优化措施

融云经过验证发现,智能 DNS 准确率只在 80% 左右。为此,融云增加了 IP Anycast 预播技术,它与 DNS 原理完全不同,可直接通过 IP 的方式来进行分配,这个分配是运营商级的。


融云新的一体化加速网基于 SmartDNS & Anycast 的加速原理构建,可以更高质量地保证全球范围内节点分配的准确度。


挑战二  低时延

在开展跨国业务时,无论是泛娱乐、社交产品的全球化用户优质体验,还是国内外办公协同,都对通信服务的低时延有着极高要求。融云 SD-CAN 凭借遍布全球的优质接入点,结合融云自研的最优链路调度算法,可以将动态文本、图片、音视频快速分发给终端用户。


⚡️ 面对跨国用户互动频繁,对延迟时间、数据安全敏感的业务,融云网络加速服务将海外-国内用户延迟从 2000ms 缩短至 190ms。


⚡️ 对于在国外特定区域开展,服务于当地用户的业务。访问者可通过接入节点就近接入融云海外数据中心,享受融云优质的全球通信服务。


为了达成低时延服务,我们需要多角度考虑连接建立的时延和数据传输的时延。


1. 接入点考虑

优先确定对应地域的融云接入点。比如,确认客户的海外办公地点是在美国芝加哥,融云的最近接入点在俄勒冈。就近接入可以保证 TCP 连接耗时相对小,同时内部转发节点提前构建连接通道,大幅降低连接耗时。


2. 转发节点之间专线主备

融云内部转发节点都是通过主备光纤跨海专线(主备不同供应商)完成,并且是独占带宽模式。这种机制保证了没有设备中转,降低数据传输过程中出现重传的几率。


3. 解决突发的网络波动

对于突发的转发节点之间的网络波动,我们进行了探测处理,发现节点有波动,程序控制可达到分钟级重新选路。


💡 优化措施

1. 完善部署接入点的机制,收集不同地区用户使用数据,衡量各地域用户网络用量及网络服务商表现,持续优化接入点部署机制并寻找最优网络合作伙伴。


2. 通过协议层优化降低时延,降低传输包大小,就降低了重传比例。采用 QUIC,不重传整个数据包,同时没有 TCP 的三次握手,将整体缩减终端用户传输数据耗时。


挑战三  新兴市场基础设施和硬件设备老旧

新兴市场基础设施差、网络带宽小、用户设备老旧,甚至还会面对其他更深层次的社会性原因带来的挑战,比如,贫富差距巨大的用户阶层,采用参差不齐的上网接入方式。某出海客户做推广活动,发现在印度的指标达不到预期效果。通过融云大数据分析,发现印度用户使用的手机型号普遍偏旧、性能不高,并且用户普遍使用 2G、3G 网络。


网络类型和手机性能影响推广活动执行,客户端连接正常时可能发生突然断线、Ping 超时等情况。


💡 优化方案

1. 缩减 SDK 包大小,降低客户端安装包的大小,尽可能地让客户端平滑安装。

2. 缩减传输消息内容大小,明确语义,减少交互次数,整体上降低重传出现的几率。网络传输的消息内容做到最精简,保证数据传输小,降低重传包传输的数据量。已读报告、已送达报告合并发送,降低交互次数。

3. 动态调整 Ping 周期,手机网络差的情况下,Ping 要更敏感才能保证连接的有效性。客户端可以根据实际网络情况,动态调整 Ping 周期。

4. 增加客户端对网络质量报告日志上传,调整线路或部署接入点,对比测评客户端日志网络质量报告,经过大数据分析,对地区城邦、网络供应商、手机型号进行统计分析。

5. 优化断线重连逻辑,降低重连开销。对于断线重连场景进行服务端缓存处理,减少进行重连传输的数据包检查项,尽可能地降低连接的开销。


挑战四  企业内部防火墙等个性化问题

某私有云跨国客户反馈发送消息不正常,接收不及时。通过抓包分析,发现客户端发送了拉取消息后,收到了 RST 包。但是通过服务端抓包分析,发现服务端发送的客户端拉取消息的数据收到了 TCP 数据传输的 ACK 应答。


最终和客户沟通,确认了是客户内部防火墙限制。防火墙接收了服务端数据,但是给客户端发送了 RST 指令。所以通过服务端日志看,消息达到了,发送出去了,但是客户端没有收到。后通过防火墙白名单配置,解决客户问题。


💡 优化方案

完善消息传输机制,重要消息从服务端发出后,需要送达报告、已读报告,验证消息发送成功。单从服务端发送出去,不能认定是成功的。从 Netty 代码上看,发送到 Channel 缓存中就会认为成功,数据还要经过 Socket 层,网卡最终才发送出去,所以消息发送是否成功需要依赖各种已读报告来确认,否则有二义性。同时我们调整了日志输出的描述,标注是消息下行触发,不是消息已发送。


多角度持续优化体验


1. 针对出海场景,做去中心化处理

随着出海客户群占比越来越庞大,传输数据经常是从海外大网加速节点到国内数据中心,然后再由国内数据中心回到海外大网加速节点。客户选择迁移到海外数据中心,会出现国内用户到海外数据中心数据传输过程较长的问题。


为解决这个“怪圈”问题,融云在全球网络的基础上弱化数据中心。将数据中心内的用户信息独立成按 DNS 协议方式可以调用的服务。全球网络再次按照用户体系构建用户信息 DNS 服务,并配置数据中心一级的根用户信息 DNS 服务,可以实现递归查询。


服务端做用户接入点和内部调用地址映射,客户端登录可以写入接入地址和内部访问地址映射缓存,类似 ARP 表,写入用户信息 DNS 服务。


转发节点内部构建全球用户体系缓存服务,针对海外客户,如果不需要审核,优先通过访问用户信息 DNS 服务,获得内部访问地址,投递到其余转发节点。之后将消息转发到数据中心,数据中心根据配置的标签转发到相应的服务。


扩展群信息 DNS 服务缓存服务,聊天室 DNS 缓存服务。

消息优先在缓存节点内部转发,然后抄送到对应数据中心。针对优先看中消息送达率、数据接收的及时性的客户群,这种模式下,相同地域或者同一个转发节点的用户群,用户体验是最好的,同时短视频,文件传输,不消耗专线带宽费用。


2. 隐私保护

链路加密使用 TLS,但是客户端 CPU 消耗和包大小会影响用户的使用体验。


使用 TLS 加密后,不足加密位数的数据包会被补齐,大包传输和小包传输最终包都变大了,重传的风险增加。而且,海外大部分用户的手机还是老旧机型,使用 TLS 对 CPU 有影响。调整优化加密算法,采用更高效的非对称和对称加密算法,对需要加密的数据进行加密,而不做全链路数据加密。例如小包的 Ping 和一些状态报告或者服务端没有实际数据的应答,就可以不多消耗 CPU 和带宽。


3. 弱网优化

客户端针对不同设备型号、网络类型、传输数据大小和 RTT(往返延时)上报数据。服务端通过数据统计分析,计算出一个比值。


客户端登录后会得到对应比值,同时根据统计的数据做加权平均算法处理,削峰填谷。在持续弱网的情况下,调整链路。


应用 QUIC 协议,适应弱网情况下的通信,降低重传几率。

用户头像

安全、可靠的全球互联网通信云 2021.01.26 加入

关注【融云全球互联网通信云】,了解更多~

评论

发布
暂无评论
业务出海必答题,融云全球通信网络技术挑战破解实践_融云 RongCloud_InfoQ写作社区