SaaS模式下支持多租户可定制的Portlet协作模型设计
- 格式:pdf
- 大小:701.49 KB
- 文档页数:5
第29卷第9期
2012年9月 计算机应用与软件
Computer Applications and Software V01.29 No.9
Sep.2012
SaaS模式下支持多租户可定制的Portlet协作模型设计
张若定王 帅 杨 燕黄涛
(中国科学院软件研究所软件工程技术研究开发中心北京100190)
摘要 SaaS已经成为云计算应用层的标准软件交付模型,该软件的核心技术特点是单实例多租户体系结构。这种多承租体系 结构在降低服务运营商成本的同时,也要求软件在功能上具有更强的可订制性,以满足不同租户的特定需求。以SaaS的方式提供 Portal服务,不仅可以减少运营商的成本,而且也大大降低了购买者的维护费用,这将使Portal产品更具有市场竞争力。但已有的
Portlet规范并没有考虑SaaS模式和多承租需求,因此不能支持租户对Portlet协作进行订制。对JSR286规范进行扩展,提出一种支 持多租户可订制的Portlet组件协作模型,使Portlet规范可以吏好地满足SaaS应用的需求,并给出在Portal系统中该模型的设计和实
现。
关键词 多承租Portlet协作可订制
中图分类号TP31l 文献标识码A
DOI:10.3969/j.issn.1000—386x.2012.09.044
DESIGN oF MULTI.TENANT CUSToMIZABLE PoRTLET
CooPERATIoN MoDEL UNDER SAAS
Zhang Ruoding Wang Shuai Yang Yan Huang Tao
(Technology Center ofSoftware Engineering,Institute ofSoftware,Chinese Academy ‘Sciences,Beijing 100190,China)
Abstract SaaS,whose core technical merit is the multi.tenant architecture with one single instance.has already become the standard
software delivery model in cloud computing application layer.This muhi-tenant architecture not only reduces the service provider’S cost,but
also makes software more customizable to meet different tenants’special requirements.Providing Portal service with SaaS model can reduce service providers’cost as well as purchasers’maintenance expenses,which enhances the portal products’market competitiveness.But
existing Port]et standards fail to consider the SaaS model and muhi—tenant requirement,thus earl’t support the customization of the Portlet
cooperation for tenants.This paper extends the JSR286 standard,proposes a tenant eustomizable Portlet component cooperation model which makes Portlet standard more compliable with SaaS application requirements.Moreover the design and realization of the model are also
included in the paper.
Keywords Multi—tenant Portlet Coordination Customizable
0 引 言
SaaS意味着一种全新的商业模式。这种商业模式的核心
特征可概括为 -3]:1)软件部署为托管服务通过互联网访问,
使得整个IT基础设施的管理和维护责任从客户转移到了外部
供应商。2)用户定制自己需要的服务模块,在用户层形成个性
化差异,这种定制包括特定的界面、业务流程、数据结构等,对 SaaS软件的开发提出了很高的要求。3)通过租用的方式收取
费用,企业用户根据选用的功能模块的不同和使用时间的长短
采取租用的方式向SaaS服务提供商付费,彻底改变了传统软件
的交付行为,客户和SaaS服务提供商达成租约,客户成为服务
的租户。 在软件实现层面,SaaS对软件开发带来的改变在于其提出
了“多租户”这一新的概念。两个公司(租户)租用同一个部署
在服务运营商处的服务,租户对服务进行定制,形成自己看到的 软件形态,不同租户公司内部的用户所看到的是不同的软件,彼 此之间相互透明。在软件体系结构上对多租户支持的不同实现
方法形成了SaaS软件成熟度模型 。如图1所示。
天 天 天
下T—r ■囟自
fa1 t,evelI 天 天 天
卤
图1四种SaaS成熟度模型
收稿日期:2011—10—09。张若定,硕士生,主研领域:Web工程 SaaS应用关键技术。王帅,硕士。杨燕,硕士。黄涛,研究员。
第9期 张若定等:SaaS模式下支持多租户可定制的Portlet协作模型设计 l63
Levell成熟度相当于原来的ASP(Application Service Pro— rider)模式,在实现层面上每个租户对应一个软件实例,每个实
例根据租户的特性需求开发,彼此不同相互独立。Level2成熟
度也是每个租户一个软件实例,但这些实例都是基于同一套相
同的代码和数据结构,不需要根据每个用户的需求进行重新开
发,在代码开发时充分考虑了可配置性,针对不同的租户采用灵
活的配置来生成软件实例。Level3成熟度是指用一个软件实例
满足所有租户的要求,除了可配置之外还增加了“多承租”特
性,使同一实例能够承担多租户的请求,而租户的uI、流程、数
据结构等都通过技术手段加以隔离。这就是SaaS模式下的多
承租体系结构。Level4成熟度是在Level3的基础上加入了负载
均衡,以便提高应用的性能和可扩展性。 Level3级别的多承租体系结构和技术是SaaS软件成功的
关键,它降低了服务运营商的成本,最终使SaaS模式在商业上
成为可能 。 以SaaS的方式提供Portal服务,不仅可以利用云计算等后
台技术降低服务运营商的成本,而且其租用模式也大大降低了
服务使用者的维护成本,这将使Portal产品更加具有市场竞争
优势。Portal系统由若干Portlet组件构成 ,规范定义了Portlet
间的协作方式。在SaaS模式下不同租户必然有自己特殊的协
作需求,这就要求Portal系统提供租户可订制的Portlet协作方
式,对现有规范所定义的协作模型提出了全新的挑战。
1 现有Portlet协作规范对多租户的支持
1.1 Portlet协作规范
JSR286规范是门户技术的核心,它完整地定义了Portlet组
件的使用方法和接口,规范定义Portlet组件有两种专门的协作
方式:
一是基于公共渲染参数的协作。可以定义在各Portlet间共
享的公共渲染参数,在动作处理阶段组件可以设置该参数的值,
在随后的Render阶段支持该共享参数的Portlet都能看到被设
置的值,以此来达到协作的目的。
二是基于事件的协作。组件间还可以通过事件机制进行协
作,在动作处理阶段组件发送定义好的事件,事件的发生会引起
其它组件的被调用,在事件处理阶段组件仍然可以继续发送事
件。如下配置片断所示: .
<public—render—parameter> <identifier>foo</identifier> <qname xmlns:X= http://example
qname> </public—render-parameter> <event—definition>
<name>eventl</name> <value—type>java.1ang.String</value—type> </event.definition> <portlet> <portlet—name>portletA</portlet—name <supposed—public—render・parameter> <name>foo</name>、 </supposed—public—render—parameter> <supposed-publishing・event>
<name>eventl<name> </supposed—publishing-event> 、、~一釜里B-_
L兰=====l皿 ,1 7PortletB [
:、、、
. 匡
图2现有协作模型在多承租下的问题 本文对规范定义的协作模型进行扩展,使得扩展后的Port—
let可以以单实例多租户的“Level3”级别的方式来实现多租户
的定制。
2支持多承租体系结构的Portlet协作模型
2.1对协作配置的扩展
为了使单个Portlet组件可以感知不同租户所定制的不同的
协作行为,首先扩展配置文件的表达能力,在配制文件中加入< Tenant>元素以表示租户信息。如下的配置片断所示:
<portlet—app> <Tenant> <description>公司A</description>
<nanle>公司A</name>
</Tenant> 第9期 张若定等:SaaS模式下支持多租户可定制的Portlet协作模型设计 165
derParameterNames(Tenant tenant)和getPublishingEventQNames
(Tenant tenant)。 2)在PortletRequest接口中重新定义方法getPublicParame—
terMap(),该方法必须返回与此次请求相关联的租户定制的公
共渲染参数的Map对象,如果没有与该租户相关联的公共渲染
参数则返回一个空Map。该接口中一切与得到公共渲染参数相
关的方法,如getParameter和getParameterMap,都应该遵守以上
规则,当公共渲染参数对组件不可见时,该参数的返回值为
NULL。 3)EventRequest接口中重新定义方法getEvent(),容器必
须保证每次调用该方法所得到的事件为当前发起请求的租户所
定制。
4)StateAwareResponse接口中重新定义方法removePubli—
cRenderParameter(java.1ang.String name),当调用此方法时,如