Google App Engine的“阿基里斯之踵”

2010-11-03 22:42

Google App Engine的“阿基里斯之踵”

by 吴朱华

at 2010-11-03 14:42:31

original http://peopleyun.com/?p=969

  虽然在Google App Engine在最近一两年独领云计算PaaS领域的大旗,但是我在经过长时间对Google App Engine的学习和实践之后,发觉其现有的实现存在很多不足,而这些瑕疵有可能成为其的“阿基里斯之踵”,下面将具体分析App Engine在哪些方面存在问题。 App Engine的不足 主要集中在下面这三个方面: 设计之累 虽然App Engine在很多设计方面有其出彩和领先的地方,但是在App Engine中也采用有一些不恰当的Google式设计,虽然Google式设计对于类似Google搜索这样需要的海量计算和存储能力的应用而言是非常适用的,但是对于追求反应速度,而不是海量能力的PaaS平台而言,不是特别适宜,就像Google院士Jeff Dean在一次演讲所说的那样:“为了增量做设计,但不为无限做设计”,而在App Engine中,却为了一些不存在的Google式的需求作了Google式的设计,这方面的例子主要有两个: 在数据存储方面,使用了主要以存储海量数据著称的BigTable,虽然这样能保证其应用能在App Engine上存储海量的数据,但是在反应速度(Response Time)方面有一定的牺牲,特别是不支持在内存中预D读取数据的情况下。可惜的是,对于大多数在App Engine上应用而言,它们更看重反应速度,而且类似这样抱怨在App Engine的官方邮件列表中比比皆是,其中也包括对Memcache速度的不满,国外一位博客作者在谈到App Engine的Memcache时,他有这样一句评价:“这个Memcache不是我们所熟悉的那个Memcache”。 支持跨洲多数据中心同步,虽然多数据中心同步是一个不错的实践,但是由于光速的原因,使得在大洲之间传输数据的速度非常慢,而且成本很高,更重要的是使得整个数据存储方面的架构的复杂性一下子提升了很大,而且有可能使本身已经非常缓慢的速度雪上加霜,对于这个用户不是特别关注的问题,耗费太多的精力。如果由我来设计的话,应该让用户选定具体应用所在数据中心位置,而且这也是大多数用户所推崇的,虽然这种设计不是Google所倾向的。   虽然对于有些应用而言,一些设计的缺失并不会形象到其整体的表现,但是由于PaaS平台本身复杂性,使其设计上不得不小心谨慎,任何失当都会造成非常严重的后果,希望App Engine的工程师们,能够多多思量。 远离标准 对于普通用户而言,应用的通用性和迁移性是非常关键的,用户希望应用能够在外部的云中和企业的数据中心之间进行迁移,所以应用如果能基于标准的话,那将会非常有益处,就好像,像父亲这样中老年股民在选择炒股软件,他们所关心的不是功能是否强大,而是快捷键是否熟悉。而在非常关键的标准方面,App Engine在本来能所作为的Java版中并没有做的非常好,主要有下面两个问题: 在数据存储方面,虽然App Engine对最新的JPA有所支持,但是App Engine重点提供对JDO支持,但JDO在整个业界的接受度非常有限,并且已经被官方抛弃,而且比较陈旧。 夹杂一些私有的API,这种现象在数据存储方面很常见,比如,对Key和事务处理就使用很多私有的API。   虽然对标准没有很好地支持,对于那些专注于App Engine平台的程序员而言,他们并不会受到极大的影响,但是对于那些希望能将应用在AppEngine和企业数据中心之间进行迁移的用户而言,是极为关键的,因为这将显著地增加迁移的成本。 不够重视 虽然App Engine现在还在不断的开发中,但是由于其潜在的利润和Google其它业务相比低很多,所以相对于搜索、Andorid和Chrome相比,其开发进度和另一个产品Chrome OS一样较缓慢,到现在为止还处于类似公测的阶段。 总的来说,App Engine还存在很多不足,个人希望App Engine不要像Google Wave那样陨落,而是能继续健康的发展下去,也不想看到类似Max Ross这样资深工程师,也像Google Wave之父Lars Rasmussen那样黯然离开。在文章的接下来的部分,将讨论YunEngine的一些潜在优势。 YunEngine的优势 虽然相对于App Engine而言,YunEngine起步晚了很多,但是YunEngine也有它一定的后发优势,就像当年Google并不是第一个做搜索的那样。下面其中最主要的三点: 为PaaS而设计 虽然YunEngine的后端也采用类似于BigTable的YunTable,但是由于YunTable在设计上考虑到反应速度的情况,而且在设计方面,我们有自主权,所以会让YunTable为更好支持PaaS平台而不断优化。 坚持标准 虽然在初期阶段,YunEngine并不会提供对很多标准的支持,但是在会确保不加入任何私有的API,这样能保证应用的迁移性。 极为专注

(More)…