应用云平台的可用性——从新浪SAE看云平台设计
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Scott Delap 译者 张龙 发布于 2009年4月17日
除了Python以外,Google App Engine(GAE)又增加了Java支持,这对Java生态圈相关的工具、框架及语言(像JRuby和Clojure)都产生了很大的影响。然而这么做的结果将对GAE Java应用造成很多限制,使其无法轻松扩展和集成这些应用。Google官方博客对此说到:
...我们想给开发者一些惊喜,但深知必须要将Google App Engine的简单性与Java平台的强大功能及灵活性结合起来,同时我们还想利用App Engine的基础设施,尽量去扩展这些内容,但又要保持与现有的Java标准和工具的兼容性。
我们就是这么做的。现在App Engine对标准(这些标准对Java工具起到了至关重要的作用)提供了支持(我们也从事着工具的开发——Google Plugin for Eclipse),它使用标准(如Java Servlet API、JDO、JPA、javax.cache及javax.mail)对当前的App Engine API进行了包装,同时还提供了足够强大的安全的沙箱,这样你的代码就可以安全地运行在Google Server上而又不会丧失灵活性...
CNet注意到GAE运行的是Java 6。但就像上面提到的,Java要想融入到GAE模型上还不是那么容易的事情,因为限制实在太多。GAE Java基于Java 2.4 Servlet API:
再往上就是几个沙箱限制了:
java.lang.System有如下限制:
除此以外,还有其他一些限制,如JRE类加载的白名单等等。从文档来看,GAE通过自定义的类装载器对此作了很好的处理,然而应该让其他应用级的类装载器也可以处理上面这些限制,这是一个不足之处。
接下来的问题是上面这些限制能给GAE应用带来什么好处呢?首先就是可伸缩性。App Engine使用多个Web Server运行应用并能自动调整所使用的服务器数量。它可以将到来的请求路由到任意的服务器上,而该服务器很可能并不是处理该用户前一个请求的那个服务器。以下内容来自于文档:
...一个应用可以同时处理大约30个动态请求,这意味着平均的服务器请求处理时间为75毫秒的应用可以处理(1000 ms/second / 75 ms/request)*30=400 requests/second的请求量而不会出现延时。CPU处理密集的应用可能会在长时间的请求中出现延时,这是为了让其他应用可以共享同一个服务器。对静态文件的请求不会受到该限制的影响...
Google还提供了一个BigTable版的JPO和JPA以及Google Plugin for Eclipse,以此简化GAE的开发。
尽管还处在开发当中,但Google已经让为数不少的开发者试用GAE的Java支持了。Paul Hammant说到:
...还要注意来自于同一客户端的多个并发请求也不一定会被同一个Servlet容器处理。即使来自于同一个域名(没有资源转发的情况出现),响应请求的Servlet容器实例也很可能是不同的。对于无状态应用来说这没什么问题,但对于那些利用session存储属性的应用来说就会出现并发问题了:向同一个资源写两次...
...Google已经实现了一个完善的沙箱。毋庸置疑,这会防止恶意代码的侵袭...而XStream是Java社区所推崇的一个工具,其最新版为1.3.1,但它却在GAE初始化时抛出异常。
其他一些工程师正在着手Clojure、JRuby及Groovy的支持开发工作,而ThoughtWorks的Ola Bini则在其博客上详述了GAE对动态语言的处理。
查看英文原文:Google Brings App Engine's Pros and Cons to Java
译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。
GAE的这些限制对于大多数对性能要求不高的应用来说都不成大问题
只是希望JAVA社区能保持一致,不要因为GOOGLE加入而引起兼容性问题。
自说自话, 如果你要用到这些,你就不会这么说了
Google已经实现了一个完善的沙箱。毋庸置疑,这会防止恶意代码的侵袭...XStream是Java社区所推崇的一个工具,其最新版为1.3.1,它会在GAE抛异常时进行初始化。
原文的意思是:
xstream运行在GAE上面,初始化时会抛异常。XStream is one that is particularly beloved of a section of the Java community. The latest version is 1.3.1 and on initialization anywhere within the realm of GAE is throws exceptions. These are security exceptions that cause the entire app to not function. Exceptions have a way of curtailing the fun of running code. In the case of XStream it is possible to fix it to be compatible with GAE (and all security constrained environments).
你好,此文是我翻译的。对于你所说的原文这块我觉得本身语法就有些问题,拿捏了很久,如果翻译错误的话最主要的原因还在于对XStream不甚了解,不管怎样,谢谢你的指出。如有进一步的信息可以与我联系:zhanglong217@yahoo.com.cn
xstream是thoughtworks公司的一个java转XML的一个工具,按照原文的意思应该是stream在GAE初始化的时候会出异常。
ok,已经更新了,多谢指正!
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011。
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。
随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。
6 条回复
关注此讨论 回复