加速境外用户访问网站的一些尝试的记录与思考

最近有人反映,公司的产品有一部分境外用户(主要在北美洲和欧洲)在上网高峰期有加载缓慢和失败的情况,本来中国这种网络的大环境就是如此,在境外用国内的服务,心里就应该有点B数,但是无奈领导说这部分用户的收入占整体的13%,不能不管啊。无奈之下,也只好想办法解决。

这篇随笔包含了各种不专业并且不够优雅的的解决方式,其实都是向历史包袱和现实状态的妥协。在有限的资源下尽量节省成本,解决问题。

服务主要分三部分 

A, 动态服务部分 提供主要功能 特点是读写均衡,每个用户的数据有横向对比,只有为了保证数据准确性读缓没有写缓(Apache 2.4 php 7.1 MySQL 5.6  Redis 3.2  不要吐槽这玩意,历史包袱而已,小公司人少事多,时间久了问题堆积的也比较要命)

B, 网站上大部分的图片、视频、字体等静态资源,以及A里面用到的一部分富文本编辑器里面引用的资源

C, 网站内容提供者上传的多媒体课件包,体积不小。但是都比较独立 这应该是最简单的部分。

首先要说,这里没有采用智能DNS的原因

然后来分块解决问题

先说C ,这部分很好办,开一台北美的云主机,假设Rsync和HTTP服务,然后同步课件过去,域名配置成C1 和原来的C做镜像,然后在A上面判断访客IP的来源,动态切换域名即可

这里要记录的关键点

  • PHP 使用geoip判断IP的来源(只在访问课件的部分判断)
  • rsync的搭建 (这个东西很好安装 直接yum就行了,但是很难配置,搞了很久,主要遇到两个问题,一个是网络不通,后来发现是云平台自带一个端口过滤的规则,打开就好了。另一个问题是权限问题,怎么配置都搞不定最后放弃了,走了SSH通信的方式,导致第一个问题也不存在了)

具体做法可以自行搜索

/usr/bin/rsync -vzrtopg –progress –delete -e ssh root@源服务器:/data/iSpring_htdocs/ /data/iSpring_htdocs/

 

然后是B区域,这里正确的做法是cdn(成本不足放弃了)或者智能解析(同C的理由也放弃了)业务逻辑很复杂,很多资源特别混乱,外加有混合在富文本编辑器生产的内容里面引用的资源,所以也不能轻易替换域名,后来发现云平台有个服务可以加速境外访问,但是大概算了一下成本,乖乖一个月要14万大洋,这肯定也不行。好吧,正常可以用的方案都不能用了,下面就从其他方面考虑。

首先明确一点,响应速度和加载速度是两码事,我们这里要解决的主要是加载失败,而不是响应速度,也就是说,可以加载慢一点点(当然也不能太慢)毕竟只是上网高峰期慢,但是尽量不要让用户不能使用。于是我想到了基于用户IP来源的地区在nginx上面做域名跳转到镜像站。这样A区域的所有域名都不需要更改,自动会302跳转到B的镜像服务器域名B1上了。

这里要记录的关键点

rsync同步文件(同C)

nginx重新编译(lnmp.org 支持配置文件自定义编译参数,添加好模块判断来源 写跳转规则)https://www.cnblogs.com/lixigang/articles/5130052.html

 

 

 

最后是A,也是最难弄的部分,代码没做前后端分离,很多事情特别难搞,外加第三方服务的接入乱七八糟的,需要整理代码,尽量把不相关的静态资源放到B上面去,A模块就只保留PHP业务逻辑和HTML动态输出,开启gzip,(apache暂时不能换成nginx,问题太多了不好一一解决),开发层面上优化和分离代码,数据库层面上,建立海外镜像节点,做同步,同步的通信端口通过多个代理根据ping值来动态切换。但都是权宜之计,最终还是要做智能DNS解析,然后部署海外镜像,不过代码没整理好之前,暂时不动,观察一下用户访问的体验反馈。

 

 

2018.11.29更新

发现letsencrypt续期和IP来源判断冲突 这里需要单独判断一下 所以配置文件修改

 

 

 本文未完成,细节没有补充

原文链接:https://www.cnblogs.com/toumingbai/p/9782582.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/17389

(0)
上一篇 2022年12月2日
下一篇 2022年12月2日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml