目录
1. 网络延迟和网络波动的直观概念
2. 加速解决方案的总体思路
3. 静态CDN服务
4. 动态内容加速
5. 全球应用加速GAAP
6. Anycast 公网加速 AIA
7. Anycast IP作为NAT出口的另一种用法
8. CLB跨地域部署
9. 一张表对比各种加速产品
1. 网络延迟和网络波动的直观概念
- 网络延迟
受限于光速,网络延迟总是有一个下限,是无法超越物理极限的。本人实测,使用腾讯云的云联网,中国上海到美国硅谷内网ping延迟138ms,这基本是最佳的网络延迟了。
- 网络波动(丢包率)
网络波动这块只有本人实测数据,仅供参考。测试方法是在同一时间ping美国芝加哥的一个IP,经过一段时间后,查看丢包率。
腾讯云广州、上海、北京、成都的服务器,丢包率都在1%~2%左右。深圳IDC服务器(电信公网IP)的丢包率在10%。
本人实测腾讯云和IDC的公网网络延迟和丢包数据(红色字样,仅供参考)
单位ms | 上海 | 北京 | 成都 | 中国中国香港 | 硅谷 | 弗吉尼亚 | 美国芝加哥 |
---|---|---|---|---|---|---|---|
广州 | 31 | 52 | 37.8 | 11.5 | 161 | 218 2% | 246 1% |
上海 | 32 | 36 | 32.6 | 137 | 235 | 265 2% | |
北京 | 74.2 | 65.8 | 160 | 260 | 247 2% | ||
成都 | 40.3 | 179 | 261 | 265 1% | |||
中国中国香港 | 144 | 210 | 196 | ||||
硅谷 | 61 | 49 | |||||
弗吉尼亚 | 18.9 | ||||||
深圳IDC | 374 10% | ||||||
中国中国香港IDC | 208 |
2. 加速解决方案的总体思路
游戏全球同服,各家的加速解决方案都很类似,主要有以下两个思路:
l 尽可能把服务器放在离玩家物理距离近的地方
l 把长距离公网传输改为稳定的内网传输
按照这个分类,我们把市面上已有的解决方案和加速产品,分成两类:
第一类:缩短玩家与服务器间的物理距离
服务商 | 产品 | URL |
---|---|---|
腾讯云 | 内容分发网络 CDN | https://cloud.tencent.com/product/cdn |
腾讯云 | 海外加速 GCD | https://cloud.tencent.com/product/gcd |
阿里云 | CDN | https://www.aliyun.com/product/cdn |
AWS | CloudFront | https://amazonaws-china.com/cn/cloudfront/ |
第二类:把长距离公网传输改为自建的内网传输
腾讯云 | 动态加速网络 DSA | https://cloud.tencent.com/product/dsa |
---|---|---|
阿里云 | 全站加速 | https://www.aliyun.com/product/dcdn |
AWS | CloudFront | https://amazonaws-china.com/cn/cloudfront/ |
腾讯云 | 全球应用加速 GAAP | https://cloud.tencent.com/product/gaap |
阿里云 | IP应用加速 | https://help.aliyun.com/document_detail/113219.html |
腾讯云 | Anycast公网加速AIA | https://cloud.tencent.com/product/aia |
AWS | Global Accelerator | https://amazonaws-china.com/cn/global-accelerator/ |
3. 静态CDN服务
静态CDN服务是大家使用最多的一类加速服务,大家也很熟悉,内外部资料也很多,在这里不过多介绍。
腾讯云CDN和COS可以参考官网文档。腾讯云-海外加速 GCD是腾讯云CDN的海外版,功能基本一致。
4. 动态内容加速
动态内容加速也是一个比较老的技术,但在腾讯内部,我没有找到对应的产品。在三大主流云平台有提供这类服务:
腾讯云-动态加速网络 DSA:https://cloud.tencent.com/product/dsa
阿里云-全站加速:https://www.aliyun.com/product/dcdn
AWS- Amazon CloudFront:https://amazonaws-china.com/cn/cloudfront/
所谓的动态内容加速,是指用户在请求一些动态内容时,如网站中的.asp、.jsp、.php和.cgi接口、API接口等,不直接请求源站,而是由基于地理位置的DNS调度,请求最靠近用户的云服务节点,再由云服务节点通过优化过的传输网络(公网,但比普通BGP更优化的链路),转发请求到源站,达到优化和加速的目的。当然这其中有很多其他的传输层面的优化,比如访问链路优化、传输内容压缩合并、智能选路、链路复用等技术,也有部分介绍,但都历史悠久,没找到最新的公开资料。
腾讯云的动态加速网络目前还在内测,需要申请才能开通。阿里云和AWS已经开放使用。
从文档上来看,三家的动态加速,其实都支持动静态内容混合加速,即静态内容直接由边缘节点(静态CDN)返回,动态请求走内网代理转发到源站。AWS更是把动静态加速直接合并为一个服务Amazon CloudFront,统一计费。
CDN与全站加速和CloudFront对比
对比项 | CDN | 全站加速和CloudFront |
---|---|---|
资源类型 | 仅支持静态内容加速。 | 支持静态内容和动态内容同时加速。 |
加速方式 | 将服务器上的静态内容缓存在CDN节点上供用户就近访问。 | 静态内容使用CDN加速。动态内容通过智能路由、协议优化等动态加速技术快速访问服务器源站获取。 |
源站适配 | 建议对服务器源站的动静态内容进行分离,静态内容使用CDN加速,动态内容不使用CDN。 | 无需对服务器源站上的资源进行改造,全站加速会智能区分动静态内容并分别加速。 |
我们可以看到,静态加速和动态加速,都依赖基于地理位置的DNS服务,这类服务,能够根据用户的地理位置,返回最优的接入IP,我们称之为GeoDNS。这种服务在AWS叫Route 53,其他厂商也能提供类似服务。
全站加速的典型应用场景:
在某一个地区部署游戏服务端API站点或者CGI站点,接入全球范围的动态加速,使得全球用户访问这个服务端连接延迟最低,最稳定。
5. 全球应用加速GAAP
腾讯云-全球应用加速 GAAP:https://cloud.tencent.com/product/gaap
阿里云-IP应用加速:https://help.aliyun.com/document_detail/113219.html
这两款加速产品是类似的,目前都在测试阶段,腾讯内部和AWS没有对应的产品。
提到全球同服,很多人会马上想到有个叫GAAP的产品,全球应用加速,名字特别响亮。最早,一款游戏,需要让中国玩家访问美国AWS加速,提出了一种解决方案。这个方案逐渐由腾讯云建设发展,开发了GAAP这款产品。
GAAP的本质,是在加速区域入口和源站区域出口,各部署一套转发集群,把长距离公网传输改为自建的内网传输,从而实现加速的效果。
上图是典型的使用GAAP构建全球同服游戏解决方案,可以看到,GAAP的典型应用场景,也是需要基于位置的DNS服务支持,按地区返回给玩家最近的接入IP,通过GAAP创建的内网加速传输通道把数据转发到游戏服务器。
GAAP有一个特点,就是客户端和服务端,都可以不是腾讯云的机器,只需要离腾讯云的节点足够近即可。这种优势,大大提升了GAAP的应用场景,除了上图的游戏全球同服,最典型的应用场景是:网游加速器。客户端是真实用户,源站是AWS等非腾讯云的机器,这种场景下,使用GAAP连接玩家和境外游戏服务器,效果很好。
当然GAAP的费用比普通的公网带宽要贵很多,业务是否选择使用,还需要综合考虑成本因素。GAAP中经过的节点很多,配置较为复杂,有相关文章分享了在使用过程遇到的一些问题,在使用之前可以先看看。
6. Anycast 公网加速 AIA
腾讯云- Anycast 公网加速 AIA:https://cloud.tencent.com/product/aia
AWS- Global Accelerator https://amazonaws-china.com/cn/global-accelerator/
腾讯云的Anycast公网加速 AIA和AWS的Global Accelerator实际上是同样的产品。这款产品在腾讯内部IDC和阿里云没有找到相关服务。
Anycast 公网加速 AIA是使用了一个叫Anycast的技术。
Anycast 又叫任播,是指一个发送方同最近的一组接收方之间的通信。当一个单播地址被分配到多于一个的接口上时,发到该接口的报文被网络路由到由路由协议度量的最近的目标接口上。
Anycast IP最早被应用在DNS服务上,如著名的GoogleDNS:8.8.8.8。在腾讯云上,Anycast做到的效果是,用户的公网请求在腾讯云就近节点进入,提高传输环节的质量。本质上还是基于一个公网IP,在寻址环节采用任播。原理为,普通的IP是单播寻址,全程走公网。如果用Anycast的话,该公网IP用任播形式寻址,在腾讯云的多个节点都发路由,这样客户端的包只需要走公网到达最近的腾讯云节点即可,剩下来的路程是走更有保障的腾讯云内网。
所以,AIA的本质,也是把长距离公网传输改为自建的内网传输,从而实现加速的效果。腾讯云的Anycast IP,可以绑定在cvm上,也可以绑定在clb上,使用跟普通的公网IP相同,非常简单。
AIA相比于GAAP,一个显著的优势在于部署配置简单。全局唯一的IP,不需要依赖GeoDNS,后端唯一的服务提供集群,架构清晰,配置容易。但AIA的后端业务,只能是腾讯云上的机器,无法接入第三方服务器(补充一点:如果想接入第三方服务器,可在绑anycast ip的CVM上做转发代理,可以实现类似混合云的加速效果)。
总的来说,GAAP和AIA,都能做到全球加速,但是服务的对象可以有区别,配置复杂程度不同。成本和价格不同。
关于Anycast和GAAP,从反馈看,Anycast和GAAP用户群有不同:Anycast带宽可以理解为高级版的BGP带宽,用户通常是本来不会做加速(即不会建proxy),但是又希望带宽质量更好的。而本来就要做加速的人,会倾向于用GAAP,因为他们希望调度要拿在手里。
7. Anycast IP作为NAT出口的另一种用法
在实际的业务场景中,Anycast IP除了用来绑定在CLB上,提供面向玩家的接入服务外,还可以绑定在NAT网关,用来加速服务器对外部接口的请求。
下面是一个典型的测试场景:一台上海的腾讯云服务器,访问美国芝加哥的服务。
这是一个跨境的长距离传输场景,源端为中国境内,目的地址为境外,需要跨越太平洋,按文章开头的测试,延迟和丢包率都很差。我们来看看,在把AnycastIP绑定到NAT网关前后,网络的实际表现。
- 没有启用Anycast IP的NAT网关
服务器出口IP显示为上海的外网IP,ping的结果如下:
- 启用了Anycast IP的NAT网关
服务器出口IP显示为Anycast的IP,ping的结果如下:
可以看到,上海ping芝加哥,延迟从420ms降到了220ms,并且非常稳定。
保持ping命令,切换NAT网关的路由开关,可以看到红线位置ping发生的明显变化。
当然,GAAP也可以实现这种场景,我就没有再测试了,估计效果差不多,但是没有AIA配置简便。
8. CLB跨地域部署
腾讯云上的CLB,还可以实现的另一种部署方案,在不同的地域创建CLB,后端绑定在相同的cvm上,来实现部分加速效果,有点类似于GAAP。但是实际效果如何,还需要业务进行测试才知道。不过配置起来比GAAP和AIA都麻烦,同样依赖GeoDNS。
9. 一张表对比各种加速产品