星期日, 十月 15, 2006

Gdrive客户端泄露带来了什么信息?

10月13日,Google Blogoscoped的Philipp Lenssen发布消息《Google Gdrive Client Leaked(Google Gdrive客户端泄露)》。这让每个人关心Gdrive的人都感到兴奋,在前面讨论Foldershare的文章里,我就表达过对目前Gdrive相关信息太少的遗憾。

那么就让我们看看Philipp带给了我什么。
首先是Platypus(鸭嘴兽,Gdrive客户端的名字)运行的截图:
首先我们发现Philipp使用Windows,其次我们发现Philipp的任务栏在左边,他的机器上有WAMP,Win Media Encoder,BrowserPool,Audacity,他用德语……

Oh,I am sorry。我们不是在做狗仔队啊,我们是在分析Gdrive。

好,首先我们发现这似乎是第一个有吉祥物图标的Google服务(也可能Google习惯在内部测试的时候用吉祥物标志,Who知道呢?),然后我们发现它的使用方式看来跟Foldershare很像,都是一个需要登陆的客户端,在托盘显示一个图标。

然后我们看下Platypus的帮助(Windows版),

如何进入我的Gdrive?

双击你的任务栏托盘里面的 图标,或者访问“我的电脑”里面的G:盘(这点颇为有趣,一定是G:盘么?)。

你的G:盘上的每个顶级目录都对应于Platypus的共享。缺省情况下,你只能看到你私有的Platypus共享。它的名字与你的LDAP用户名相同。

如何挂接其他的共享?

右键点击Platypus的托盘图标,选择“Connect Share”(连接共享)菜单。你可以输入你可以访问的其他Platypus用户的名字(如,jeske),或者公开的共享的名字(入,test1)。

在你挂接一个共享后,Platypus会开始在共享和你的硬盘之间进行同步,下载它包含的所有文件。Platypus会在后台进行同步,所以你可以如常的继续使用你的电脑。

如果你想为你的团队,邮件留言板,创建新的共享。指定一个共享名,指定读写权限即可。

如何在Web上访问我的文件?

列目录: http://platypus.corp.google.com/sharename
特定文件: http://platypus.corp.google.com/sharename/foldername/filename

如何和其他的Googler共享文件?

访问Web界面,选择设定页。

如何从Platypus共享中添加/修改/删除/文件和目录?

你私人共享对应的目录和和你电脑里面的其他目录没有什么区别,你可以同等对待。你连到网络的时候,你的文件的改变会自动发送给服务器。如果你在离线情况下改变它们,你下次重新连接的时候服务器会自动更新。

如何帮助改进platypus?我有20%的时间可以用(Google员工的20%兴趣时间)。

好!我们非常欢迎您在工程,界面设计和市场方面的帮助。写信给Justin如果你可以做一些志愿工作。或者你可以通过使用和提交bug的方式帮助platypus进步。

我可以在platypus共享内保存什么数据?

我们鼓励用户保存任何文件,除了敏感数据以及与用户协议相矛盾的文件以外的任何文件,包括你的Office文档,照片,个人笔记,。


Linux版本的帮助除了一些操作细节以外,大同小异,这里就不详述了。最值得一提的是,我们发现从操作方法到运行模式等等,platypus和Foldershare惊人的相似。

然后,我们看看Philipp提供的文件列表:
我们发现,其中有7个Jar文件:
  • commons-codec.jar
  • commons-logging.jar
  • httpclient.jar
  • jlansrv.jar
  • program.jar
  • sqlite.jar
  • util.concurrent-1.3.2.jar
5个dll文件:
  • sqlite_jni.dll
  • swt-win32-213.dll
  • TrayIcon12.dll
  • win32NetBios.dll
  • win32Utils.dll
5个exe文件:
  • autoupdater.exe
  • devset.exe
  • platypus.exe
  • processcleanup.exe
  • uninst.exe
3个vbs文件:
  • configure_adapters.vbs
  • exec.vbs
  • modify_fw.vbs
其中sqlite_jni.dll是sqlite的java本地化调用接口dll,swt-win32-213.dll是swt的Java本地化调用接口dll。(sqlite是广泛使用的一种嵌入数据库,swt是Eclipse的界面库,原由IBM开发,后开源捐献给Eclipse组织)

具体看那些Jar文件我们发现,他们涉及到了国际化编码、日志、http协议通信、数据库等等。而同时这个客户端是跨平台的,所以我们可以确定的说,这个产品主要是用Java写的。program.jar应该就是主程序。platypus.exe应该是一个本地包装。TrayIcon12.dll、win32NetBios.dll和win32Utils.dll应该是本地化的一些补充(因为在一些细节上,java跨平台没问题,细节却不够完美,或效率不足)。*.vbs文件是一些事务性的脚本,在linux版本上应该是shell脚本或者py脚本(可惜linux版本没有泄露,所以我们无法确切的知道)。

