我必须承认,当面对围绕网格技术的炒作浪潮,特别是在企业内部时,我对广大的IT民众抱有极大的同情。各个供应商都试图在名义上的处女技术领域插上自己的旗帜,并宣称它是自己的,使用的术语如网格、自主、自愈、自管理、自适应、实用程序等等。分析师们,嗯,分析并试图理解这一切,在这个过程中,每个人都独立地创建了他或她自己对这片未知领域的地图,将其命名为基于策略的计算、有机计算等等。不幸的是,这只会进一步混淆大多数人的视听。所有这些术语都捕捉到了大局的某些方面——它们都描述了旨在以类似方式解决基本相同问题的解决方案的各个部分——但它们绝不是完全同义的。
那么,这个“网格”的东西到底是怎么回事?它如何应用于企业数据中心,为什么您应该关心?
网格计算的核心概念是应用程序和资源以普遍存在的网络结构或网格的形式连接在一起。此外,“网格”一词意味着普遍性和可预测性,网格被视为非常类似于电力网或电网1,电力网或电网随处可及,并且可以由所有人共享。
网格计算是一系列长期技术趋势的必然结果。
首先,应用程序已经从曾经简单、通常是单体的、以计算机或服务器为中心的二进制文件演变为服务,这些服务被分解,然后分布在网络中。Web 服务和 SOA(面向服务的架构)是当今这种趋势的前沿。
其次,网络本身也在不断发展。网络带宽的持续增加已经慢慢侵蚀了服务器和网络之间的边界,将互连的离散资源集合转变为由物理资源(如服务器、存储和网络组件)以及逻辑资源(例如,操作系统、数据库服务器、应用程序服务器和其他平台或基础设施软件)组成的结构。尽管某些类型的应用程序仍然受益于其组件共享内存或在大型 SMP(对称多处理器)计算机上扩展,但对于许多——甚至可以说大多数——应用程序来说,通过网络获取数据或与其他应用程序组件或资源交互已经足够好了。
在过去的二三十年中,这些趋势相互促进,导致了我们今天看到的应用程序和基础设施架构。
网格本质上具有一组潜在属性,这些属性扩展了传统计算机的属性,并使网格计算引人注目。这些属性包括但不一定限于:
大规模扩展和吞吐量。网络连接使硬件和软件组件组能够有效地组合在一起,以实现更高的性能和扩展性。您可以跨网络将比传统计算机内部更多的资源应用于特定的工作负载。这可能会为事务性应用程序带来更高的吞吐量,或者为计算密集型工作负载缩短完成时间。
固有的弹性和可用性。在网格中使用多个复制组件可以实现更高的弹性和可用性。
可变性和灵活性,从而提高效率和敏捷性。网格还通过在具有不同配置文件的多组工作负载之间共享大型资源池,提供了实现真正的规模经济的机会。存在共享,因为单个资源可以同时由多个应用程序共享——例如,两个应用程序或软件组件整合到单个物理服务器上——并且存在共享,因为资源可以随着时间的推移而被重新利用,以便一个应用程序随着需求的变化而替换另一个应用程序。这有可能提高效率或利用率。此外,使资源重新利用成为可能的机制赋予了网格可变性,这种可变性可以转化为更高的敏捷性或响应能力。
面向服务。网格计算的最终显著特性是专注于管理应用程序和服务,而不是结构内的单个资源。必须协调的资源数量变得如此庞大,以至于必须使用更抽象的管理对象,例如服务层或完整的业务应用程序,以便管理可以扩展。
实现这些潜在属性是通过一组关键机制(稍后描述)实现的,包括虚拟化、抽象化和自动化,以及标准。
在许多方面,网格计算的概念是渐进的,而不是革命性的。它巧妙地捕捉了现有技术向网络计算发展的趋势、网络规模“系统”可以提供的属性、将使其成为可能的机制集,以及通过 IT 交付业务服务时对普遍性和可预测性的渴望,所有这些都在一个单一的、连贯的背景下。革命性的是网格计算对架构师和实施者施加的视角。网格计算要求对网络应用程序和资源的管理采取系统性或整体方法,而不是以组件为中心的方法,尤其是在企业数据中心内。
从广义上讲,网格可以定义为有界环境(即,网络应用程序(或服务)和资源的集合,它被视为一个整体,并在其中进行网格计算)。网格的范围可以从小型部门网络到运行在多个位置、遍布全球、并由许多组织团体、政府机构、企业或学术机构拥有的庞大资源和服务集合。
当探索网格在企业数据中心内的影响时,我们使用术语“企业网格”来捕捉由单个实体或企业管理的网格的概念。这是一种非常特殊的网格类型,其中在管理网格以满足特定业务目标方面具有明确的控制和责任范围。企业网格的范围是根据组织责任而不是地理位置或资产所有权来定义的。因此,企业网格可以跨越多个位置或数据中心。它也可能由代表其他组织运行的应用程序或服务组成,例如在外包环境中。企业网格还必须支持各种类型的工作负载(事务性、OLTP、批处理、计算密集型和遗留系统)以及大型异构资源集。这与数据中心中更传统的聚合框架(如高可用性集群、负载均衡集群(例如,Web 服务器群)或计算密集型集群)形成鲜明对比,后者通常专注于特定的应用程序或应用程序类型,并且通常部署在相对同构的资源集上。
企业网格所承诺的更高效率和敏捷性的潜力非常引人注目。尽管绝对的扩展和效率优势可能无法达到通用网格的规模(想想整个互联网!),但对于拥有数百个应用程序和服务以及数百台服务器、磁盘阵列和网络设备的大型组织而言,应用网格架构和技术的潜在好处是巨大的。然而,这些好处并非必然轻易获得。在企业内部采用网格技术可能非常具有挑战性,尤其是在操作层面。尽管如此,网格计算捕捉了一个愿景、架构元素和技术,随着时间的推移,这些技术几乎肯定会从根本上改变数据中心的管理方式。
那么,考虑到这一切,今天的数据中心在成为企业网格方面处于什么位置?在网格技术的采用方面,又有哪些挑战呢?
今天的数据中心是一个复杂的地方。每个数据中心通常托管着无数的应用程序或服务,这些应用程序或服务运行在大量的网络资源上。这个结构中的每个组件——无论是应用程序还是资源,无论是物理的还是逻辑的——本身都相对简单,但一旦将它们组合在一起,复杂性就会呈指数级增长。当您添加一个组件时,您不仅增加了组件的总数,还可能添加一种新型组件以及与结构内现有组件的一组关系。设想一个典型的企业应用程序,例如电子书店。该应用程序可以分解为多层——例如,持久存储或数据库、业务逻辑和表示层。某些层之间可能存在防火墙。每一层可能由一组运行应用程序组件的服务器以及可能的集群或负载均衡框架组成。每台服务器将至少运行一个应用程序组件,该组件可能依赖于特定版本的操作系统,以及一组特定的补丁程序,所有这些都在特定类型的处理器上运行。图 1 以简化的依赖关系图的形式说明了平均数据中心的复杂性,这仅仅是一个应用程序的复杂性。再添加 10 个或 100 个这样的应用程序以及它们之间和彼此之间的相互关系,您就可以了解典型数据中心每天必须管理的复杂性。
复杂性可能导致大问题。管理如此复杂性真的很难。今天可以肯定的一件事是,在现代数据中心实现规模经济非常非常困难。应用程序在过去 30 年中不断发展,以至于现在它们是使用更抽象和可重用的构建块创建的,然后分布在网络上。SOA(面向服务的架构)和 Web 服务是越来越分散和分布式应用程序架构的最新成果。同样,数据中心也从单体大型机环境发展到同构服务器和操作系统集群和层网络,再到我们今天看到的异构资源结构。
然而,数据中心的管理(包括应用程序及其运行的基础设施)并没有真正发展。我们仍然直接管理同一组组件(即,服务器、存储设备、网络设备、操作系统、数据库服务器、应用程序组件),只是现在它们的数量更多了,并且以越来越复杂的组合方式连接在一起。我们管理基础设施的方式必须改变;否则,我们将无法实现这些复杂应用程序和服务的价值。
今天,企业通过在分而治之的管理方法中创建相对静态的基础设施孤岛来减轻复杂性的影响。在典型的数据中心中,不同的组将管理服务器及其操作系统、网络组件、存储组件、安全以及成组的应用程序或服务。图 2 说明了这一点。
通过有效地限制组件的总数和类型及其关系来解决复杂性问题。这允许利用网络分布式架构中固有的性能、可扩展性和可用性属性,但这通常以效率和敏捷性为代价。静态孤岛导致每个孤岛都存在备用或过剩容量,这远不如共享的、动态可分配的过剩容量有效。这些静态孤岛还导致缺乏敏捷性,因为必须为新的应用程序和服务创建新的孤岛,而不是可能只是使用现有的过剩容量。
今天的数据中心可以被视为原始的企业网格。资源构成网络结构,应用程序是分解和分布式的。因此,网格固有的性能、可扩展性、弹性和可用性属性在某种意义上得到了实现。然而,由于管理孤岛,规模经济、潜在效率和敏捷性仍然未被开发。如何改变这种情况?企业网格和传统数据中心之间有什么区别?
问题的核心是以组件为中心的数据中心视图。在操作上,一切都围绕着显式地管理离散组件及其关系,而不是业务应用程序本身。
企业网格计算需要一种更系统和整体的方法来管理数据中心。数据中心网格或网络成为新的系统,可以这么说——用一位供应商的话来说,“网络就是计算机”。这种理念是许多供应商和标准倡议的核心,包括 Microsoft 的 DSI(动态系统计划)2、Sun 的 N1 战略3、GGF(全球网格论坛)4 OGSA(开放网格服务架构)5、EGA(企业网格联盟)6 参考模型等等。
正是这种系统性方法及其应用从根本上将企业网格与传统数据中心区分开来。数据中心网络成为设计中心,是管理工作负载(即应用程序)和资源的上下文。它鼓励开发一种包含数据中心的架构,这种架构旨在通过策略和自动化实现服务和应用程序的管理,这种架构认识到,今天受管理的系统和软件堆栈仅仅是更大系统中的组件,这个更大的系统定义了它们的功能以及彼此之间的关系。
然后,基于整体架构重新定义数据中心,从而可以开发一致的工具和产品,以管理这个新的企业网格。一致的架构,加上行业标准,应确保交付的工具集可以以某种方式集成(产生 Ian Foster7 描述的水平集成层),从而使数据中心交付的价值大于各部分之和。这就是网格计算中发现的整体或系统性方法的基本价值。
在许多方面,这些工具的集合类似于操作系统。操作系统根据策略管理工作负载的生命周期,将其映射和重新映射到资源。在传统的操作系统中,工作负载由进程(二进制文件)组成;资源是处理器和内存,以及存储和网络接口;策略是低级规则,例如进程的“nice”(优先级)值。在企业网格元操作系统(可以这么说)中,工作负载由网络分布式应用程序(从传统的多层应用程序到 Web 服务和 SOA)组成;资源是服务器、存储阵列、网络设备、操作系统、数据库和其他平台软件;策略是 SLO(服务级别目标)。
就像传统的操作系统一样,企业网格管理工具集严重依赖于一组机制——虚拟化、抽象化和自动化——以及确保其适当应用架构。在一致的操作和架构背景下开发和采用这些技术是实现真正的企业网格的所有好处的关键。
这些机制是什么?它们如何有助于使数据中心成为一个更高效和敏捷的地方——实际上,将其转变为企业网格?
虚拟化某些东西,例如服务器、磁盘或操作系统,意味着它的实现(硬件或软件)已与某个其他实体(用户或可能是某段软件)与之交互的接口分离。这通常是通过插入一个软件层来实现的,以便可以在不更改任何依赖于它或使用它的东西的情况下更改底层实现。这方面的一个例子是存储中的 LUN(逻辑单元号)。LUN 是虚拟磁盘。就安装了文件系统的操作系统而言,它的行为就像磁盘一样。然而,LUN 实际上可以实现为单个物理磁盘、物理磁盘上的分区或多个物理磁盘的聚合,例如 RAID 卷。
VMM(虚拟机监视器),例如 VMware8 或 IBM 的 LPAR9(逻辑分区),以非常相似的方式虚拟化服务器。托管的操作系统表现得好像它运行在自己的计算服务器上一样,而实际上它运行在软件层上,该软件层为其提供了计算服务器的所有资源。同样,Sun 的 Solaris Containers10 虚拟化操作系统实例,允许多个应用程序共享它,每个应用程序都在其自己的虚拟操作系统环境中。本质上,虚拟化确保资源或组件的用户或使用者获得一致的界面,该界面将他们与底层组件分离。
虚拟化技术可以产生许多好处。它们使资源能够被共享,从而提高资产效率。它们使资源能够被聚合,从而提高管理效率。最后,它们通过允许以最小的中断来替换或升级组件来提高敏捷性。
但是,我们应该注意到,虚拟化本身并不一定能解决管理扩展问题。如果您虚拟化一台物理服务器,以便可以在其上托管 20 个操作系统实例,那么您可以在物理服务器方面实现更好的资源利用率,并且您可能只需要管理一台物理服务器。但是,您仍然需要管理和修补 20 个操作系统,以及虚拟化软件。如果所有 20 个操作系统实例都是相同的,并且工具允许将它们作为一个整体进行管理,那么管理负担才会得到显著减轻。真正的管理效率通常是通过额外使用抽象化和自动化来实现的。
抽象化是更改一个或多个对象或实体的公开属性的行为,通常是通过创建一种新的对象类型来封装或隐藏其他对象。例如,Web 服务器群抽象化了一组服务器、防火墙和负载均衡器。如果您在高抽象级别管理 Web 服务器群,则可以管理服务器群的属性,例如其访问权限、其容量以及服务器的默认操作系统映像以及要使用的服务器类型,而无需直接与每个单独的组件交互。管理工具会根据策略自动在新管理抽象和旧管理抽象之间进行转换。这就是基于策略的计算与网格计算的交汇点。在本例中,该工具可以确定企业网格中哪些未分配的服务器支持所需的操作系统映像,然后根据这些要求配置这些服务器、负载均衡器和防火墙。这可能包括负载均衡器和防火墙的策略配置。
这种类型的自动化本质上是将传统的 IT 管理流程或实践(例如,数据中心管理标准中捕获的流程或实践,如 eTOM(增强型电信运营图)11 或 ITIL(信息技术基础设施库)12)从人工领域转移到机器领域,并且在企业网格世界中通常被称为编排13。抽象化和自动化通过允许多个传统上受管理的组件作为单个实体进行更直观的管理,从而提高管理效率。复杂性可以被隐藏。当然,复杂性仍然存在,但用户或管理器不再暴露于复杂性,至少在简单的、常见的、重复性的任务方面是这样。自动化不仅提高了管理效率,而且还改进并实现了敏捷性。它通过降低与手动流程相关的错误风险来提高敏捷性。这种风险通常会阻止数据中心管理器或系统管理员利用其数据中心内的潜在敏捷性,例如,通过重新利用服务器来满足负载变化。最后,自动化通过潜在地减少执行给定流程所需的时间来提高敏捷性。
虚拟化、抽象化和自动化是将现代数据中心转变为真正的网格(企业网格)并提高效率和敏捷性的关键机制。这些机制通常在任何给定产品中组合实现——例如,在服务器和操作系统配置工具、复杂服务和应用程序生命周期管理工具以及服务级别管理工具中。
从这些工具中提取最大值的关键是它们共享一个共同的架构和操作背景。
共享的架构背景应确保工具以正确的方式解决正确的问题。这就是各种网格联盟(例如,EGA 和 GGF)的价值所在,它们分别致力于一套标准的需求和标准的架构模型。将此与各种管理协议和机制的标准的使用相结合(其中许多标准尚处于起步阶段,但无论如何都在发展中)应允许数据中心选择适合其需求的可互操作的工具集,而无需担心供应商锁定。
最终,网格计算范例确实提供了所有炒作中列举的好处。然而,与所有事物一样,存在权衡,并且技术不成熟或几乎不存在的领域。这意味着并非所有好处都可以立即实现。设定适当的期望是关键。
今天的数据中心本质上是一个原始的企业网格,其中扩展、性能、弹性和可用性的潜在属性正在被利用。然而,由于缺乏系统性架构、一致的操作模型以及成熟的虚拟化、抽象化和自动化机制,真正的企业网格的潜在规模经济和敏捷性尚未完全实现。
当前围绕企业网格、基于策略的计算、自主计算等的嗡嗡声集中在解决这些规模经济问题的解决方案上。
首先需要的是一致的操作模型和该领域各个供应商和标准机构共享的一组通用需求。一个明智的起点实际上是使用那些已经发展到管理今天基础设施的标准(开放或事实上的标准),例如 ITIL(在商业领域)或 eTOM(在今天的电信提供商领域更典型)。毕竟,如果您要自动化一个流程,您最好有一个流程。基于这些标准开展工作有两个好处。
首先,这些标准捕捉了今天的最佳实践,并且数据中心管理器在采用新工具或技术时希望尽可能减少流程变更。大型公司内部 IT 基础设施管理成本的大部分(许多调查显示为 70%)是由与基础设施(网络、存储、服务器、操作系统等)和应用程序管理相关的人工成本占用的。最大限度地减少流程变更降低了采用新技术的成本,从而使它们更具吸引力。
其次,自动化是将流程从人工或手动执行转移到机器或自动执行领域。如果企业网格中现有资源和服务的管理已经建立了完善的流程,那么它们自然会成为履行类似功能的工具的基础。
因此,一致操作模型的基础是存在的。那么架构呢?
如前所述,许多专有的供应商驱动架构占据了这个领域,加上 OGSA,这是一个相当高级的标准架构。后者对于数据中心而言还不够具体,也不够详细,无法付诸行动。重点是使用 Web 服务来管理基础设施和应用程序,因此尚不清楚这将如何支持现有应用程序和基础设施。尽管如此,人们正在花费大量精力来推动这项工作向前发展。
最后,还有核心的使能机制。图 3 说明了当今数据中心中虚拟化和抽象化的各个层。该图并非旨在成为最终的,而仅用于说明,例如,物理组件可以被虚拟化。然后,这些组件被操作系统等抽象化。这些组件可能反过来在被抽象化之前被虚拟化。请注意,尽管媒体对虚拟化技术的到来进行了大量炒作,但大多数技术已经存在。只是其中一些较新的技术开始在生产中被采用,并且它们正在与抽象化和自动化产品相结合。这些产品通常处理非常具体的管理领域,因此实际上还没有一种可以充当企业网格元操作环境的单一产品。尽管如此,今天可以构建解决方案——尽管是临时的和非基于标准的。
网格提供了提高服务性能、可扩展性和可用性的机会,同时还提高了敏捷性和效率。
一般的网格,特别是企业网格,是不可避免的。这从技术趋势(即,从以服务器为中心的应用程序到网络分布式服务——以 Web 服务和 SOA 为代表——以及从服务器作为平台到网络作为平台)中可以明显看出。
然而,实现所有潜在的好处需要付出巨大的努力,重点是企业网格的管理,包括流程改进和技术——虚拟化资源的技术,使资源更容易共享和用改进的实现替换,以及抽象化和自动化的技术,允许通过缓慢地从以组件为中心的管理模型转向以服务或应用程序为中心的模型来实现管理的可扩展性。
许多技术已经存在,并且今天可以通过以下方式实现真正的、可量化的好处:
从长远来看,企业网格将使企业数据中心真正敏捷,能够发展(可能是自然而然地),并快速适应业务需求。通过开发适当的管理技术,它们还将使企业数据中心内部能够实现真正的规模经济。
这项工作正在顺利进行中,并且通过使用现有技术已经可以获得许多好处。然而,这段旅程是漫长的,必须管理好期望,以避免失望。
PAUL STRONG 是 Sun Microsystems 的系统架构师,他在那里专注于网格标准和 N1 产品集。他在 Sun 工作了八年,四年多前是最初 N1 团队的成员,并且与他人合著了《构建 N1 网格解决方案》(Prentice Hall,2004 年)一书。Strong 是企业网格联盟技术指导委员会及其参考模型工作组的主席,他在那里编辑/合著了 EGA 参考模型。他拥有英国曼彻斯特大学的物理学理学学士学位。
最初发表于 Queue 第 3 卷,第 6 期—
在 数字图书馆 中评论本文
Marc Brooker, Ankush Desai - AWS 的系统正确性实践
构建可靠且安全的软件需要一系列方法来推理系统正确性。除了行业标准的测试方法(如单元测试和集成测试)之外,AWS 还采用了模型检查、模糊测试、基于属性的测试、故障注入测试、确定性模拟、基于事件的模拟以及执行跟踪的运行时验证。形式化方法一直是开发过程的重要组成部分——也许最重要的是,形式化规范作为测试预言,为 AWS 的许多测试实践提供正确的答案。正确性测试和形式化方法仍然是 AWS 的关键投资领域,这些领域已经看到的投资回报加速了这一进程。
Achilles Benetopoulos - 数据中心计算机的中间表示
我们已经到了分布式计算无处不在的地步。内存应用程序数据大小正在超过单台机器的容量,因此需要将其分区到集群中;在线服务具有高可用性要求,这只能通过将系统部署为多个冗余组件的集合来实现;高持久性要求只能通过数据复制来满足,有时跨越广阔的地理距离。
David R. Morrison - 模拟:分布式系统中的一种未被充分利用的工具
模拟在人工智能系统的出现中发挥着巨大的作用:我们需要一种高效、快速且经济高效的方式来训练人工智能代理在我们的基础设施中运行,而模拟绝对提供了这种能力。
Matt Fata, Philippe-Joseph Arida, Patrick Hahn, Betsy Beyer - 公司到云端:谷歌的虚拟桌面
超过四分之一的 Googler 使用内部、数据中心托管的虚拟桌面。这种本地产品位于公司网络中,允许用户从世界任何地方远程开发代码、访问内部资源和使用 GUI 工具。在其最显著的功能中,虚拟桌面实例可以根据手头的任务调整大小,具有持久的用户存储,并且可以在公司数据中心之间移动以跟随出差的 Googler。直到最近,我们的虚拟桌面都托管在使用名为 Ganeti 的自制开源虚拟集群管理系统的 Google 公司网络中的商用硬件上。今天,这项重要且对 Google 至关重要的工作负载在 GCP(Google 计算平台)上运行。