IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Grid computing  >

商业服务网格,第 1 部分: 简介

用服务域技术管理 Web 服务和网格服务

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Yih-Shin Tan (ystan@us.ibm.com), 高级技术人员
Brad Topol (btopol@us.ibm.com), 高级技术人员
Vivekanand Vellanki (vellanki@us.ibm.com), 顾问软件工程师
Jie Xing (jiexing@us.ibm.com), 顾问软件工程师

2004 年 6 月 01 日

欢迎阅读这个新系列的首篇文章,该系列是关于用新的服务域(Service Domain)技术构建商业服务网格解决方案。第 1 部分概述了服务域。本系列包含以下方面的文章:如何实现商业服务网格、如何定制网格基础结构以及对服务域概念和工具箱中选定主题的深入讨论。

服务域通过公共服务入口点表示一组相似或相关 Web 服务。它应用自主计算原理聚集 Web 服务和网格服务。服务域技术提供一种服务网格,并能够自主地创建、过滤、发现、群集、组织、选择、路由、恢复和切换 Web 服务和网格服务。在本文中,作者对服务域体系结构进行了概述。

服务域是什么?


Web 服务是作为一种流行的用于商家到商家的应用程序方法出现的。它们正在得到普及,并且兼顾了更佳的互操作性以及经过改进的分布式系统集成。Web 服务很适合于那些通过 Web 将不同公司之间的业务应用程序连接起来的电子商务应用程序。例如,厂家可以使用这些 Web 服务与供应者连接,从而实现订单需求。

在创建基于 Web 服务的应用程序时会出现几个问题:

  • 如何确保能够找到合适的 Web 服务?
  • 如何保证支持业务过程完整性?
  • 如何使资源利用率最大化?
  • 如何使服务提供者将其 Web 服务推向大量“消费者”?

经过一番深思熟虑,人们发现,显然使用 Web 服务并不是轻而易举的。基于 Web 服务的应用程序会引起许多令人头疼的问题。例如,构成应用程序的 Web 服务发生故障时可能不发出警告,这就需要系统进行特殊的安排来找到新的 Web 服务代替出故障的 Web 服务。或者,Web 服务可能变得负载过重,因而不能及时响应,这会违反服务级别协定(service-level agreement,SLA)。在其它情况下,您可能需要发现新服务或实时创建新的服务实例,以确保即使是在请求的高峰期间也可以满足请求。最后,根据特殊环境,您可能需要将请求路由到更适合的 Web 服务,因为该服务更适合于满足这个请求。

而实现健壮的 Web 服务应用程序似乎是一件令人头疼的任务。幸运的是,一种基于 Web 服务的新技术 ? 服务域 ? 解决了所有这些 Web 服务难题,另外还解决了其它一些难题。服务域使一组 Web 服务以协作方式进行工作,并提供附加的服务,以确保 Web 服务以一种运行良好且协同的方式平稳地执行。为了实现无缝操作,服务域通常包括一些附加的服务,譬如:

  • 服务选择和分派
  • 过滤
  • 共享
  • 聚集
  • 管理。

服务域技术为 Web 服务环境提供了这层补充服务。它可以自主地创建、过滤、发现、群集、组织、选择、路由、恢复和切换 Web 服务。

服务域为常规的、运行的工厂 Web 服务提供了有力的支持,另外还为网格服务提供了相同的功能。正如开放网格服务基础结构(Open Grid Service Infrastructure,OGSI)所定义的,网格服务是令人激动的新型的 Web 服务,遵循专门的约定,从而使不同的客户可以更轻松地共享该服务及其使用的资源。服务域提供了对网格服务的支持,同时利用网格服务技术来提供服务域的一些高级功能。有了其网格服务基础,服务域就可以提供业务服务网格的概念,也就是自动地分派可用的最佳服务(该服务来自动态组装的服务提供者的池中),以便满足用户需求。

服务域通过公共服务入口点表示一组相似或相关服务。可以通过利用服务域轻松地建立网格。它可以选择合适的 Web 服务实例来处理 Web 服务请求,监控它所选择的 Web 服务实例的性能,并在必要时执行故障转移处理。正如 Web 服务级别协定(Web Service Level Agreement,WSLA)和业务安排中所指定的那样,不能只根据可用性来选择 Web 服务实例,还要根据服务质量(QOS)特征进行选择。对 Web 服务的选择是根据服务策略自动执行的,并且服务域所提供的功能允许服务站点拥有者隐藏异构环境下处理多个客户机请求所需的实现复杂性。

用于服务集合的服务域基本单元是服务台(service desk)。可以将多个服务台组合起来以协作方式工作;当出现这种情况时,将聚集的服务台称为服务中心(service hub)。因此,服务域拥有了由异构的自主服务处理单元组成的嵌套式体系结构,这些处理单元本身是服务台或服务中心。可以将服务域工具箱作为 Web Services Toolkit V3.3 中的技术预览组件而使用(请参阅参考资料)。它为网格的组成、操作和管理提供了预制域(prefabricated domain)。预制域是一种用于插入具体服务实例中的服务网格。服务域还提供了域服务,域服务是用于组成新的定制域的特定功能的核心构件。域服务的示例包括发现服务、注册服务和选择服务。





