主题:【原创】云里雾里的云计算 [1] -- 邓侃
>德国人的钥匙很有意思,办公室的钥匙,同时可以打开大楼的门,以及公司的门,但是不能打开隔壁办公室的门。隔壁办公室的钥匙,也可以打开大楼的门,以及公司的门。所以,德国人的钥匙和锁,是有层次的。
正在琢磨这个事情……
目前确实是个难题,到底有没有解现在都说不清楚,分词的流派也是过江之鲫,正着反着靠词库不靠字库自学习的都有,但是不管“XX更懂中文”,下面这个经典的句子估计都够这些算法喝一壶的
乒乓球拍卖完了
怎么分?
乒乓球/拍卖/完了
乒乓/球拍/卖完了
都对?
羽羊在做自己公司网站的时候费了牛劲折腾中文分词,后来还是放弃了,功力差太远,找了开源的方案了事。
前段时间和一个哥们醉酒扯淡,聊到google和微软之争,此君语出惊人:微软的武器库多着呢,只不过还没找着用处,不信看看微软拼音和谷歌拼音,半吊子整句输入和近似完美的词库,高下立盼,google的卵蛋捏在别人手里呢。
此话一出,羽羊醒酒大半,此君人事不省。。。
需要Mainframe的公司,价格对他们不是问题。
对价格敏感的公司,又不需要Mainframe那样的功能。
邓兄能否聊聊云计算的目标客户呢?
站内检索,类似gadgets的,不新鲜,google,百度,还有拉拉杂杂一堆搜索引擎都在趟这个混水,不过靠这个挣钱估计都没有想过,无非是现有产品的子集,多他不多,少他不少,换句话说,搜索的时候加上一个site:?的条件限制以下结果而已。
至于企业检索产品,恐怕作为一个产品出现,有更为具体的要求,大概猜一下,应该
1、整合能力,对于现有企业内部广泛存在的信息孤岛和乱七八糟的文件格式应该有强大的适应和整合能力。
2、查全率,internet搜索查全率的要求比不上企业检索,google一下,10页之后就没多少人看了,企业检索,结果集要小得多,查全率也要高得多,老板的公文查不到,会出乱子。
3、安全性,企业资源分级取用是天然需求,R&D和Sales的搜索请求是应当被区隔的。
4、经济性,搜索对于计算和存储能力的渴求几乎是无限的,但是在企业内部,则是有限制的,google那种玩儿法,没多少企业受得了。
5、简易性,主要是针对运维和二次开发,作为企业的成本部门,IT的能力一般是实际低下的,但是往往也是被高估的,一套复杂的方案,运维和二次开发需要的人工成本甚至比产品购买成本还让CFO抓狂。
从现在业界的角度看,严格意义上的企业搜索产品,确实是稀缺的,企业对于这样的产品,也是有需要的,但是就像爱迪生之前的时代一样,广大人民群众对于照明的需求被行业的发展抑制了。
等到讨论Amazon的做法时,说说云计算的目标客户。
hansens关于搜索的瓶颈确实让我耳目一新,细想想确实如此。信息越来越海量,光靠1,2个关键词google还真没法确定我到底想找什么,更别提分析有歧义的语义了。
不过搜集个人数据,针对性给你答案有些打法律的擦边球,政策风险太大。国外对隐私的重视程度太高,一旦有人告你一票,高院一句话就把你打回原形了。那么换成搜集企业数据呢?
通过搜集企业产品库,业界技术发展,市场需求分析,人才流动等等信息,google是不是可以给企业提供市场分析报告,包括目前市场动态,未来趋势等等。不过这属于咨询领域,没听过google有涉足这个的说法啊。疑惑ing...
是解决办法。
其实用关键字在互联网信息量在一定限度之下时还是很有效的,但是信息量越来越大就有问题了。
不如,用“主板”做关键字Google就无法判断你到底是要找电脑的主板信息还是证券的主板信息。
现在用了多关键字,但是多关键字也会遇到信息越来越多,一些小众的信息会淹没在大众的信息之中的问题。
从这个方面考虑自然语言理解技术是改进方向之一,但是这条路困难重重,曙光还比较遥远。
另外一个方面就是结构化知识,就是发现信息之间的内在关联,可以更准确的处理、检索信息。但是这个方向对于前面说的知识爆炸问题还是无法解决。
最后一个办法就是,让Google知道你的偏好,比如你是个IT工程师,那么你检索“主板”八成是找电脑主板,另外如果你多次检索华硕的T2P4,那么以后你再检索T2P4的时候,Google可以针对性的把更新升级信息都推送出来。这个也许就是终极解决办法。
(纪念下我的第一块主板ASUS T2P4)
如果这个办法由于法律的原因无法实施,那么云计算在一定范围之内也许可以达到类似的效果,比如某企业的员工利用企业的云检索相关信息,那么显然Google对该用户可能的检索范围会有更多的理解。
另外以方面,企业用Google的云建立信息,也会有利于Google更好理解企业发布的信息,便于形成所谓的结构化知识。 这方面从Amazon的云和Google的云的区别上也许可以看出倪端。
Amazon的云就是一个纯的Linux虚拟机,你可以有Root权限,并且做任何你想要做的事情。
Google的应用引擎(App Engine)实际上是一个Linux运行环境,但是没有写文件的权限,如果你想保存数据,必须使用谷歌的数据库。而且实事上你必须用Python环境来实现Web应用,用Google的数据库做任何储存。这也许反应了Google对数据的野心。
【8】云中说禅
云计算是一个大买卖,各大公司不会眼睁睁看着Google吃独食。IBM,Yahoo,Amazon,Microsoft等等相继跟进,都在宣传自己的云计算方案。
Google致力于云计算研究与实践,已经有十年了,技术积累厚实,于是说话底气足。其它公司嚷嚷归嚷嚷,总得拿出点真材实料,否则靠什么争取客户?从头开始研究开发当然是来不及了,于是IBM也好,Yahoo也好,Amazon也好,纷纷借Open Source的Hadoop,作为自己切入云计算市场的基石。
看一看IBM的Blue Cloud方案,以及Amazon的EC2方案,除了Hadoop以外,它们还用到了另一个开源软件,Xen。Xen是Zen的异体词,Zen的意思是禅。
计算机技术和禅有什么关系?
看看Lucent公司的Logo。第一次见到这个logo的时候,不解。请教老美,老美很吃惊,说,“这是禅啊,你们东方的东西。”
这个用毛笔画出来的圆圈,英文名字叫Enso。这个符号来自日本,通常被当作禅的标记。凭心而论,日本在世界范围内弘扬东方文化,是做了很大贡献的。譬如西方人对禅的了解,主要来自于日本的推介。
Lucent Logo
Courtesy http://www.techshout.com/images/lucent-logo.jpg
1974年,美国出版了一本名字很古怪的书,“禅与摩托车维护的艺术:对价值的探求(Zen and the Art of Motorcycle Maintenance:An Inquiry into Value)”。这本书的主线是一伙人骑摩托,17天环游美国的游记,其中穿插了大量的哲学讨论。此书出版后,受到极大欢迎。
2003年,剑桥大学计算技术实验室的几个人在合写一篇论文,文章写得差不多了,但是还缺一个标题。其中一位开玩笑地建议到,“要么就叫Zen and the Art of CPU Cycle Maintenance吧”。众人大悦。
最后论文定名为“Xen and the Art of Virtualization”。同时,把整个项目定名为Xen。
Xen是做什么的?
用一句话来概括,Xen的目标,是如何在一台计算机的硬件上,同时运行多个OS。什么情况下需要在同一台计算机上同时运行多个OS?
举个例子,现在电脑病毒日益猖獗。纵然有卡巴斯基等等解药,但是道高一尺魔高一丈,病毒屡禁不止,而且毒性越来越烈,常常危及整个OS。
有人出了一个主意,在同一台电脑的硬件上,同时运行多个OS,把一些基本的应用放在一个OS上,其它的应用留在其它OS上。用户切换OS的方式,犹如切换窗口一样。如果一些应用染上了病毒,最多把该应用所在的OS重装,而不至于影响其它OS,尤其是不必担心硬盘上重要的文件遭到破坏。
为什么Xen与云计算有关?
在云计算平台上运行的程序,来自不同的客户。不能保证这些客户程序没有bugs,也不能杜绝恶意的破坏性程序。如何保证一个客户的程序,不至于破坏其它客户的程序运行,不至于损坏其它客户的文件?
最简单的办法是给不同的客户分配不同的机器,井水不犯河水。但是这样的做法不能高效地使用资源。美国的客户的使用高峰时间,恰巧是中国客户的夜间休息时间。如果分别给美国中国客户分配不同机器,美国高峰时间,美国客户的机器忙不过来,而中国客户的机器却在闲置。
所以最理想的做法,是让不同客户共享计算机硬件,但是各自拥有各自的OS。这样,既高效地使用硬件资源,又保证井水不犯河水。
Xen提供了实现这一目标的技术解决方案,所以借着云计算的东风,Xen大热。
The structure of a machine running the Xen, hosting a number of different guest OSes.
Courtesy http://www.freesoftwaremagazine.com/files/www.freesoftwaremagazine.com/nodes/1159/slide2.jpg
上图描述的是Xen的体系结构。最底层的是计算机硬件,包括CPU,RAM,硬盘接口,网卡,外设数据总线等等。
硬件层之上,是Xen hypervisor层,包括总控界面(Xen Control Interface),虚拟CPU,虚拟RAM,虚拟硬盘,虚拟网卡等等。
在Xen层之上,是各个OS实例(OS instances)。其中最左边的OS实例很特别。在启动Xen的时候,最左边的OS实例,Domain0 on XenoLinux,自动被启动。Domain0里运行着Xen Control Software,这个软件控制着各个OS实例的启动,终止,以及监控其运行情况。
Domain0对于其它OS实例的控制,是通过Xen层中Xen Control Interface来实现的。而这个Xen Control Interface只对Domain0开放。其它OS实例只有被管理的义务,而没有管理其它实例的权力。
每个OS实例都被分配一套虚拟的CPU,RAM,硬盘和网卡。每个OS实例使用这些虚拟的设备,与通常的OS并无不同。
多个OS实例共享CPU的实现,是通过两套机制来完成。当多个OS实例请求使用CPU,这些请求被放置在hypercall队列里。Xen hypervisor根据预先设定的优先级政策,在hypercall队列里挑选出下一个被执行的请求。请求被处理完了以后,Xen通过异步的事件响应机制(async event-callback handler),把结果反馈给相应的OS实例。所谓虚拟CPU,说白了就是这两套机制的interface APIs。
在启动一个新的OS实例的时候,Domain0会给它分配一部份RAM。如果实际运行中,需要更多的RAM,Domain0会增加这个OS实例的配额,直至最高上限。各个OS实例都有自己的RAM区域,彼此不相互干扰。从每个OS实例的眼中看,似乎自己的RAM区域在物理上位于相邻区域。但是事实上不是这样。这种善意的欺骗归功于虚拟RAM。虚拟RAM不仅记录着物理RAM的分配和使用,而且负责地址的翻译等等工作。
至于Disk IO和Network IO的读写请求,被放置在一个环状队列中,通过Consumer-Producer锁机制进行异步操作。
每个OS实例配备着一个虚拟硬盘,这个虚拟硬盘记录着每个OS实例所占用的物理硬盘的空间。每个OS实例只能看到分配给自己的硬盘空间,而不能看到其它OS实例的硬盘里的文件。而Domain0是例外,它能够看到整个硬盘系统中所有文件。
Xen的详细描述和分析,可以读前面提到的那篇论文,“Xen and the Art of Virtualization”,http://www.cl.cam.ac.uk/netos/papers/2003-xensosp.pdf。
Xen开源软件的下载,可以去Xen网站寻找。http://www.xen.org/
VMWare infrastructure
Courtesy http://www.topgreat.com.tw/WebMaster/uploads/images/1_images/l_070508152747.jpg
Xen并不是横空出世的新创意。计算机界往往出现工业界领先于学术界的局面,Virtualization技术就是这样一个例子。早在1998年,硅谷 Palo Alto出现了一家公司,最早实现了多个OS共享一台计算机的设想。这家公司的名字叫VMWare,现在卖给了EMC。 http://www.vmware.com
Xen与VMWare在技术上有很大相似之处。从Xen的论文看,Xen的技术似乎比VMWare有更多优势。但是从产品系列的完整,以及多年来的实际运行经验来看,VMWare似乎能够提供用户更可靠的稳定性和售后服务。
amazon的云计算是基于自己多年研究的结果,好像并没有使用hadoop来构建。当然,它的ec2和s3都可以整合hadoop,但是amazon更侧重于基础设施,换句话说,你可以在amazon的云计算上把hadoop作为一个应用来跑。
另外,从我个人的角度来看,google积累了十年,amazon又何尝不是十年磨剑?将它自己的基于超大规模电子商务而构建的infrastructure拿出来组成自己的云计算平台。并不是只有google才有海量数据的运营经验的。
只能说,美国这片,牛人太多,华山论剑,云计算的王者花落谁家还未成定论,从市场的角度看,amazon目前处于领跑状态,要领先于google,ms也正虎视,紧跟不舍.回头蒸个包子。
花盼大作。
Amazon的确是云计算在商业应用方面目前做的最好的。
但是在infrastructure方面,它有什么独特的地方?愿闻其详。
citrix收购xen以后好像跟MS走得很近,不知道以后会变成什么局面
Xen更简洁高效的虚拟环境,似乎更适合云计算。不过对Xen不了解,回头看看相关文档去。我一直梦想可以在我的笔记本上同时运行XP和Linux,而不是在XP上运行Linux。
我们这边开发的时候,将一台Dell1950服务器分成1+3-4,即一台控制机和3-4台应用机,根据测试Xen本身只消耗了7%的硬件资源;
在生产环境上我们也用了Xen,1+2模式,性能和稳定性都不错。
还是有很多地方的技术细节的。比如:
1.虚拟机上面运行的OS,在执行进入特权层指令的时候,虚拟机是如何处理的?
2.虚拟RAM和OS的地址分配的相同和不同有哪些?
3.新的CPU架构,对虚拟化的支持是怎样的?
4.Xen的那张图上面提到,物理的CPU可以是非x86架构的,那么虚拟出来的x86的架构是如何实现的?性能如何保证?
5.把问题4反过来问,现在物理CPU不用x86的一般是冤大头,因为要花多好几倍的钱去买同样的性能。那么在物理CPU架构基本成为定论的时候,如何提供对其他架构上面的OS的支持?比如在云彩里面如何塞进去一个AS400?是否要象当年consulting公司的面试答案那样:打开云彩,把AS400塞进去,关上云彩。
6.最有意思的是:假如云计算在20xx年成为主流,我们在20xx+y年以后,才会看到第一个为云而写的病毒?
这些都是技术上面可行的东西,问题1~5都是有现成答案的,6只是技术上面可行。