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

developerWorks 中国  >  SOA and Web services | WebSphere  >

使用 IBM 中间件实现 SaaS 解决方案,第 5 部分: 多租户中介方法和三个实现选项

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

英文原文

英文原文


级别: 中级

Indrajit Poddar, 软件架构师, IBM
Devaprasad Nadgir, IBM 认证高级 IT 架构师, IBM

2009 年 8 月 31 日

本系列的第 1 部分介绍了 web 交付业务解决方案(也称为 Software-as-a-Service)中的多租户,第 2 部分讨论了支持多租户的三种方法。本文关注在第 2 部分首次介绍过的中介多租户方法。我们使用不同的 IBM 中间件产品为这种方法提供三个实现选项,并比较它们的相对好处。每个选项的详细实现步骤将在后续三个教程中介绍。

简介

关于"使用 IBM 中间件实现 SaaS 解决方案"系列的更多文章,请参考:

您也可以通过以下链接获取更多关于 SaaS 的资源:

在多租户的中介方法中,一个中央代理层(如 图 1 所示)在多租户用户请求和一个应用程序的多个实例或分区之间执行中介。这个中央代理层将来自一个特定租户的用户路由到一个特定于租户的应用程序实例或分区,并有效地支持其他通用多租户特性,如访问控制、测量、监视、审计等。这样,中介模式允许我们分别考虑服务供应商/开发人员的问题和一个我们称为平台供应商的新角色(参见 “参考资料” 中的 SaaS Platform)的问题。通过实现这种关注点分离,服务供应商或服务开发人员能够重新使用现有的应用程序,同时利用来自平台供应商的多租户支持特性。


图 1. 多租户的中介方法
多租户的中介方法




回页首


中介方法面临的技术挑战

本系列的 第 1 部分 介绍了部署多租户 web 交付解决方案时服务供应商所面临的几个技术挑战。其中的一个挑战是如何通过较少的代码修改甚至根本不修改代码来为现有的单租户 web 服务启用多租户功能。

解决这个挑战的一种方法是使用一个租户 ID 参数参数化 web 服务界面中的所有操作。图 2 展示了一个称为 retrieveCreditScoreBySSN 的单租户 web 服务示例,图 3 展示了添加一个多租户 tenantID 参数。在本系列的 第 2 部分 中,我们将这种方法称为 “共享多租户”。这种方法需要代码更改(WSDL 和 java 类)和现有应用程序的重新部署,因此执行起来可能既困难又昂贵。


图 2. 一个简单的信用计分服务的界面定义
一个简单的信用计分服务的界面定义


图 3. 添加特定于租户的请求属性的界面定义更改
添加特定于租户的请求属性的界面定义更改

“中介多租户” 方法能够应对这个挑战,并能提供一些好处。使用这种方法,服务供应商能够构建一个 web 服务中介代理层,将来自一个租户的用户的服务请求路由到特定于租户的服务端点。对于现有的服务实现,这种方法的好处是只需很少甚至不需要代码更改。另外,这种方法还能有效支持其他所需的多租户特性,如测量和访问控制。我们将通过一个场景展示这种方法,并使用 IBM 中间件产品介绍三种实现选项。





回页首


展示中介方法

我们的示例场景有一个称为 Jivaro 的多租户银行应用程序,它带有两个租户:其一是 Bank of NA (First Bank),其二是 Canada Bank (Second Bank)。Jivaro 服务供应商管理员 Sam Peters 打算提供一个新的信用检查 web 服务,该服务集成两个外部服务供应商:Expo 和 S&R。


图 4. 银行场景
银行场景