标签: , , , , ,



星期一, 九月 18, 2006

每个人都需要个版本服务器-也谈p2p海量存储

从我知道cvs那个东西开始,我就喜欢死这个东西了。只要你敢用,他比任何的备份工具都好。什么都能装,保证能同步,还能回溯到历史某一点。我大半文件都是用这个存的。其实解决同步问题,只要你给自己建一个cvs/svn的服务器,就都ok了。

说起来这个,是看到美人她爹tinyfool一干人等正讨论p2p的存储问题。

从tiny的叙述中,我们可以看到,他对存储的最大需求是“备份和同步”,没错,这正是存储服务的主流。如果仅仅是共享一些mp3,照片之类,随便找个p2p软件就能作到了(emule就很好)。用这种存储服务的意义并不太大。

这就回到了标题所说,每个人都需要个版本服务器。假设基础文件所有人都有,只保存更新信息,那么所需要存储的容量立刻就大规模下降了。如果采用这种方式的话,我们需要的就不是一个类似社区的服务,而是一个类似email的工具类服务了。这里面,p2p的作用是进一步提高稳定性和降低成本。allmydata提供的10:1的服务就很好 (提供10M硬盘空间给别人用,自己得到1M虚拟存储空间)这种交换模式,和过去的区别是“你帮助别人存储的文件 ”对于你自己是否有用。emule方式共享mp3或是电影,是对你本人有用的,而allmydata的方式,则对你自己未必有用。emule是p2p的方式共享文件,而allmydata是共享空间。换个通俗的话来说,也就是,你并不知道别人在你共享出来的空间上放了什么,也基本上不可能去使用这些文件。

在这样的模式下,可以用这种10:1的方式达到大量冗余,多点存放的方式。如果再配合一些地理信息和统计学方法,就可以计算出来对于“你”所在的网络情况,谁的硬盘最适合存在你的资料,配合中央服务器,就更稳定了。这样一个基本的网络框架就算出来了。

综上所述,我得到2个结论:

1 这种存储不同于emule共享,文件本身对存储者不完全有意义。(有一些有意义,但大部分人可能没意义)
2 文件更新信息比文件本身更容易被频繁的读取。这些更新信息将是这个网络负担得主要流量。

最后说说我的希望:

google有足够的技术可以完成这个,无论是中央存储,还是同步工具,或是探测哪些机器适合保存你的资料(数据统计和挖掘技术)都是他的强项。

标签: , , , ,



星期日, 九月 17, 2006

Foldershare以及P2p在线存储服务


看了彼岸在线存储:现实还是明天?一文之后,想把我对Foldershare的一些理解写出来与大家分享。Foldershare目前是微软Live战略的在线存储部分,Google与之相对应的是服务是GDrive,可惜我们现在能得到的GDrive的信息太少了,无法进行比较。



我原以为Foldershare是一个垃圾


最早知道Foldershare是来自Keso的邀请信,之前我从来没听说过这东西,还以为Keso中了什么流氓软件的招呢。Google了一下才知道,这是微软2005年收购的一项基于P2p技术的文件共享服务。然后,我就问Keso文件共享怎么P2p呢?要知道两个人之间的文件传输本来就是P2p啊?这有什么特殊的呢?难道QQ的文件传输是先从一方传到服务器再传到另一方的么?为什么别人都不说他们的文件传输或者共享服务是P2p呢?莫非微软现在也学会了我国某些人才写论文的方式了,文件传输就叫P2p?

简单的探讨了下,我们估计这可能是用服务器端保存和用户之间支持传输相接合的方式来进行文件共享的一种服务。如果是这样,文件共享的两端就不需要同时在线,这就比传统的简单的文件传输服务方便多了。于是我们进行了一项试验,Keso用Foldershare共享了几百首Mp3歌曲出来,我来接收这些文件。传输到一半的时候,Keso下线,然而出乎意料的是传输立刻停止了。这说明这项服务并没有提供任何的服务器端存储。那么问题来了,这样一个东西有什么用?或者说,他跟QQ传输文件的方式有什么区别?微软为什么会购买这么一个东西呢?真的是钱多得烧的么?我不知道为什么。

后来发现它还有点用处

本来,我已经准备删除这个看不出来有啥用处,但是会浪费我的空间和Cpu时间的软件了。但是我终于发现了它的一个用处,就是用来在我的办公用机和我的家庭电脑之间同步数据。

