应用云平台的可用性——从新浪SAE看云平台设计
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
该内容已经被标记书签!
标记书签错误,请重试!

作者 David Pallmann 译者 朱永光 发布于 2009年8月27日
在这个由3部分组成的系列文章中,我们将看一下利用Azure云计算平台的网格计算。在第1部分中,我们将看到所涉及的设计模式以及一些有益的观点。在第2和第3部分,我们将看到一个用来展示专门为Azure而开发的网格计算框架的代码例子。

并不是所有人都清楚,网格计算和云计算之间的区别,所以我们先来简短解释一下两者。虽然网格计算和云计算不是同一个东西,但是它们之间有很多可协同的地方,并且共同使用它们是非常有意义的。
网格计算就是利用工作于并行模式而非单机模式的一大批计算机来处理计算问题。这种方式有很多优点:
并不是所有类型的工作都适合于网格计算。只有那些可以被分解为多个小任务的工作才适合,而且处理这些任务的计算机所构成的松散耦合网络可以并行运行。为了分发任务、收集结果并管理系统,有必要建立一个智能基础结构。无需感到惊讶,网格计算的早期采用者都需要去解决一些巨大的计算问题。因此,你会看到网格计算如今用于遗传学,保险统计计算,天文分析以及电影动画渲染。不过,现在有所改变:网格计算越来越关注普通的业务问题,且云计算带来的竞争也加速这方面的发展。计算任务并非要无比庞大才能从网格计算方式中获益,也不一定要计算密集的任务才适合进行网格计算。任何具有反复执行特点的任务都适于网格计算。不管你是那种需要每月处理4百万订单的财富500强企业,还是那种只需批准1千个信用申请的中型企业,网格计算都能为你所用。网格计算早于云计算10年出现,所以如今的网格计算自然而然不会使用云的方式。最通常的方式是:
云计算可以成为网格计算的另外一种实现方式,其具有很多吸引人的特点,可以根据你的业务模型提供灵活的伸缩,并已经准备好很多传统方式必须定制开发的支撑基础结构。
为了把网格计算带入主流,需要出现一些引人注目的业务应用程序。让我们来看一下3类适合于网格计算方式的业务应用程序,以及获得的巨大商业价值。第一类例子是数据挖掘。数据挖掘和其他形式的数据分析,都能识别来自业务数据中有趣的关系和模式。
第二类例子是决策分析,就是为了作出业务决策需要执行一组向前连动的业务规则。在某些场景中,涉及复杂计算的决策需要非常快速地作出。网格的并行性可用来获得很快的响应时间,在工作量增加的时候也不会出现延误。
第三类例子是批处理,在你偶尔需要处理突发的大量工作负荷,而内部又没有这么多的能力来处理的时候,就可借助于网格计算。
这些例子描述了网格计算走出应用程序类型的限制,变为一种所有业务类型都可考虑使用的常见形式。
云计算就是利用具有智能基础结构的大规模数据中心来为你提供所需的计算资源。云计算横跨应用程序托管和储存,并且提供用于通信、工作流、安全和同步的服务。云计算的优势包括如下几点:
微软的云计算平台也叫Azure,当前由4个主要服务领域组成:
Azure是一个全新的平台;在本文编写的时候,它还处于预览的阶段,有望在今年年底投入商用。
Azure被设计来支持多种应用程序类型,但没有为网格计算提供特定的特性。然而,Azure提供了网格计算系统所需的很多功能。为了让Azure成为一个优秀的网格计算平台,只需运用正确的设计模式和框架来提供网格特定的功能。我们现在先来看一下设计模式,在第二部分我们将研究支持这个模式的框架。

对于这个模式,你需要注意的第一件事情是,在Azure云中和企业端分别存在一些软件/数据,以及一些基础功能。它们分别完成什么事情,以及为什么要这样安排?
在这个模式中的软件角色是:
在这个模式中的数据角色是:
让我们来把上面讲到的东西混合到一起,并演练一下使用这个模式和适合的框架,如何从头至尾地开发并运行网格计算应用程序:
1. 网格计算应用程序需求的确立。就是要确认需要完成的任务、输入数据和结果目的。
2. 使用框架,开发人员添加自定义内容到他们的项目中:
3. 此应用程序的Azure项目通过Azure门户网站来进行托管和存储的配置。网格执行器打包并部署到云宿主中,测试后,升级为产品版本(Production)。
4. 使用网格管理器控制台,网格的工作运行在此定义和启动。加载器的运行也在此启动。
5. 加载器读取本地企业数据,生成任务,并把每个任务写入到任务队列。
6. 网格执行器项目在Azure门户网站中启动,其会产生网格执行器的多个实例。
7. 每个网格执行器都持续地从任务队列中接收新任务,确定任务类型,执行适当的代码,并把任务结果发送到结果队列中。Azure队列工作的方式在此非常有用:如果执行器出错,在完成任务的过程中失败,那么任务在超时之后将重新出现在队列中,并会被其他网格执行器获得。
8. 聚合器从结果队列中读取结果,并把它们写入到本地企业存储库中。
9. 在网格执行的时候,管理员能够使用网格管理器控制台几乎实时地观察网格执行器执行任务的状态。
10. 在聚合器获知所有计划中的任务已经完成时候,它通过控制台发出一个关于这个状态的提醒。到此,网格就完成了它所有的工作,它的结果也安全地保存到企业端。
11. 通过Azure门户网站可以暂停网格执行器,以避免带来额外的计算时费用。云存储在所有队列被完全地读取后,已经是空的了,因而没有额外的存储费用产生。
从技术和经济两方面来说,Azure平台用于网格计算再好不过:
下次,我们将来看看使用Azure的网格计算框架,如何在代码中实现这个模式。
David Pallmann是Neudesic的咨询总监,这个公司是微软金牌合作伙伴和国家系统集成商(National Systems Integrator)。在加入Neudesic之前,David在微软的WCF产品团队工作。他出版了3本技术书籍,并维护着一个经常更新的Azure博客。他也是Azure User Group的发起成员。
阅读英文原文:Grid Computing on the Azure Cloud Computing Platform, Part 1。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。
没有实际使用过微软的云,不太明白的有个地方就是如何在云端模拟出若干个网格。文中的意思就是运行多个grid worker的实例就行了?启动几个实例就是拥有几个网格为我的计算提供服务?
云计算好比是一个很多服务器组成大容器(SaaS, PaaS,IaaS),随着访问增多会水(单个应用的资源)涨。网格正好相反,是水滴分解后在容器里乱飞(计算网格,数据网格),很复杂的计算任务一会就完成了,是吧
以云的形式来进行网格计算. 云说: 我把我的特性献给了你, 网格. 我的可靠性, 是你的可靠性. 云说: 我把我的服务献给了你,网格. 我的基础设施即你的基础设施. 你是服务的消费者.基于Azure云计算平台的网格计算,这类的网格计算是不是SOA的哪?要看是不是符合SOA的基本原則.
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪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分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。
3 条回复
关注此讨论 回复