MENU

浅析AllNippon.Net文件存储方案

June 26, 2013 • 网络阅读设置

AllNippon.Net要重出江湖了,当它以一个专注于下载的小站出现在众人眼前时,不知道会不会大放光彩呢?言归正传,既然是一个下载站,没有下载资源是万万不行的。资源下载方案如何解决?本文就来揭秘它。

文件存储,有二类:资源、图片。


资源上,我们采用了“百度云”。名字说的好听,简单地说就是一分钱不花的百度盘。百度的分布式存储做的很好,还有优越的带宽接入,为何不选择?每个免费帐号注册后有4G的永久空间,明显地,这不够使。为了解决这个问题,我们需要使用一些手段扩容。

百度和SAMSUNG有一个合作项目,使用Note2登陆百度网盘手机客户端就可以获得补满15G永久空间加35G两年有效空间。利用这一点,对apk稍加修改后即可无限制扩容。首先下载它,并且安装。如果恰巧使用SAMSUNG NOTE2就可以直接使用了。登录欲扩容帐号,检查扩容成功后,注销即可。如果使用的不是NOTE2,建议使用模拟器/虚拟机进行后续操作。

打开/system/build.prop(使用Bluestack即打开bluestack.prop),找到相应内容修改如下:

ro.product.model=GT-N7100
ro.product.brand=samsung
ro.product.name =GT-N7100

重启即可。

ANN为增进用户体验,使用的是无缝直连下载,技术实现稍后会提到。看起来这样做是非常靠谱的,实则不然。经过开发小组分析,转发到客户端的下载URL中包含有用户的uk,取得uk后即可通过百度云网盘列出该用户下所有公开分享的资源。这是个危险的信号。如何处理?在PC端开发小组尝试了私密分享,但问题是私密分享后系统自动生成了4位密码。我屡次尝试后也没有成功找到模拟输入密码的方法,不得不放弃。在茫茫网海中搜索许久后,终于得知若使用手机APP中分享,即可生成无密码的私密链接。本人使用的是安卓百度云3.1版,现工作正常。

关于百度盘直连的实现,之前在百度云存储直连看正则表达式的作用一文中也有提到过。今天放出的是ANN系统下载核心中整合过的代码段:

function bdpandl($shareid, $uk) {
    $str = file_get_contents ("http://pan.baidu.com/share/link?shareid={$shareid}&uk={$uk}");
    $down = str_replace('\\', '', $str);
    $re1 = '(dlink)';    
    $re2 = '.*?';
    $re3 = '((?:http)(?::\\/{2}[\\w]+)(?:[\\/|\\.]?)(?:[^\\s"]*))';
    $re4 = '(")';
    $re5 = '(\\})';    
    $c = preg_match_al ('/'.$re1.$re2.$re3.$re4.$re5.'/is', $down, $matches);
    return $matches[2][0];
}

图片方面,由于ANN主站使用了SAE服务,所以服务资源显得尤其精贵,我们不能将大流量的图片服务部署在SAE的Storage或其他上面。因此ANN使用了AFS(AllNippon.Net File System,好吧确实是山寨的)进行图片存储。AFS部署在VPS上,目前看来这款超低价VPS性能和速度还是挺给力的,基本没什么严重延迟情况发生,访问体验挺流畅的。


目前来说,ANN的文件存储方案就是这样,今后会做出怎样的调整?AFS有没有分布式打算?如何备份?还不得而知。我们知道的仅仅只是,会越做越好。

Archives Tip
QR Code for this page
Tipping QR Code