`
isiqi
  • 浏览: 16051528 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

阅读更多

虽然在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式的设计,这方面的例子主要有两个:

    1. 在数据存储方面,使用了主要以存储海量数据著称的BigTable,虽然这样能保证其应用能在App Engine上存储海量的数据,但是在反应速度(Response Time)方面有一定的牺牲,特别是不支持在内存中预D读取数据的情况下。可惜的是,对于大多数在App Engine上应用而言,它们更看重反应速度,而且类似这样抱怨在Google App Engine的官方邮件列表中比比皆是,其中也包括对Memcache速度的不满,国外一位博客作者在谈到App Engine的Memcache时,他有这样一句评价:“这个Memcache不是我们所熟悉的那个Memcache”。
    2. 支持跨洲多数据中心同步,虽然多数据中心同步是一个不错的实践,但是由于光速的原因,使得在大洲之间传输数据的速度非常慢,而且成本很高,更重要的是使得整个数据存储方面的架构的复杂性一下子提升了很大,而且有可能使本身已经非常缓慢的速度雪上加霜,对于这个用户不是特别关注的问题,耗费太多的精力。如果由我来设计的话,应该让用户选定具体应用所在数据中心位置,而且这也是大多数用户所推崇的,虽然这种设计不是Google所倾向的。

虽然对于有些应用而言,一些设计的缺失并不会形象到其整体的表现,但是由于PaaS平台本身复杂性,使其设计上不得不小心谨慎,任何失当都会造成非常严重的后果,希望App Engine的工程师们,能够多多思量。

远离标准

对于普通用户而言,应用的通用性和迁移性是非常关键的,用户希望应用能够在外部的云中和企业的数据中心之间进行迁移,所以应用如果能基于标准的话,那将会非常有益处,就好像,像父亲这样中老年股民在选择炒股软件,他们所关心的不是功能是否强大,而是快捷键是否熟悉。而在非常关键的标准方面,App Engine在本来能所作为的Java版中并没有做的非常好,主要有下面两个问题:

    1. 在数据存储方面,虽然App Engine对最新的JPA有所支持,但是App Engine重点提供对JDO支持,但JDO在整个业界的接受度非常有限,并且已经被官方抛弃,而且比较陈旧。
    2. 夹杂一些私有的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,这样能保证应用的迁移性。

极为专注

由于YunEngine对我而言,是一个核心的项目,我会尽全力把YunEngine给做好的,并且不断地优化。

最后,虽然在即将到来的公测期间,YunEngine还会存在很多Bug或者问题,但是只要经过这些关卡,我坚信YunEngine将会是超越Google App Engine的存在,就像《海贼王》中黑胡子所说的那样:“人的梦想是不会终结的!”。

分享到:
评论

相关推荐

    pirra:免费电子发票系统AFIP:Argentina:

    因此,他跑到色萨利,在那里,阿喀琉斯在老凯隆的监护下接受了阿基里斯的教育。 然后,他带着他,偷偷地把他穿上了女装,并把他交给了他的知己,命令他把他带到西科鲁斯岛,即莱科梅德斯国王的所在地,在那里,他以...

    achille:Haskell库,用于构建静态站点生成器

    阿基里斯achille是一个很小的Haskell库,用于构建静态站点生成器。 在精神上,它是的直接继任者。 它是独立的,几乎没有依赖关系,并且是用于构建构建规则的非常简单的抽象。 它还提供了快速细粒度的增量构建。 有关...

    机器学习介绍及在金融领域的应用.zip

    机器学习

    麦肯锡-xx股份组织结构设计方案gl.ppt

    麦肯锡-xx股份组织结构设计方案gl.ppt

    目前机器人基于ChatGPT进行开发 使用机器人可以让你轻松进行对话, 后续机器人的更新升级一个命令即可搞定

    目前机器人基于ChatGPT进行开发 使用机器人可以让你轻松进行对话, 后续机器人的更新升级一个命令即可搞定, 无需再上服务器进行升级机器人.zip

    基于matlab实现的Hilbert-Huang Transform的完整源码EEMD.rar

    基于matlab实现的Hilbert-Huang Transform的完整源码EEMD.rar

    UE4 C++项目,无人机射击小游戏.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    ch_PP-OCRv4_rec.onnx

    PP-OCR rec

    node-v6.11.4-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v10.1.0-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.12.3-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    单链表的基本操作hahhahaha

    单链表的基本操作hahhahaha

    infrared-remote-controller-master

    mysql安装配置教程

    node-v9.5.0-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v10.9.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    devanagari_PP-OCRv3_rec.onnx

    PP-OCR rec

    node-v9.6.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics