文件系统上云的挑战
优质博文:IT-BLOG-CN
一、挑战/注意事项
【1】因文件系统HDFS
没有关联信息OrderId
等,不能对存量数据进行有策略的同步,因此目前是将所有的文件同步至云服务器SIN
;
【2】海外数据和国内数据上传到各自的文件服务器后,读取文件的地址国内和国外的前缀就会不同,因此需要通过代理的方式解决该问题;
二、简介
存储:底层存储使用的FastDFS
系统,一个文件4个备份,分别存储在2个IDC
。
【1】内网域名流量会回流SHA
,文件保存在SHA
;
【2】如果文件只想保存SIN & FRA
环境,前提条件是使用外网域名;
【3】外网域名和内网域名请求参数/返回报文格式有差别;
【4】外网域名需要用Proxy
调用;
环境 | 上传文件域名 | 下载文件域名 | 是否需要代理 |
---|---|---|---|
内网域名 | http://uploadfile.xxx.com | http://downloadfile.xxx.com | 不需要 |
外网域名 | http://file.xxx.com | http://file.xxx.com | FRA:proxy-nwl.fraaws.xxx.com:8080 SIN:proxy-nwl.sinaws.xxx.com:8080 |
Channel
:频道名,上传的文件都是保存在自己申请的Channel
下;
三、文件同步
【1】目前灰度阶段,默认SHA/SIN/FRA
3个机房之间文件是相互同步的;
【2】SHA
与SIN/FRA
机房之间是否同步文件,是根据Channel
维度可以配置的;
【3】SIN
与FRA
是相通的,都是外网,SIN
或者FRA
可以访问对象上传的文件;
四、SIN上云方案
方案一:用新Channel
过渡期间文件保存在SHA
和SIN
,FRA
也可以访问。将海外文件从旧Channel
删除,然后再上传至新Channel
。最终要配置为不同步回SHA
时,需要删除上海侧的文件。
方案二:和国内公用Channel
,最终国内和海外要隔离时,把国内订单的文件迁移至新建Channel
,配置数据隔离。
五、代码修改
【1】添加Proxy
:Request
设置代理服务器地址即可。
String httpProxyURL = CertificateConfig.getHttpProxyURL(); // proxy-nwl.fraaws.xxx.com:8080
String[] tmpList = httpProxyURL.split(":");
HttpHost proxy = new HttpHost(tmpList[0], NumberUtil.parseInt(tmpList[1]));
requestConfigBuilder.setProxy(proxy);