blog/source/_posts/global-visit-acceleration.md

7.2 KiB
Raw Blame History

title: 全球访问加速调研 tags: [] categories: [] date: 2024-06-12 22:51:13

背景

公司的所有业务系统都部署在上海地区,北美地区访问延迟不稳定。

以下为某服务的API接口主要业务地区的初次访问

接口:https://xxxx.com/health/check

地区 建连时间 首包时间 总耗时
加利福尼亚 160ms 165ms 1063ms
弗吉尼亚 207ms 220ms 842ms
新加坡 68ms 74ms 332ms
上海 6ms 19ms 37ms
深圳 34ms 44ms 303ms

数据来源:https://boce.aliyun.com/detect/http

除了以上耗时,还有

  1. DNS解析耗时
  2. SSL握手耗时
  3. 下载耗时

可以看到 北美访问基本耗时在1秒以上如果稳定的1秒钟的延迟问题也不算特别大然而延迟是不稳定的比如

加利福尼亚-夜间延迟数据

弗吉尼亚-夜间延迟数据

数据来源:阿里云监控-定时拨测 晚上9点-第二天9点的响应时间

在高峰期可以看到在晚上9点后延迟就开始不稳定了美西延迟波动还不算大美东直接变为不可用了。

为什么会慢

说到那么慢,就需要先了解跨国流量是怎么走的海缆地图

登录站

目前中国的登录站主要有以下几个地方

走向分布

中美直连的线路目前只有两条

  • TPE(跨太平洋快线)
  • NCP(新跨太平洋海缆)

往东亚方向的的

  • APCN-2亚太2号海底光缆
  • APG(亚太直达国际海底光缆)
  • EAC-C2C(东亚海底光缆)
  • SJC(东南亚日本海底光缆)
  • ADC亚洲直线2024年Q4投入使用
  • SJC-2(东南亚-日本2号海底光缆2025年Q1投入使用

往欧洲方向

往台湾方向

  • TSE-1海峡光缆1号

为什么中国的跨国海底光缆那么少?

因为跨国海底光缆不是一个国家的能建成的,有登陆站的国家都要参与建设,所以要一拍即合

拿跨太平洋快线举例参与的企业有【AT&T中国电信中华电信KTNTT Verizon】登陆站有6个【上海-崇明,山东-青岛,日本-东京,韩国-巨济,台湾-炭水,美国-俄勒冈】

clipboard.png

所以协同建造难。

晚间访问高峰时,公共线路丢包,拥堵情况严重,延迟爆炸

当然建造成本那么高,肯定要想办法盈利,故各运营方提供了付费的国际精品专线

加速访问

以美国访问中国为例

在美中之间,有两个使用高品质线路互联的服务器,两个服务器之间不存在阻塞,丢包情况。那就可以借助这两个服务器做一些改造。

美国用户访问美国的这个服务器由这个服务器把流量打到中国的这个服务器上再由中国的服务器向源服务器发起请求再把响应返回出去。那就形成3段稳定的链路

clipboard.png

高品跨国链路,一般企业不会采购,所以购买现成的是最佳选择,阿里云就提供这样的服务

不能解决什么?

全球加速不能解决传输时延问题。

比如中国到美西的访问传输时延在150毫秒左右。

阿里云全球加速

阿里云全球加速

以中美间访问为例,无论是中国访问美国,还是美国访问中国,流量都是走公共链路。高峰期网络拥堵,丢包率、延迟都不可控且不稳定。

全球加速是中美间的流量不走公共链路,而是走阿里云的全球网络。基本不会产生拥堵,丢包情况,延迟可控且稳定。

加速方式

全球加速有三种接入方式,每种方式有不同的实现方式

  1. 弹性公网IP
  2. 任播弹性公网IP
  3. CNAME

弹性公网IP

弹性公网IP简单来说就是每个地区提供单独的公网IP对应地区连接各自地区的IP

任播弹性公网IP

弹性公网IP有一个问题每个地区都有对应的IP没办法一个IP访问全部如果连接到错误地区的IP延迟更高。

这个时候借助任播技术就可以实现一个IP指定地区的访问。

任播(英语:anycast)是一种网络寻址和路由的策略,使得资料可以根据路由拓扑来决定送到"最近"或"最好"的目的地。

CNAME

CNAME实际上是套了一层的DNS解析在阿里云的全球加速中最后解析到的IP依旧是一个任播公网IP

切换流程

DNS切换会影响全部用户切换流程如下

验证期

  • 切换CNAME解析到全球加速的域名
  • TTL设置为1分钟能选择的最短时间即可

验证

  1. 清空本地DNS缓存
  2. 使用dig命令解析域名
    1. dig xxxx.com
  3. 本地访问https://xxxx.com/health/check
  4. 使用加速地区的ECS或VPS等访问 https://xxxx.com/health/check

验证完成

  • 修改TTL恢复原本时长

回滚

CNAME解析切换回原来的即可

切换时间视TTL不同有所不同一般会略高于TTL时间