我在家里和公司各自使用产权属于我自己和我的老板的两台电脑。而与此同时,我是一个几乎24小时不离开电脑的人。相信很多跟我类似的人都会有跟我相同的烦恼:下班了,程序没写完,但是厌烦了办公室里面的污浊空气,准备把工作带回家继续完成,那么就要把代码打包,发到自己的邮箱或者上传到某个服务器,回到家里,打开打包文件继续工作;睡前把所有的修改打包,传到自己邮箱,然后第二天早晨在公司打开文件继续工作。或者是其他有两台电脑的人,往往都会被文件同步的问题弄得焦头烂额。实话说,我认为这才是笔记本越来越受老板和打工仔们一直欢迎的原因,因为可以把一切繁琐的同步步骤抛到脑后。

而Foldershare正好有这么一个功能,在两台电脑之间同步目录。非常方便,只要你在两台机器上面设置好,然后你就什么都不用管了。你在A机器对文件做了任何修改,Foldershare立刻记录在案,如果B机器在线就直接把修改发送给B机器,否则就B机器在线的时候自动完成同步。当然,既然他是纯粹基于P2p技术的,那么他就有一个无法解决的问题,那就是A和B必须同时在线,才会进行同步。我采用了最无耻的办法,那就是让公司的电脑24小时开着(当老板的看不到这句话,你看不到!!!)。

前些日子我换公司,因为我一直以来把所有自己的文件用Foldershare管理,所以离职的时候我没有做任何备份工作,直接把硬盘清空就走人了(私人文件,公司的交接早做好了)。到了新公司以后,我建立我的工作环境(包括大量的技术电子书,私人的代码库,趁手的开发辅助工具等等,共2G),仅仅花了一天时间。

然而,核心问题还是没有改变,如果我们需要在两台不能同时在线的机器之间同步数据,那么Foldershare岂不是又没有用处了吗?

Web上面的共享目录岂不是办公必备

公司里面有很多文档是需要用Doc格式或者Ppt格式的,而我们的文档共享一直是用Google Groups,这就变得有些不方便。如果我对某个文档进行了修改,我只能再把它传到Google Groups上去一次。而每个同事也需要重新从Google Groups下载这些文档。这着实让我感到很烦。

于是,我想到让每个同事都安装Foldershare,一切就变得简单了。每个人在本机修改文档即可,Foldershare会自动把更新发送到每个人的电脑里去。

说到这里,也许有人会说,其实这根Windows的共享目录有区别么?呵呵,你问的对,其实用起来一点区别都没有。唯一的问题在于,那只能用在局域网,而现在的公司,现在的团队运作往往已经不局限于局域网了。(VPN当然也能实现这类需求,但是从成本来看高下立判,当然这里不是诋毁VPN,大家的用途不同嘛。)

我的灵光一闪

突然,我感觉我明白了P2p在线存储的真谛了。



左图是传统的在线存储业务,所有数据保存在服务器端,客户机修改了数据,需要传送到服务器。然后所有其他的同步客户机从服务器得到这些改变了的数据。这样的服务器基本不可能成功,因为对服务器端的带宽和存储能力需求太大了。这就是我们见过形形色色的在线存储服务,而多数不是苛刻的限制用户可以使用的空间大小,就是慢的让人无法忍受。

右图是基于P2p的在线存储业务,所有的数据保存在客户端,服务器只保存更新日志。客户机修改了数据后,更新服务器的同步日志。服务器在其他同步客户机上线的时候根据同步日志,来协调客户机之间的数据传输。这样服务提供者就无需支付昂贵的空间和流量成本了。

当然这也带来了新的问题。如果我需要在A和B两台机器之间同步数据,我就需要它们至少在某一个时刻是同时在线的,这个时候同步流程才能启动。而对大多数需要同步的用户来说,这可能是一个不可能逾越的障碍(除非他们不在乎电费以及让机器24小时开着可能带来的火灾隐患)。

就像解决平面几何问题经常会做的那样,我们引入一个辅助线。如果现在有第三台机器可以永久在线,或者在你的两台机器不能在线的时候它可以恰好在线的话。所有问题就解决了。这第三台机器在传统的在线存储中实际上就是服务器,而在这里我们发现,他可以是任何一台客户机。那么,为什么会有人肯提供这第三台机器呢?

P2p虚拟存储空间市场

现在考虑如下的场景,我现在需要第三台机器,在我短暂的两台机器都不在线的切换期帮助我保存我的共享数据的更新,而不是让我的某一台机器24小时在线。那么,我可能愿意用金钱购买这个临时存储,或者用我的机器在线期间帮助别人提供同等服务作为交换。这个时候,就产生了一个虚拟存储空间的交换市场。这样,你就可以把你的空闲硬盘空间拿出去换钱了。当然,这种市场需要大量的用户参与才取得比较好的效果。

而基于P2p和同步协议的在线存储方案,还能带来另一个变化,那么就是如果服务提供者想自己提供空间服务,他的存储单元配置方式也变得非常简单。

标签: , , , , , ,