回页首


服务域体系结构


通过服务入口接口、服务连接接口和服务策略接口,服务域体系结构描述了服务共享和聚集模型。下图 1 给出了单一服务域体系结构的概览。如图所示,服务域是从标准网格服务和 Web 服务基础结构构建的,这些基础结构包括:

  • OGSI portType
  • 简单对象访问协议(Simple Object Access Protocol,SOAP)
  • 可扩展标记语言(Extensible Markup Language,XML)
  • 统一描述、发现和集成(Universal Description,Discovery,and Integration,UDDI)
  • Web 服务描述语言(Web Services Description Language,WSDL)
  • Web 服务检查语言(Web Services Inspection Language,WSIL)
  • Web 服务调用框架(Web Services Invocation Framework,WSIF)。

但是,服务域为实现 Web 服务和网格解决方案提供了更高级别的接口。

服务域提供服务入口接口作为 Web 服务描述语言(WSDL)服务,该服务带有一个对外公开的 URI 地址。作为 Web 服务,服务域提供了用于注册、执行和管理所提供服务的编程方式。服务域可以支持企业内使用的 Web 服务以及外部 Web 服务。此外,所支持的每个 Web 服务都可以是服务域。服务域可以支持各种 Web 服务分派方法,包括:SOAP、WSIF、网格和文档样式。


图 1. 单服务域的体系结构化概览
单服务域的体系结构化概览

服务域还提供了一种用于设置服务域操作智能的服务策略接口。服务域按一组规则进行操作,这些规则包括:

  • 服务级别定义
  • 安全性
  • 恢复
  • 事件处理
  • 发现
  • 选择/路由
  • 服务映射
  • 商业标准。

对于聚集的服务实例的入站服务请求,这些规则控制对这些请求的服务域自动处理。

服务域调用内部服务聚集引擎,以在为外部服务请求提供服务时维护其策略和状态。该引擎还执行选择和分派,以找到用来执行请求的服务实例,并等待肯定的响应消息以返回给请求者。并非所有请求都需要分派。在此种情况下,该引擎返回关于域中所聚集服务的信息。可以将引擎处理进一步分解为模块化的功能单元,以便可以定制引擎处理,来满足平台、网格作用域、操作逻辑等的特殊需求。

服务域的聚集形成了支持网格的业务解决方案和应用程序的基石,如下 图 2所示。图中展示了一个具有嵌套式体系结构的样本作业提交服务域。最顶层表示接收和响应所有服务类型、商业交易或域管理请求的整个域。为了使网格处理顺畅,它将自动且同时执行几个任务。正如图中相应的数字所示,这些任务包括:

  1. 通过将入站请求传播到相应的服务域(SD)以选择一个实例来为它提供服务
  2. 发现其它 SD 上的类似服务
  3. 在这个 SD 上部署新服务
  4. 将请求卸载到其它 SD。

服务域的中间层表示几组服务集合,而底层表示将要解析到实际服务实例的集合。

发现机制填充这个服务域中的服务实例,或者 发现其它服务域以卸载过量的请求。当域的容量已经达到其部署的极限时,就可能发生这种情况。

通过使用请求标识作为键来查找 SLA 信息(它控制了这个请求对服务域的使用),服务域执行服务选择行为。将它与现有选择规则进行匹配,以选择最适合于当前条件的服务实例。SLA 和选择规则是在服务策略中设置的。选择过程利用受监控的数据和事件,如有必要则会执行故障转移处理。本系列的后续文章将描述如何实现利用服务域的服务网格。


图 2. 服务域综合体的体系结构概览
服务域综合体的体系结构概览




回页首


服务域提供的服务


服务域体系结构支持从异构的自主服务处理单元(这些单元可以是服务中心或几组服务)构建支持网格的解决方案。服务域工具箱为网格的组成、操作和管理提供了预制域和域服务。当前版本的服务域工具箱包括几个基本的域和域服务,下面将简要描述其中的每个域和域服务。

用预制服务域实现服务网格


