2019独角兽企业重金招聘Python工程师标准>>>

[喵咪海外部署]海外部署访问技术探索

当一个公司在开展海外业务的时候,对他的技术就有了挑战,因为海外用户访问会遭遇到各种问题(比如网络丢包,延迟高,国内防火墙等问题),喵咪现所在的公司从去年开展全球化业务至今,在技术上也做了很多探索,在这里和大家一同交流下经验希望可以帮助到大家或正在为全球化苦恼的小伙伴们.

PS:没有终极解决方案,只有最符合公司现状和当前业务类型方案,需要结合目前状态选择符合成本的方案

附上:

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

1.海外访问的问题是什么

在开展海外业务前期,基本上大部分服务都部署在国内环境(相信这也是大部分公司的选择主要用户是国内用户),但是随着公司的扩大产品的成熟,产品被海外用户开始使用,公司也带着产品参考海外的展会或者给客户演示,这个时候就会发现严重的问题:

  • 海外根本无法正常访问国内业务
  • 响应时间特别慢很难接受(类似于不翻墙打开一个国外的网站的感觉基本10秒左右)
  • 文件下载速度只有20kb/s,下载业务文件要2个小时

大致遇到的就是上述这类问题,通过这类问题就有了今天全球化系列

2.应该如何应对海外访问问题?

之后喵咪也在拼命的学习寻找方案,关于海外访问大致可以分为如下几种方案(方案直接可以互相结合并非一种就能解决所有问题比如主节点在海外在加上网络链路优化):

2.1 海外部署节点

首先想到的方案就是为什么不在海外部署节点,这也是大多公司同事给出的建议,但是其中的代价只有实施的人知道,海外部署节点又分为几种方式:

以阿里云举例,在查看ECS列表的时候如果选择海外比如德国的服务器,网页会跳转到德国的网络上去(aws等云厂商基本都是此类方式) 域名从ecs.console.aliyun.com -> ecs-eu-central-1.console.aliyun.com

因为数据的区别海外节点有分为这么几类,完全独立节点,海外独立数据中心或一套数据同步到海外,这几类方式都能很大程度的优化海外用户访问,但是也存在问题 (在喵咪之前的文章中有一个名为otter的阿里开源软件就是来解决数据同步问题)

完全独立节点

  • 管理成本高,管理人员需要对国内外管理区分甚至国外有多个管理平台进行开发
  • 数据不通导致汇总统计复杂

独立数据中心(例子:各大云厂商)

  • 独立数据中心受限于业务,业务需要有相对的独立性
  • 国内用户使用海外服务或海外用户使用国内服务还是会出现此类问题(如国内使用阿里德国节点明显慢很多)

数据同步到海外

  • 数据通过国外会遇到数据库双写问题复杂度高,涉及数据结构大量修改
  • 同步延迟数据冲突问题,海外创建记录test,国外也创建记录test本地因为都没有test记录创建成功在同步的时候会发现冲突

独立数据中心也好还是数据同步也好都需要公司的技术能力比较健壮,技术成本依赖低的后续方案会更加合适,在业务还不稳定在奔跑中的公司不建议使用

2.2 网络优化海外访问

这类方案在很多云厂商或者cdn厂商中提供的最普遍,比如阿里云的高速通道海外加速,网宿科技的APPA,ucloud的高速通道等,这个方案主要解决的是海外网络波动对用户的影响,用户首先访问到海外的节点延迟很低,让后通过海外的节点通过专线等方式访问到国内,极大程度降低了丢包断链等问题

优点

  • 技术成本低,无需业务作出任何的改变
  • 离得远延迟高的响应速度不块,但是能够保证用户的访问

缺点

  • 无法解决延迟高的问题只能优化,用户依旧会感觉卡顿
  • 选用云厂商的服务往往都特别的贵

(网宿科技的APPA类似于AWS的动态分发与高速通道不同,海外你无需在准备自己的中转节点,它本身会有很多个海外节点帮助你中转)

3.实践

上面两类方案一个技术成本高,一个经济成本高,就没有一个好办法吗,由于公司没有专门的海外技术小组所以使用第一种方式代价太高成本有些难以接受见效周期长,不太适合现阶段,那么第二个成本这么高20MB国外高速通道一个月要3W块也挺难接受的,所以先找到问题的根源,在了解解决方案的思想在进行解决

3.1 海外根本无法正常访问国内业务

无法正常访问国内业务的罪魁祸首就是网络丢包或网络不稳定的问题,通过ping值测试除了中国周边地区外,基本上海外直接ping国内都会出现丢包,巴西丢包率高达39%(难怪无法访问),但是通过测试发现海外节点大部分于新加坡的网络支持良好基本上无丢包现象(到国内丢包39%的巴西都很稳定),而且国内到新加坡也比较稳定,所以考虑使用新加坡来中转国外的请求回到国内来解决请求过程中丢包导致无法使用的问题

并且在通过各项链路优化数据来降低中转节点到国内的延迟,比如OPENVPN建立长链转发,使用KCP协议优化协议,基本上中转节点到国内的http访问消耗等于ping消耗的毫秒数,比正常的缩短了一倍的速度

(高速通道测试下来并没有缩短延迟的作用,国内到新加坡延迟也很低稳定性也很好和国内连上高速通道中转没有太大的区别,并且高速通道价格特别贵选择了通过外网中转)

3.2 响应时间特别慢很难接受(类似于不翻墙打开一个国外的网站的感觉基本10秒左右)

这个问题其实和国内墙有关系,静态文件一般使用全球CDN加速来解决,对于动态资源,就需要中转不然如果网络丢包TCP协议会一直重试http访问超时或缓慢

