• 1
  • 2
  • 3
  • 4
  • 5
阿里云应用开发 首 页  »  帮助中心  »  云服务器  »  阿里云应用开发
四大Java云计算的测评
发布日期:2016-7-27 17:7:11

  似乎在惊悚电影中都有这样一个情节,主人公说“这很容易……简直是太容易了”,然后所有的事情就开始土崩瓦解。当我开始测试市场上的顶级Java云计算的时候,我发现这一情节正在自己身上重演。

  同其他人相比,企业研发人员需要对这些可能性更担忧。当云计算中出现让生活变得更容易的新方案的时候,普通的计算机用户会感到兴奋。他们会采用基于云的电子邮件,若电子邮件丢失,他们只能耸耸肩,由于电子邮件经常丢失,有时就像作祈祷那样频繁。

  企业研发人员不能这样乐观,对于国内的企业如阿里云更需要注意。每一个能让我们进行一键配置的选择都会让我们永远的被禁锢在其中。若我们采用了一个过于容易的云计算并让它为我们做太多的事,那么我们就不太可能有什么发展。

  “被套牢”的危险看起来隐藏在每一个角落里,这未必是最糟糕的部分。若除去我们需要的特色外,我们对云计算在各方面都很满意,而这个特色又是云计算提供商无法或是不想提供给我们,那会发生什么情况呢?云计算将成为一个一成不变的世界。

  让我们感到安慰的是,云计算研发人员已对这一情况感到了不安。他们知道,客户希望得到一键式解决方案与高度的自动化,以让生活变得更加容易。但这意味着发推出一些非标准或者是无法让用户自由调整的接口。云计算研发人员必须要搞清楚市场是否需要让云计算做每一件事,以及客户是否想拥有充分的自由以避免 “被套牢”。

  我对此测试了4个主要的Java云——谷歌App Engine、CloudBees、红帽OpenShift和VMware的Cloud Foundry。它们都有许多解决方案。一些云依靠标准工具以获取标准WAR文件与传输信息。另一些也有着自己许多独特的办法。

  1、云计算实验:Java版本

  Java云计算方案变得越来越好、越来越复杂,但他们远远称不上是一套完成的产品。这里的几套工具就可完整的展出它们尚未完全成熟的状态。注册表单经常提示我们云计算只是一个测试应用,仅针对研发而非针对生产工作。事实上,这他们更准确的称呼或许应该是云计算postalpha测试版或者是prebeta测试版

  因为都是在摸着石头过河,所以即使已经创建的云计算也会经常发生变化。因为没有人真正知道负载与成本如何增加,所以价格会进行调整,有时候调整的幅度很大。云计算销售商也不知道怎样确定他们的成本,因此在他们报价几百万的处理量价格为多少美元时也只是全凭猜测。

  未来,对买家与卖家来说,定价可能是一件非常困难,并极具挑战性的工作。人们已对谷歌停止补贴其App Engine的作法感到非常失望。一些用户抱怨每一次点击都让他们的成本增长两倍,甚至是三倍。但是谁又能指责谷歌呢?尽管谷歌拥有优秀的金融工程师,但我不能确定他们是否知道Big Table数据仓库的每次往返的合理价格。它们可能会受到西北部大雨而波动。由于谷歌的一些最新数据中心就建在那里,那里的水利发电是最便宜的能源。

  或许是我想多了。但总会要发生错误,价格将出现波动。云计算具有更高的灵活性于自动化程度,这为我们节省了雇人管理这些机架于确保数据平稳传输的成本。若Web 3.0应用取得了巨大成功,而云计算却非常昂贵,这仍然可带来足够的盈利以支付将应用移植到一套内部服务器所进行的全部程序改编。若这些Web程序的盈利不足以抵消成本,那么体验价格不会下降。云计算最终会发生变化:他们会简化实验并进行调整。

  选择云计算涉及到大量实验。最简单的一项是从亚马逊或者Rackspace云计算那里发现机器,但这一操作比服务提供商承诺的要复杂很多。是的,我按下按键,在几秒内就可启动一台计算机,但随后我却要花上数个小时进行联机,以安装JVM与剩下的堆栈。

  若你有时间与意愿来创建一个带有你喜爱的软件的机器镜像,那么原始的云计算机器将会满足你对云计算的大多数期望,但同时也将你“套牢”。亚马逊和Rackspace让存储镜像和复制变得很容易。你需要选择软件和确定需要多少台机器。理论上,你随时可以获得更多的机器。我曾经尝试过在日常事务处理中生成新机器,这很棒,每小时只需要花费1.5美分。在工作完成后,它们就会消失。

  当然,你必须要对自己有一个全面的认识。你是想要100台虚拟机还是102台呢?这是一个矛盾的问题。你要控制你的成本,但是你又没有时间却做出反应,除非你在这方面拥有更高的智能化。

  2、Java云:谷歌App Engine

  在使用谷歌App Engine的过程中,我们会感到兴奋与舒服。其作为一款先进的工具正在慢慢成熟,且更容易被用户所理解和使用,也许是由于用户已经接受了其中的许多理念。

  基础的架构主题是相同的。你上传带有业务逻辑的核心代码,App Engine将部署充足的实例以满足你的需求。若你想在会话间存储或同步你的工作,你必需使用谷歌专用的数据存储与缓存,不过所有的东西感觉都相当优秀。App Engine的第一个版本使用了Python,但现在你可以增加带有JSP、小服务程序与服务器端逻辑的Java WAR文件。通过独立的Web界面进行管理。命令行问题几乎已经不再出现。

  虽然架构与数据存储没有变化,但工具却更为复杂与丰富,通过许多功能与按键可调整配额和性能。我使用了整套的Eclipse插件创建了应用,整个环境与NetBeans与IntelliJ很相似。工具还将谷歌Web Toolkit和App Engine整合在了一起,尽可能的在Java中完成你的所有编程。若你不能忍受JavaScript或想在服务器与客户端上使用相同的代码,那么谷歌的Web Toolkit可为浏览器翻译你的Java。

  我认为对于程序员来说最大的挑战是适应谷歌的非关系型数据库。当谷歌App Engine首次出现,并没有太多的NoSQL项目。存储“名称/值”对的集合这一概念还是件新奇的事物。任何有着一定的NoSQL经验的App Engine用户都不会被这一如此简洁的解决方案所震惊。但任何考虑连接和规范数据的人需要打破以往的陈规,适应新的方式。

  App Engine提供两个级别的数据库,因为架构师必须确定是否为额外的能力付款。基本模式是让一个数据中心成为主数据中心其它的成为附属数据中心。若数据中心宕机或执行预定的维护任务,那么你的数据将无法存储。你必须要做好面对“预定的只读期”的准备。许多新的Web应用(如脸谱)能够很轻松的克服这类小故障,但是许多需要金融级的可获得性和一致性的应用则需要考虑另的办法。

  低租金的主-从配置被认为只有高端版本成本的三分之一,并且写入成本只为高端同类产品的八分之五。但在写入速度上,低租金版本比高端云计算可能要慢两倍,且可能还存在无法写入的时候。你必须要关注这些数字,因为机制中还包括了大量隐性支出。

  3、Java云:Cloud Foundry

  Spring是Java中最干净的架构。这让人们使用其作为Java云计算基础变得很有意义。SpringSource如今已成为了VMware的一部分,并成为了Cloud Foundry的领导者。所以其被创建在VMware虚拟机顶端并不意外。

  使用Cloud Foundry的最早方式是通过SpringSource定制版的Eclipse利用模板创建一个Spring项目。该工具被称为SpringSource工具套件。我尝试在自己的Eclipse版本安装了一些SpringSource工具,但库的正确收集并不容易发现。SpringSource工具套件则非常简单。

  Cloud Foundry并不局限于Spring,其还支持Scala、Rails、Sinatra、Grails和Node.js。即使你不写任何Java,它们也能在JVM上运行。Cloud Foundry不久刚刚宣布支持PHP与 Python/Django。

  目前VMware仍然对其价格保持沉默。产品还处于测试阶段,VMware还无法对其进行充分的定价。Cloud Foundry虚拟机开放程度较高,你可下载Micro Cloud Foundry——Cloud Foundry环境中的便携虚拟机镜像,然后在自己带有VMware Player的环境中运行。其核心代码在cloudfoundry.org中被开放,且大部分被Apache许可证所涵养。

  4、Java云:CloudBees

  CloudBees不仅提供了一个部署应用的云计算,且提供了一个创建它们的工具。你的账户不仅是将你的数据服务于大众的一个方式。其还有代码库(Git或Subversion)与监听你输入的每一个代码的Jenkins服务器。

  我能输入代码并等待Jenkins去创建、测试和、汇集文件并将其部署至服务器中。若我需要更多,这里有大量的其它服务、插件与交换机。

  其原理是CloudBees有大量平等工作的高端盒子,以用于创建大量代码。你不再需要等待你的桌面机器页入适当的库,取而代之的是让Jenkins分配你的模块至CloudBees中。

  但我并没有看到什么优势。我的Web应用只是一个JSP。连接Jenkins的Web界面一直出现一个进度条并有一个闪动的蓝色球体,这表明我的本地机器能够比CloudBees数据中心更快的创建这些文件。

  CloudBees云的实质是Tomcat与MySQL,不过一些经过紧密整合的第三方数据库也可使用。比如Cloudant提供了CouchDB服务,MongoHQ提供MongoDB数据库服务。

  CloudBees还提供许多免费服务,但限制也非常严格。只有临时性的研发人员喜欢它们。任何长期从事研发工作的人员都会快速的升级到付费服务。

  5、Java云:红帽的OpenShift

  红帽并不仅满足于推出个Linux工具集合。目前他们也开始进军云计算,他们的云计算平台被称为OpenShift,可以快速向等待接受Java、Python、PHP或者Ruby应用的机器进行部署。红帽云计算提供了一套将应用部署至亚马逊EC2的工具集合。

  OpenShift并不是以Java为中心。不管你创建一个Java应用或是其它类型的应用,它都可帮助解决许多部署问题。标准的Java应用是由Maven创建的JBoss Application Server 7堆栈。这是一个很新的选项,我并没有发现其在最新的HTML文件当中。相反,我是无意中在命令行中敲击-h时发现的。

  当然,OpenShift对于那些喜欢使用命令行的人来说是一个好工具。我敲入了一些命令行就行了,一个JBoss应用就可以被部署、运行并做好了定制的准备,且升级也非常的简单。

  你提供账户信息后,名为Flex的红帽工具会处理部署问题。若你想对OpenShift进行测试,那么你可免费试用30天。但这些工具还处理测试阶段,只能用于研发工作。

  上面列举的这些。对于国内云计算的发展有很多学习的地方,国内企业如阿里云这些更应该积极发展。