云计算架构模式系列:概述

2011年3月6日 | 标签: , ,

自从1995年GoF(Gang of Four)四人组发表《Design Pattern: Elements of Reusable Object-Oriented Software》一书之后,设计模式就被软件设计人员广泛接受。今天,如果你想应聘一个软件工程师的职位,那么你起码要对设计模式略知一二才能有机会。

像软件行业很多概念一样,“模式”一词是从Christopher Alexander20年前的一本书《A Pattern Language》中“舶来”的,此后我们一直沿用设计模式一词来讨论软件的设计。Christopher 书中提出的方法能够很好的概括不同工程领域中可重用的设计元素。

就像Christopher指出的那样,“每一种模式都描述了一种我们生产环境中反复碰到的问题,以及解决这种问题的关键方法,这样你就可以成功地利用这种解决方案成百上千次,不用每次都费劲重复。”

今天,我按照同样的思维方式来认识云计算的架构设计。重点放在基于虚拟机的架构模式,让你能够更充分的利用云计算服务于虚拟机。

clip_image0011

(亚马逊云计算整体架构图)

 


云计算架构模式是什么?

架构模式通常汲取了常见的、可重用的模式概念和组件。我们将其放在软件设计大的蓝图之中,它应该位于系统架构之下,软件设计之上的中间层。

一旦你熟悉了模式,你就可以在自己的设计中借用近来,完全不用从头开始设计,而且你可以应用不同的模式集中到一个架构设计中。这样的好处是显而易见的,既可以节省你的时间,又可以放心的使用被专家和高手实践过的优秀方案。

在IaaS云中,最基本的组件是虚拟机,无论是VMware的,微软的,XEN的,或是KVM的。围绕虚拟机,我将讨论以下几个要点:

  • 虚拟机的创建。创建一个新的虚拟机都有哪些途径?什么时间应该使用哪一个?如何有效控制它们的生命周期?这些虚拟机如何更好更快更高效地支持中间件以及应用层?
  • 虚拟机的结构。有什么办法能更好的将虚拟机组合在一起以便于系统管理和应用集群?如何设计网络/通信的拓扑结构?又如何定义服务使得能够交叉利用虚拟机组?
  • 虚拟机的行为。如何将一个大的任务分解成小的任务使得单独的虚拟主机能够有效胜任?如何高效的将应用映射到虚拟机上?有什么好的方法去迎合灵活性和未来的发展变化?每一台虚拟机都应该发挥到醉倒的效能吗?

在讨论和研究的过程中,我将带领诸位面对设计上的各种难题,抛出思考的命题,并且给出一种可行的解决方案。了解每一个解决方案成型的思考过程非常重要,甚至不亚于解决方案本身。如果没有这个思考的过程,你将很可能在面对实际问题时迷失在架构模式的选择与应用上。就好像你在修理自己的车一样,动手之前你一定要先了解汽车的运行原理。修车和云计算一样,在具体实践中没有两个完全一样的问题,作为设计师的你必须做出判断,哪些不同是问题的关键。

为了更好的理解云计算架构模式的概念,有必要知道云计算架构模式不是什么,它和其他的概念有什么关系。

  • 首先,云计算架构模式不是软件的设计模式。云架构模式使用更高阶的语言描述系统的组件,相比之下,软件设计模式关心的是一组类/对象之间的的相互关系。要在云中开发一个软件组件,软件设计模式更可能会排上用场。
  • 其次,云计算架构模式不是架构本身。模式仅为特殊的问题域或方面提供解决方案。为了使架构设计合理,你必须使用多种架构模式。大多数情况下,并不是简单的将架构模式放在一起,而是一个不断集成的过程。

如何描述一个云架构模式?

模式这种思想并不是一个新东西,其起源传统的建筑行业。真正新的东西是内容和特定的解决方案。这里我们使用一种被实践证明有效的格式来描述。

云模式的描述有8个基本的元素:

  1. 名字 —— 一或两个单词来定义模式。
  2. 意图 —— 用高阶的语言来描述模式的语句。
  3. 问题(动机) —— 每一个模式都起源于一个设计上面临的问题,就像每一个产品都源于客户的麻烦。每一个特殊的问题都有其独特的设计上的约束。
  4. 解决方案 —— 问题理解了,目标也就清晰了。解决方案应该能够达有效地实现目标,并提供如何解决问题的细节信息。
  5. 适用性 —— 没有东西是普遍适用的,云模式也是这个道理。为助力于真实的工程项目,你应该知道什么时候应用什么模式。应该有一个特别的关键点检测列表来帮助你做决定。
  6. 影响 —— 应用某一种模式能够给你带来不少优势,同样你可能会放弃了一些其他特性。这里帮助你在应用之前就对模式产生的影响了如指掌,鱼和熊掌的取舍由你来决定吧。
  7. 已知应用(最佳实践) —— 这里为你提供真实项目的链接和引用。这些项目可能与你的问题接近,也许完全不同,但了解真实的问题被漂亮解决是非常值得的。
  8. 相关模式 —— 讨论与其他模式的相互关系不仅能够为你提供更大的模式蓝图,也能在同一时间提供给你其他模式的线索以备使用。

呼吁

云计算在不断发展,相关的模式也在不断变化,我们也将在技术和商业领域中不断迎接新的挑战。本系列博客文章将介绍10个云架构模式,我也希望广大读者能够在这里分享自己的经验。让我们一起努力,共同开发出一套好用的模式来惠及整个云计算行业!

作者简介

Steve Jin,云计算顶级博客作者,其博客(doublecloud.org)位列于Top50之中,《VMware VI and vSphere SDK》和《VMware vSphere Java API》的作者。感兴趣的朋友可以follow him on @sjin2008.

文章来源:Cloud Architecture Patterns: Overview

  1. 2011年3月6日18:37

    自己占个沙发,后续的文章,yunster正在学习和整理,不久之后就将陆续和大家见面了。

  2. 云计算开发者
    2011年5月25日11:54

    未来几年奉献吧

无觅相关文章插件,快速提升流量