使用使用IBM中间件实现中间件实现SaaS解决方案,第解决方案,第3部分部分:单一实例多租户单一实例多租户
应用程序中的资源共享、隔离和定制应用程序中的资源共享、隔离和定制
本文内容包括:
简介
基于资源共享的多租户启用方法
多租户资源:J2EE 工件的共
享、隔离和定制机制
EasyOA,示例应用程序
结束语
参考资料
本文主要讨论基于单一共享应用程序实例的多租户模型。介绍在这种模式中重要 J2EE 工件的多租户资源共享、隔
离和定制机制。还通过一个示例应用程序讲解如何设计基于 IBM 中间件软件的支持多租户的 J2EE 应用程序。
简介简介
在本系列的第二篇文章中(使用 IBM 中间件实现 SaaS 解决方案,第 2 部分:启用多租户的方法),我们讨论了启用多租户
的三种方法,即虚拟化、中介和共享。本文主要讨论第三种方法,介绍如何使用单一共享应用程序实例同时支持多个客户组织
(即租户),实现经济有效性目标。我们要使用 IBM 中间件开发一个经济有效、安全且可配置的多租户应用程序。我们主要
关注多租户应用程序设计和实现的三个关键方面:
资源共享机制资源共享机制:减少每个租户的硬件、软件和管理成本
安全隔离机制安全隔离机制:防止租户之间的非法访问、冲突和干扰
定制机制定制机制:通过配置方法支持与租户相关的 UI、访问控制、过程和数据模型
为了便于读者理解,我们设计了一个示例应用程序 EasyOA,它应该有助于解释如何使用 IBM 中间件产品(尤其是 IBM
WebSphere Application Server (WAS)、DB2、Tivoli Directory Server (TDS) 和 WebSphere Process Server (WPS))实现多
租户模型。
基于资源共享的多租户启用方法基于资源共享的多租户启用方法
如图 1 所示,基于资源共享的多租户启用模式分为两类:1) 多个应用程序实例和 2) 单一共享应用程序实例。前者为每个租户
提供专用的应用程序实例,这些实例在共享的硬件、操作系统或中间件服务器上运行。后者用单一共享应用程序实例支持许多
租户,这个实例包含各种资源。这两种模式可以支持的租户数量差异很大。多实例方法用来支持几个(最多几十个)租户,每
个租户可能有数百位用户,使用一组服务器。单一共享实例方法用来支持大量小型租户,租户数量常常是数百个、数千个甚至
更多。
图图 1. 多个应用程序实例与单一共享应用程序实例模式多个应用程序实例与单一共享应用程序实例模式
应该根据特定的应用场景和目标客户的需求选择资源共享模式。通常,大型企业喜欢多实例方法,因为这有助于避免与资源共
享相关联的潜在风险。对于面向 SMB 客户(他们的服务预订预算比较少)的大多数服务,为了实现规模效益,业务模型必须
通过吸引大量客户增加收入,同时使用非常高效的可伸缩的多租户基础结构支持这些客户,降低每个客户的平均服务交付成
本。在这些场景中,多实例模式是不合适的,因为每个租户带来的收入很少,不足以抵偿为租户分配专用的硬件/软件资源的
成本。
尽管多租户应用程序在经济有效性方面非常有优势,但是它们也面对许多难题,尤其是与隔离和定制相关的问题。
首先,应该在各个租户之间支持应用程序级隔离。尽管所有租户共享同一个基础结构和应用程序实例,但是从用户体验、服务
质量 (QoS) 和管理的角度来看,租户当然希望像专用租户那样访问和使用服务。因此,在体系结构设计的几乎所有部分都应
该仔细考虑隔离,包括非功能性和功能性两方面,涉及安全性、性能、可用性和管理等。