3.2 文件下载速度只有20kb/s,下载业务文件要2个小时

这个问题主要是海外CDN在回源的时候被国内的墙进行了拦截限速,这个情况下使用中转的方式吧源站中转出来会得到比较理想的效果

最好的效果是当国外第一次访问文件通过中转回源获取之后这个问题就会在国外存储一份,之后的回源都会寻找到海外的这个源站文件来获取

4 总结

确实因为篇幅问题很难描述的特别细致,在后续的博客中会分解文件分发演进,动态资源加速演进来具体的介绍通过相对比较低的成本来优化用户的体验,大家如果也遇到了海外访问的问题或者有比较好的海外访问的解决方案可以随时来和喵咪沟通,多谢大家的支持今天我们就到这里.

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

转载于:https://my.oschina.net/wenzhenxi/blog/1550589

[喵咪海外部署]海外部署访问技术探索相关推荐

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

    [喵咪海外部署]海外文件分发方案演进 在开阔海外市场遇到的第一个问题就是文件分发,因为初期文件肯定是存放到国内服务器上,给到海外访问速度及其缓慢笔者这边试下来欧洲只有20KB/s,一个300MB的文件 ...

  2. [喵咪开源软件推荐(6)]TCP链路加速技术KcpTun

    [喵咪开源软件推荐(6)]TCP链路加速技术KcpTun 今天有给大家带来新的东西KcpTun,KcpTun是利用Kcp技术对Tcp链路传输进行加速,大家熟知的网络协议一般是UDP和TCP,UDP传输 ...

  3. NTT DOCOMO将部署多供应商NFV技术

    2/22/2016,日本领先的移动通信运营和服务提供商NTT DOCOMO日前宣布,将计划在3月部署多供应商网络功能虚拟化(NFV)技术. 这也是电信运营商首次投资部署多供应商网络功能虚拟化技术.而在 ...

  4. easy-mock本地部署成功,访问报错:EADDRNOTAVAIL 0.0.0.0:7300 解决方案

    easy-mock本地部署成功,访问报错:EADDRNOTAVAIL 0.0.0.0:7300 解决方案 参考文章: (1)easy-mock本地部署成功,访问报错:EADDRNOTAVAIL 0.0 ...

  5. 存储库访问被拒绝。通过部署密钥进行访问是只读的

    本文翻译自:Repository access denied. access via a deployment key is read-only After successfully cloning ...

  6. tomcat加上了https后访问不了_西部数码使用指南:部署https后访问提示存在安全隐患的排查解决方法...

    版权归西部数码所有,原文链接:https://www.west.cn/faq/list.asp?unid=2374 部署https后访问域名出现如下提示: 您的连接存在安全隐患 此网站使用的安全性配置 ...

  7. [原]解决win2003 iis6 部署MVC 无法访问 403 的问题

    应一个在学校朋友的要求 帮忙把一个填表的东西 做成 网络版 ,本人花了5天的小段时间使用asp.mvc 3 制作 于今天 登录服务器 去部署 遇到 无法访问 出现 403 要求登录 ,第一反应就是去检 ...

  8. compose部署redis和mysql_浅析docker-compose部署mysql无法访问的问题

    什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高.Compose 是 Docker 容器进行编排的工具,定义 ...

  9. 读取项目的根目录 部署tomcat后_tomcat配置根目录访问后,部署后第一次访问会出现tomcat的默认界面而非项目首页...

    tomcat配置根目录访问后,部署后第一次访问会出现tomcat的默认界面而非项目首页,而重启后会正常,这个原因是因为在配置文件中有如下配置,造成项目加载两次 unpackWARs="tru ...

最新文章

  1. Error:Could not download guava.jar (com.google.guava:guava:19.0): No cached version available for of
  2. 大厂面试篇:五轮面试,阿里offer到手!
  3. 谷歌兄弟公司Wing将于10月开始试点无人机配送
  4. WebBrowser
  5. 日常办公会用到的python模块-用 Python 自动化办公能做到哪些有趣或有用的事情?...
  6. 对应用程序启动时所有方法的调用顺序分析
  7. mysql的两种存储方法_mysql的两种存储引擎
  8. 5.网络层(3)---路由选择协议
  9. Java实现多文档文本编辑器
  10. Apache Web服务器安全配置全攻略
  11. android studio怎么后退,Android Studio:上一个活动的后退按钮
  12. SuperMap iServer产品版本以及模块介绍
  13. eclipse与DW联合开发java web项目
  14. Maven之jar包冲突引入非第三方jar
  15. mysql重迭算法_一句话实现MySQL库中的重叠分组
  16. 《黑客与画家》书评——lisp教主驾临
  17. Hibernate 原理及实战
  18. 80老翁谈人生(11):高考查分的往事
  19. 怀孕了需要哪些营养?
  20. 小学音乐利用计算机教学设计,外婆的澎湖湾公开课,怎么利用技术多媒体小学音乐教学设计...

热门文章

  1. python 画出函数的曲线与其中的切线
  2. 数据分析-降维-PCA-LDA-LLE
  3. 支付宝,微信的提现即时到账。【转账给支付宝用户服务】【企业付款】
  4. BASK幅度调制matlab
  5. CAD制图问题,向程序发送命令时出现错误
  6. W25Q16基本知识
  7. 浅谈自媒体短视频配音、广告配音等行业的发展前景
  8. python通信技术_用自己的语言解释什么是通信技术?
  9. 做硬件没人带?想放弃
  10. latex公式实现居中,多行公式同一个编号