从当前流行的分布式技术中获益

23 篇文章 0 订阅

从当前流行的分布式技术中获益

========= 前言 =========

最近几个月,一直在筹备新的ComEgg的需求。新需求的目标,除了是基于SCS(Simulate Cell System)和BMOP(Binary Management Oriented Programming)的思想之外,还要切合实际应用,其实就是能够找到一个领域进行实际的应用,从而进行明确的、有方向的完善。

对于SCS和BMOP思想,都是比较理论的东西,不是问题,问题是如何把这些理论转化为实际的、可以被大众接受的应用。为此,我对一些当前比较流行的分布 式技术进行了学习,以期从其中抽取一些对实现SCS和BMOP有实际意义的东西,结果让我非常满意,获益不浅。下面我就近期学习的部分分布式技术进行简单 的理解性说明,也会补充对SCS和BMOP的部分实际意义。

========= 技术之一:Erlang =========

你可以把Erlang看作是类似Python的语言平台,有自己的虚拟机,但其实它是出自80年代爱立信实验室的产品,当时的应用主要集中在电信应用领域,所以使用Erlang和OTP,我们可以开发出很多大并发而且可靠性有5个9(99.999)的电信级平台应用。

在当前,云计算(远景)红火的时代,Erlang似乎又开始准备在除电信以外的其他领域大展身手。

Erlang是函数式的语言,类似Lisp。很多需要面向对象和过程语言,如C/C++、Java,写很复杂代码来实现,用Erlang可能只需要很少的 几行代码就可以搞定。复杂的字符串运算在Erlang来看,也是异常的简单和直观。原来SCS的RDP是面向过程和面向问题式的,Erlang和Lisp 这种函数式的方式,是下阶段要引入的,这种方式更能体现SCS的生命思想。

Erlang和Python一样,可以作为其他语言开发模块的粘合剂,这样,可以用C/C++等语言开发高效的模块,然后在分布式平台上用Erlang来施展应用,这是BMOP的初级目标之一,其实在当前SCS的版本已经实现了RDP对C/C++模块的整合。

另外,Erlang对并发性的支持也非常好,除了可以很方便的开发大并发量的应用,而且还可以把这些并发分配到不同的CPU以及不同的机器上,这也是为什 么我相信Erlang会在云计算阶段的分布式应用上大展拳脚的主要原因。另外除了并发,Erlang还能对这些大量的并发进行很好的冗余容错,这也是能够 达到5个9(99.999)电信级应用的原因。这里说的两点,都是ComEgg必须要融入的。

其实Erlang也是普元的一个朋友在看过我的SCS实现,并且得知我准备新版本的需求时,建议我学习的。在这里我要谢谢他,给了我很多帮助。Erlang是这期间我花时间最多的一个学习项目,也会是对下阶段SCS实现帮助最大的。

========= 技术之二:虚拟化-Xen =========

最初对虚拟化的理解,无非是各种类似在已有OS作为Host的基础上,安装新的操作系统作为Client,然后自己在Windows上装了某个虚拟机,然 后安装了Ubuntu,然后感觉——哦,效率这么低,不过如此。促使我真正认真正式虚拟化技术的是Amazon的EC2。当我注册了EC2的用户,然后看 到Amazon实现对了在Web上可以定制主机的性能后,我就开始疑惑,这是如何实现的,如何保证这些定制的主机有指定的性能呢?然后我就顺藤摸瓜找到了 Xen,然后看了相关的一些文档,才知道,原来很多硬件和软件厂商都在发力虚拟化,比如Intel、AMD、Microsoft、VMware、IBM 等。

虚拟化,我目前所知,有两种,一种是通过纯软件来模拟实现硬件的虚拟机,也就是我最初接触的那种,效率损失比较大,至少20%损失,我个人觉得在实验中应 用意义较大,在现实应用中意义不大。还有一种是在硬件上支持的虚拟化技术,主要是基于CPU支持的各种虚拟化技术,Intel和AMD都提供了相关的技 术。基于硬件的虚拟化技术效率损失很小,一般在2%~20%之间,应该来说,这种虚拟的系统,和对应真实的硬件环境的效率相差不大的。这样我们就能在一些 多核的服务器上,同时构建多个系统,一方面更大限度的利用了机器性能;另一方面也降低了成本和能耗。

无论如何,我觉得虚拟化是以后分布式发展的基础元素。更好的虚拟化,我们才会有更灵活多变的分布式算法。所以,我相信,以后ComEgg会更多的和虚拟的机器一起工作。

========= 技术之三:Map/Reduce-Hadoop =========

最初接触Map/Reduce,还是因为Lucene。因为当时要开发自己项目的搜索引擎,然后找到了开源的、基于Java的Lucene全文检索技术。 当时在考虑如何同时在多个机器上建立索引,然后索索的时候从多个机器上同时获得结果并且在统一整理后呈现给客户时,发现了Hadoop这个项目,然后知道 了Map/Reduce这个思想。

准确来说,Map/Reduce应该是整个分布式发展中最朴素的思想:就是把一个计算分成多个部分,然后让每个部分在分布的独立的计算机上运行,然后把每 个计算机的结果进行汇总等,这也是任何有一定计算机基础的人,对分布式这个概念最初的一个印象。当Google在全球范围内驾驭10多万台机器工作时,这 个朴素的分布式概念,就随着Hadoop这个开源,被特殊的放大和提升了。

Map/Reduce对于一些新系统的云平移是很有意义的,但是对一些已有的系统而言,则必须按照Map/Reduce重写方可。对SCS实现的系统而 言,Map/Reduce完全可以在之上运行,不同的是,在SCS的Map/Reduce对老系统而言,一样有意义——那些已有的系统可以更容易的平移到 云上了(BMOP可以让老系统焕发新生)。这个是SCS的新需求。

========= 技术之四:CouchDB =========

在Linkedin上,有一天一个老外问我,SCS的数据库是如何实现的。说实话,使用的还是现有的关系数据库,当前实现的版本就是使用的MySQL。在 后续的开发中,我还是坚定使用当前已有的数据库,包括关系数据库和现在开始流行的文件数据库,比如CouchDB。但是使用的方式是BMOP的,也就是在 SCS中,多个相同或者不同的分布在不同点的数据库,同时支撑一个应用。

CouchDB也是我最近了解的,它和Lucene的Index类似,是基于文本的数据库,可以被Javascript直接操作。

========= 技术之五:CDN(Content Delivery Network) =========

如果你有一个网站,全国的用户都访问,而你不想或者没有能力(技术和财力)自己在每个运营商机房都作映像然后通过DNS智能解析来让用户访问到最快的服务器,那么你可以找CDN服务商来帮你完成这些事情。最近才知道CDN,网上一找,发现我们国内已经有了不少的CDN服务提供商和用户,类似Sina等大型网站也都早已是CDN的用户了。

我自己的理解是,本质上CDN只能对那些静态的内容,比如静态网页、图片、视频等,有显著的效果;对于动态的网页,其实效果没有太大的提升,但是从商业上,很多CDN提供商,已经基于私有协议代理访问等技术开发了新的CDN服务,能够位很多动态的网站提供高质量的服务。

CDN,对于SCS而言,并没有太多的借鉴,这里之所以提到,是因为CDN很可能是SCS以后的应用方向之一。

========= 尾声 =========

有了上面的学习,我想,我可以开始新版本ComEgg的设计工作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值