服务要求如下:

  1. 能够支持多租户,无需对现有单租户信用检查服务进行任何代码更改。
  2. 根据 First Bank 的管理员 Betty Nord 和 Second Bank 的管理员 Caren Sims 的要求,需要在中介模式层中指定一个路由规则。
  3. 规则指定后,First Bank 的客户 Bob Nottingham 需要将他的请求路由到 Expo 服务供应商;Second Bank 的客户 Carrie Serrano 需要将她的请求路由到 S&R 服务供应商。
  4. 能够授权 Bob Nottingham 和 Carrie Serrano,以便他们能够访问多租户信用检查服务。
  5. 能够在给定时间段内监视 First Bank N.A. 和 Second Canada Bank 的客户使用信用检查服务的次数。

这个场景在三个实现选项对应的三个录制演示中介绍,它们可以在 IBM SaaS Blueprints 站点中找到。





回页首


实现中介方法

在随后的三个教程(第 6、7、8 部分)中,我们将展示如何使用以下三种 IBM 中间件产品实现这个中介方法。

  1. WebSphere Business Services Fabric (WBSF)
  2. WebSphere Enterprise Service Bus (WESB) with WebSphere Service Registry and Repository and Tivoli Access Manager (TAM)
  3. WebSphere DataPower SOA appliances with Tivoli Access Manager

注意:WebSphere Message Broker 也可用作另一个实现选项。请参考后续文章了解关于 WebSphere Message Broker 的更多细节。

本系列的 第 2 部分 介绍过,这种方法可以和支持多租户的共享方法和虚拟方法结合使用。在本系列的后面三个教程中,我们假设服务供应商使用 第 2 部分 中介绍的第 3 种方法以减少开发工作。在这种模式中,每个租户都获取自己的应用程序和中间件实例,但共享一个操作系统和硬件。

下面将介绍上述三个选项的主要步骤。每个步骤的细节将在后续教程中介绍。





回页首


使用 WBSF 的主要实现步骤

您可以通过参考 developerWorks 网站上关于 WBSF 的技术文章,了解更多关于使用 WBSF 的技术信息。

使用 WebSphere Business Services Fabric (WBSF) 来实现这个中介方法时有三个主要步骤:

  1. 使用针对每个特定于租户的端点的路由策略定义一个复合业务服务:
    a). 在 Rational Software Architect 7 上安装 WBSF Modeling Tool
    b). 使用 WBSF Modeling Tool 建模一个新的 TenantIDAssertion
    c). 配置 WBSF 服务器并导入 TenantIDAssertion
    d). 使用 WebSphere Integration Developer (WID) 创建一个 Credit Score Composite Business Service
    e). 使用 WID 中的 WBSF Composition Studio 创建一个 Business Policy,以路由多个租户的请求
  2. 使用 WBSF Subscriber Manager 为这个业务服务招收租户组织和用户。
  3. 使用 WBSF Performance Manager 监视特定于租户的服务使用。

这些步骤将在本系列的下一个教程(第 6 部分)中详细讨论。





回页首


使用 WebSphere DataPower SOA Appliances 的主要实现步骤

更多关于 WebSphere DataPower SOA Appliances 的技术资源,请参考 WebSphere DataPower SOA Appliances 产品专题

以下是使用 WebSphere DataPower (WDP) with Tivoli Access Manager (TAM) 实现中介方法的三个主要步骤:

  1. 在 WDP 中配置 Web Services Proxies
    a). 将 WSDL 文件和 LTPA 密匙上传到 WDP
    b). 在 WDP 中配置 SaasCreditCheckService Web Services Proxy
    c). 创建接受 WebSphere LTPA 验证令牌的策略
    d). 将验证决策委托给 Tivoli Access Manager
    e). 对每个特定于租户的 web 服务端点配置一个路由动作
    f). 在 WDP 中配置特定于租户的 CreditCheckServices Web Services Proxies
  2. 在 TAM 中配置验证策略
    a). 创建特定于租户的用户和组
    b). 为 CreditScoreWebService 创建一个访问控制列表(ACL)
    c). 向 ACL 添加经过授权的特定于租户的用户和组
  3. 在 WDP 中配置特定于租户的监视和 web 服务流量形成规则