现成可用的预制服务域为插入特定服务实例(如金融、贸易、旅游、服务注册和职业介绍)提供了几种域模式。它们旨在用于从现有模式实现服务网格的应用程序开发人员或网格解决方案。这些域是通过使用 Web 服务、网格服务或 Java 标准的服务域接口来进行实例化和访问的 WSDL 服务:
根服务域
该域是作为名为 ServiceDesk 的 Java 类而提供的,它将网格的基本单元表示为一组服务;服务本身可以是服务台。可以对它进行实例化或继承,以构成服务集合单元来支持特定于应用程序或系统的域。用静态或动态的方式将具体服务实例注册到服务台,服务台能够对服务实例进行访问、过滤、注册、选择、列出、设置 QoS/SLA 和策略特性;监控以及通知关于服务实例和服务台的事件。
根中心服务域
该域是作为名为 ServiceHub 的 Java 类提供的,这个类继承了 ServiceDesk ,表示一组 ServiceDesk 。可以对它进行实例化或继承,以形成支持特定于应用程序或系统的域的中心。该域提供了与服务台相同的能力,另外还提供了自动的服务组合功能。 它将具有相同接口定义的服务实例自动地组合为中心的一个公共 portType 。(将来,这可以用静态方式或动态方式生成。)
注册和发现服务域
该域是作为名为 RegistryDiscoveryDomain 的 Java 类提供的,这个类继承了作为通用的服务注册和发现域的原始 DomainBase 类。可以将它实例化或继承为服务注册中心,用注册和发现方法进行访问。该域提供注册、列出和发现域综合体中服务实例的能力。可以将它扩展以构成服务注册和发现域的网络,来支持各种复杂的服务注册和发现需求。
基本服务域
该域是作为名为 DomainBase 的 Java 类而提供的,这个类作为最小的服务域可以担任域组成过程的锚点(anchor)。

实现定制服务域


域服务是从服务域体系结构实现中分解出的核心构件。可以定制和混合域服务,以构成特定的域聚集引擎,这些引擎是满足预制域所不能满足的特定域模式所必需的。例如,侧重于 CPU、存储和网络带宽类型的计算资源分配的系统服务域,可能会希望混合特定于现有平台和系统的管理和选择策略,以取代根服务域所提供的策略。域服务是通过 Web 服务、网格服务或 Java 标准进行实例化和访问的 WSDL 服务:
域服务
为服务域提供服务入口门户方法,如设置域属性、服务注册、访问和锚接到该域的其它服务。
注册服务
处理注册中心属性、注册和注销;设置和返回与域中所提供服务相关的服务信息。
发现服务
发现其它服务域所提供的服务实例,以填入目标域。
选择/路由服务
聚集服务选择规则,以便为域的入站请求分派服务实例。
列表服务
维护在资源库上域注册的、所提供的服务的状态和列表。
QoS/SLA 服务
处理该域的服务策略或合同中所指定的服务级别定义。监控域和所提供的服务,以便通知订户服务级别事件以及达到阈值的时间。
策略服务
处理该域的服务策略。监控域和所提供的服务,以便通知订户策略事件以及出现达到阈值的时间。
监控服务
监控为该域所收集的测量和检测数据而设置的阈值,并在阈值事件发生时通知订户。
通知服务
处理该域中所生成的服务事件的发布和订阅。
部署服务
分发所提供服务的二进制映像,以在该域所拥有或管理的服务器实例上物理地创建新的服务实例。
分组服务
自动将所提供的类似服务组合到嵌套的域。
测量服务
提供关于该域具体的测量和检测数据,包括所提供的服务。




回页首


结束语


本文已经向您介绍了作为一组服务的服务域的概念。服务域本身也可以是更进一层的几组服务。使用策略规则将类似和相关的服务聚集到一起。这将会简化提供服务网格的任务。关于如何使用服务域的概念和工具箱实现商业服务网格,将在本系列后续文章中提供详细的讨论和指导。

本系列的下一篇文章将研究一个样本方案,并讨论服务域的主要处理步骤。



参考资料



作者简介

作者

Yih-Shin Tan 是 IBM Software Group 的高级技术人员。他的专业领域包括基于 Web 的系统软件体系结构、分析、设计和开发,另外他已经成为新兴技术的前沿开拓者。目前,他是 WebSphere 平台系统系列高级设计和开发(WebSphere Platform System House Advanced Design and Development)组织的 Web 服务和网格计算集成技术的首席架构设计师。他曾经协助开发了作为 IBM alphaWorks 上的技术概念演示的服务域工具箱。可通过 ystan@us.ibm.com与 Yih-Shin 联系。


作者

Brad Topol 是 IBM 位于北卡罗来纳州 Research Triangle Park 的高级软件工程师,他在 WebSphere 平台系统系列高级技术(WebSphere Platform System House Advanced Technology)部任职。他于 1998 年获得佐治亚州理工学院的计算机科学博士学位。目前,他正积极地参与 Web 服务、网格计算、OGSA 和自主计算等领域的高级技术项目。可通过 btopol@us.ibm.com与 Brad 联系。


author

Vivekanand Vellanki 参与了 Web 服务、网格计算和自主计算领域的高级技术项目。他于 2001 年获得佐治亚州理工学院的计算机科学博士学位。他的兴趣包括计算、Web 服务器和对等计算。可通过 vellanki@us.ibm.com与 Vivek 联系。


author

Jie Xing 是一位顾问软件工程师,他已经在 IBM 位于北卡罗来纳州的 Research Triangle Park 工作了一年半时间。目前,他参与了 Web 服务、网格计算和自主计算领域的高级技术项目。他于 2000 年获得北卡罗来纳州立大学计算机科学运筹学博士学位,他的研究兴趣包括多代理系统、分布式系统和工作流。可通过 jiexing@us.ibm.com与 Jie 联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款