专栏首页喵了个咪的博客空间[喵咪海外部署]海外文件分发方案演进

[喵咪海外部署]海外文件分发方案演进

[喵咪海外部署]海外文件分发方案演进

在开阔海外市场遇到的第一个问题就是文件分发,因为初期文件肯定是存放到国内服务器上,给到海外访问速度及其缓慢笔者这边试下来欧洲只有20KB/s,一个300MB的文件要下载一天,因为这个问题就有了我们今天的主题海外文件分发方案演进,请紧张的往下看!

附上:

喵了个咪的博客:w-blog.cn

1.文件分发1.0

主要思想 : 使用CDN解决多次下载问题,国内继续使用阿里云,海外使用AWS等CDN进行加速

笔者在进行第一次演进的时候主要使用的方式就是在文件分发领域中常用的CDN技术来进行优化,在之前也有使用阿里云提供的全球CDN加速,但是在海外尝试下来首次下载因为需要回源的原因速度只有之前所谓的20KB/S,回源之后有CDN缓存之后也并不是特别理想也只有几百KB的速度

从理论上来说使用CDN服务器除了回源其余的下载是很快的可能是阿里云海外CDN节点质量并不是很高,就算有缓存之后下载速度也一直提不上来,我们就开始选择新的CDN运营商,通过测试效果最好的是 AWS CloudFront 开启了边缘地区加速之后除了回源的下载速度能够达到20MB/S非常惊人的速度,一般客户使用下来也有10MB/S

PS:这就还要使用到另外一个技术就是DNS动态解析域名托管服务都会有此类服务,当域名在国内访问的时候域名CNAME到阿里云的CDN,在国外访问的时候域名CNAME到AWS的CDN

2.文件分发2.0

主要思想 : 通过转发文件来解决回源慢的问题

虽然文件分发1.0解决了多次下载但是接着我们又遇到了另外一个问题,首次回源的时间太久了,因为在海外CDN节点在全球大部分节点在首次访问的时候都会回流到国内获取文件,第一次还是只有20KB/S的速度根本连第一次都没有办法缓存成功

导致这个问题的主要问题是防火墙屏蔽,离国内远的地方请求国内的资源防火墙会限制速度,这边选择通过新加坡Nginx反向代理文件服务作为回源地址,服务器最大带宽是20MB通过测试首次访问时下载速度会总100KB/S慢慢加经过块30秒后可以达到2MB/S最大速度

这样已经可以提高速度但是速度提高到极限的时间还是比较慢,后期通过调研使用KcpTun(想了解可以查看笔者博客**[喵咪开源软件推荐(6)]TCP链路加速技术KcpTun**)在需要访问的地方增加一个服务节点作为源站点,在通过KcpTun中转到国内文件服务器上(Kcp底层是UDP协议UDP协议不会被限制速度)通过测试可以直接达到最大速度,也不需要通过新加坡中转直接国内即可

3.文件分发3.0

主要思想 : 类DNS的文件分发网络

虽然文件分发2.0解决了回源的问题,但是也带来了另外一个问题就是流量费用高,CDN本来价格是很便宜的但是通过你本身的服务器中转流量费用一下子会多出很多来了,并且回源还是会依赖网络情况,那么笔者就在想有没有什么更加好更终极的解决方案,一次偶尔在和七牛云存储的同事讨论下得出了文件分发3.0解决方案

所有的前提要基于云文件系统(这里使用的是OSS)中的镜像模式简单来说就是文件服务器中没有文件,这个时候有个请求来访问发现找不到文件会先找到镜像的站点获取一下,如果获取到了就在返回的同时自己也存储一份(其实也就是类似CDN的功能),于CDN不同CDN只能全部到一个文件服务器,那么在CDN之前还有一个文件服务器的分发网络,所有的文件只要被海外访问过一次就会不停的在各个文件服务器上进行传递并且保存在文件服务器本身上,可以理解为CDN回源回到了CDN从CDN中获取了文件

这样一来海外文件相当于存储在了海外,回源到国内也只会存在一次回源永久使用

4 总结

技术是不停演进的,从早期的汇编到C语言到Java到Go语言,不停的迭代带来了新的体验优劣需要自己进行斟酌,如果大家有更多好的海外文件分发的方法欢迎来和喵咪一同沟通,最后多谢大家的支持!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • phalapi-入门篇5(数据库操作和Model层)

    #phalapi-入门篇5(数据库操作和Model层)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源...

    喵了个咪233
  • phalapi-入门篇1(简单介绍以及环境搭建)

    #phalapi-入门篇1(简单介绍以及环境搭建)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架...

    喵了个咪233
  • phalapi-进阶篇3(自动加载和拦截器)

    #phalapi-进阶篇3(自动加载和拦截器)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. ...

    喵了个咪233
  • 移动安全加固基础版操作指引

    乐固加固提供了专业版加固服务,相比普通版本整体保护强度更高,主要包括SO加壳保护、APK 防二次打包保护、资源防篡改、内存防dump等服务,目前服务于公司内百万...

    腾讯云@移动安全
  • 算法提高 01背包

    问题描述   给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个. 输入格式   ...

    AI那点小事
  • 华为IoT蒋旺成:TEE在OBD里面是很重要的一个技术

    在去年11月10-12日,由中国电动汽车百人会和中国信息化百人会共同主办的“2017全球未来出行高层论坛暨国际展览会”在浙江省杭州市召开。作为本届会议的战略合作...

    安智客
  • Object.assign方法的使用 转

    (adsbygoogle = window.adsbygoogle || []).push({});

    双面人
  • 搭建Redis集群

    在上一篇我们已经介绍了Redis集群分区的规则,在这一篇我们开始上干货,真真正正的搭建一个Redis集群。搭建Redis集群主要分3步:

    吉林乌拉
  • iOS - Swift UIButton中ImageView的animationImages动画执行完毕后,图标变暗

    LinXunFeng
  • 分布式网络文件系统--MooseFS

    MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本。对于访问的客户端或者用...

    yaohong

扫码关注云+社区

领取腾讯云代金券