这些步骤将在本系列的下一个教程(第 7 部分)中详细讨论。





回页首


使用 WESB 的主要实现步骤

查看 WebSphere Enterprise Service Bus 产品专题,了解更多相关的技术信息。

以下是使用 WebSphere Enterprise Services Bus (WESB) with WebSphere Service Registry (WSRR) and Repository and Tivoli Access Manager (TAM) 的主要步骤:

  1. 在 WESB 中创建一个中介模块以路由租户请求
    a). 在 WID 中创建一个中介模块
    b). 添加一个自定义中介原型(primitive)以提取租户 ID
    c). 在自定义中介原型中将授权决策委托给 TAM
    d). 添加一个 WSRR 端点查询原型以检索特定于租户的端点
    e). 在中介流中连线中介原型
  2. 在 TAM 中添加验证策略
    a). 在 TAM 中配置访问控制策略
    b). 集成 TAM 和 WESB
  3. 添加特定于租户的服务元数据以路由到 WSRR
    a). 加载服务元数据
    b). 使用一个租户 ID 属性注释服务端点元数据
    c). 集成 WSRR 和 WESB

这些步骤将在本系列的下一个教程(第 8 部分)中详细讨论。

每个实现选项的相对好处

表 1 列示了每个实现选项的相对好处。


表 1. 中介模式的三个实现选项的相对好处
WebSphere Business Services FabricWebSphere Enterprise Services BusWebSphere DataPower SOA appliance
通过在服务上下文的属性中包含断言进行语义中介。只需要很少的应用程序编码。通过中介原型在中介流中添加复杂的路由逻辑。使用硬件加速器提高性能。
只需更改策略就可以添加新租户,这不会影响现有租户。内置治理管理器用于在运行时部署策略更改。可以在运行时在 WSRR 中添加新的特定于租户的元数据,这不会影响现有租户,而且可能不需要对中介流进行任何代码更改。可以通过添加新的路由规则添加新租户,这只需使用配置步骤,且不需要代码开发。
为语义中介内置分类法和可扩展本体论。示例概念包括:业务服务、端点、组织、订阅者、通道和角色。内置协议转换功能并支持多种类型的适配器。内置 Web 服务和 XML 安全特性,以支持领先的行业标准,如 WS-Security。内置协议转换功能。可以很容易地使用 web 控制台远程配置设备。
内置订阅者管理器和性能管理器。无缝集成 Tivoli Access Manager 以更好地管理访问控制策略,无缝集成 WebSphere Services Registry and Repository 以更好地管理服务元数据。无缝集成 Tivoli Access Manager 以更好地管理访问控制策略,无缝集成 WebSphere Services Registry and Repository 以更好地管理服务元数据。




回页首


结束语

本文介绍了一个中介代理层如何在 SaaS 中提供可行的多租户方法。我们介绍了使用 IBM 中间件产品实现这个方法的三个实现选项:1. WebSphere Business Services Fabric,2. WebSphere Enterprise Service Bus,3. WebSphere SOA DataPower appliance;同时结合使用 WebSphere Service Registry and Repository 和 Tivoli Access Manager。我们还列示了每种实现选项的一些相对好处。在后面的教程中,我们将详细介绍上述每种实现选项的实现步骤。



参考资料



作者简介

Indrajit Poddar (IP) 是 IBM Software Group Strategy 的 Strategy, Technology, Architecture, and Incubation 团队的成员。他领导几个按 Software-as-a-Service (SaaS) 模型构建复合业务服务的集成 PoCs。


Nadgir

Devaprasad 是一名 IBM 认证的高级 IT 架构师,在印度 Bangalore 的 India Software Lab 工作。目前他参与 IBM Software Group 的 Service Registry 和 Federated SOA Governance 计划。他感兴趣的领域还包括架构方法、云计算、虚拟化和 SaaS。他的 博客 分享了他的一些见解和技术趋势。




对本文的评价










回页首


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