SaaS模式实现多租户应用

2012-02-14 14:57
通信电源技术 2012年3期
关键词:配置文件租户字段

张 华

(渤海大学 应用技术学院,辽宁 锦州121000)

1 SaaS简介

云计算是一种使用Internet来访问IT资源的新型网络应用模式。用户只要连接上Internet,就可以以租用的方式来使用存诸在“云”中的各种各样的IT资源,无论是硬件还是软件,而租户不用知道到底这些资源存诸在什么位置,由谁来管理。云计算正在逐渐改变着终端用户的使用体验。云计算提供IaaS(Infrastructure as a Service:基 础 设 施 即 服 务),PaaS(Platform-as-a-Service:平台即服务),SaaS(Software-as-a-Service:软件即服务)。本文主要讨论目前应用最为广泛的SaaS。

SaaS(Software-as-a-Service:软件即服务)是云计算提供的一种服务类型,即通过Internet提供应用软件的服务模式。SaaS供应商将开发的应用软件统一部署在服务器上,租户可以根据自己的实际需求,通过Internet向SaaS供应商租用所需的应用软件服务,租户按租用应用软件服务数量的多少和租用时间的长短向SaaS供应商支付费用。这种模式作为一种新型的软件运营模式,具有价格适中、维护方便、使用简单等特点,正在被越来越多的企业接受和认可,那么它和传统的在本地运行的应用软件相比有哪些区别呢?

(1)开发的周期:对于个性化的定制软件,传统的开发模式从需求分析、软件设计、程序编码、软件测试到运行维护根据定制软件的复杂程度可能最快需要三个月的时间才能完成投入使用;而SaaS模式企业只要找到合适的SaaS供应商,提出自已的实际需求,最快可能在几分钟之内就可以把应用软件布署完成,租户便可以使用。

(2)软件的所有权:传统应用软件的所有权是属于自己企业的,比如从某软件公司定制一个财务管理的应用软件,企业会得到一个安装文件,在本机上安装运行使用,以后这个软件的所有权就属于本企业;而SaaS模式,应用软件的所有权是属于SaaS供应商的,企业只是租用了应用软件的服务,而没有拥有应用软件本身。

(3)硬件的支持:传统应用软件都是运行在本地计算机上,所有的硬件环境是由企业自身来提供的。而SaaS模式因为应用软件不是运行在本地计算机上,而是在SaaS供应商所提供的计算机上,所以所需的硬件也是由SaaS供应商提供,企业是租用SaaS供应商的硬件资源。

(4)性能的维护:传统的应用软件性能的维护是由企业自已的IT部门来负责,因为软件的性能很大的程度是由硬件条件来决定的;而SaaS模式则是由SaaS供应商来负责保证应用软件的性能。

(5)费用:传统应用软件的费用主要由购买软件的版本费用,硬件支持费用、软件维护的费用三方面购成的;SaaS模式是按照租用应用软件服务数量的多少和租用时间的长短向SaaS供应商支付费用。

通过对比,发现使用SaaS模式租用软件和使用传统方式定制软件相比优势非常明显,SaaS模式正逐渐受到企业的关注,并在将来很可能会成为企业信息化首选的一种实现方式。

2 SaaS的技术实现

对于SaaS供应商而言,一个SaaS应用发布后,最重要的技术难关应该是能够提供多个租户同时租用,不同的租户对应用软件配置之后可以形成适合自已企业的一个应用软件实例,由本企业来使用。但租户的要求是千差成别的,要让一个软件支持多个租户同时使用,目前主要通过配置文件和数据库设计两个方面来满足其个性化的业务需求。为了便于理解,在此之前,先来参考一下微软提出来的SaaS架构的四个成熟度模型。

一级:定制级

在这种成熟度模型下,应用程序的代码有一部分是公用的,但SaaS供应商也要为每个租户做一部分定制化的开发,每个租户都拥有独一无二的应用实例。

二级:配置级

在这种成熟度模型下,所有实例都使用相同的基础代码,但要求SaaS供应商提供详尽的配置文件,可以让租户能够任意的订制应用软件的行为和外观,从而满足不同租户的需求。

三级:多用户效率级

在这种成熟度模型下,SaaS供应商利用一个实例来满足不同租户的需求,并采用可配置文件为不同的租户提供独一无二的用户使用体验。

四级:可扩展性级

此级成熟度是最高级别的成熟度,SaaS供应商在负载平衡的服务器上为不同租户提供主机服务,运行相同的实例,不同客户的数据彼此分开,可配置的文件可以提供单独的租户体验与特性集。

在这四个级别的成熟度中,成熟度级一和成熟度级二隔离性好,共享性低,成本会高一些;成熟度级三和成熟度级四共享性高,隔离性差,成本会低一些。

2.1 配置文件的实现方式

不同的租户对于租用的应用软件功能和外观要求有差异,目前解决的办法是通过配置文件来实现,可以使用Portal技术来完成配置实现。Portal技术主要提供个性化定制、单点登录和内容聚集等功能,所有这些功能在与最终用户进行个性化的交互中实现,用户可以决定自已的应用程序窗口的风格,也可以决定自已的页面上显示哪些内容,通过 “My Portal”来满足每个租户的需求。

Portal的每个交互页中包含了很多种不同的信息,分成不同的小窗口,而每个窗口是一个单独的应用,这些窗口称为Portlet。一个Portal可以是多个Portlet的集合。Portal提供Portlet的运行环境,称之为Portlet容器。Portlet容器负责创建Portlet,接受Portal服务器的请求,并将请求发给相应Portlet,同时返回Portlet生成的内容并管理它们的生命周期。而Portal服务器负责将每个Portlet生成的内容集合起来展现给租户,与租户交互。因此在开发Portal应用时,主要是开发实现各个功能的Portlet。Portlet实际上和Servlet很类似,是Java编写的WEB组件。

Potal应用的重要功能就是“个性化”,一方面Portlet也会根据租户的要求显示不同的内容,另一方面Portal服务器需要根据租户的不同显示不同的Portlet。这就要求Portlet能够保存租户的信息,Portlet的Portlet Preferences接口提供读取、设置属性的方法。通过Portal便能对配置文件进行控制,让不同的租户有不同的使用体验。

2.2 数据库的设计

为了让SaaS应用能满足不同租户的需求,数据库的设计必须具有可扩展性,以满足不同租户的不同需求。目前数据库设计可分为隔离模式和共享模式。隔离模式即为每个租户设计单独的数据库,此种方式安全性较高,但消耗的硬件资源较大,成本较高。共享模式即为不同租户共享同一数据库,此种模式相对来说数据库安全性较低,成本较低,但开发难度较大,因为不同的租户对于数据库的要求是不一样的,比如同为公司员工信息表,有的公司可能有家庭住址的信息,而有的公司没有,或者都有这一项,但不同公司定义的名称是不一样的,怎样让不同的公司来共享同一个数据库呢?

(1)传统的解决方案是冗余设计,就是设计一个详尽的大表,设计时把各个公司所有可能出现的字段都填加上,如果租户有需要就添加该字段信息,否则为NULL。这样的设计固然能解决问题,但缺点也不言而喻,浪费空间,影响效率。

(2)通过关联表的方式来解决,即通过扩展表来实现数据扩展。在这种方案中关联表将数据表的横向列扩展转换成纵向的数据集,将原数据表中每一个扩展字段都保存成一条数据记录,并将数据表中的记录与原表关联,构成扩展数据记录。通常需要三张数据表:租户表,配置表和扩展表。当租户想要增加数据时,只需把字段名称、类型和扩展表等信息存在配置表中,在扩展表中保存关联记录、与之关联的配置记录和数据的值。

(3)XML的数据扩展模型。XML即可扩展标记语言,它的主要功能是存储数据和WEB服务,在SaaS应用中可以把XML作为一个字段放在数据库中来实现数据的扩展性,通过SQL查询语句来访问字段中的XML文档中的数据。XML文档的层次性便于对数据的扩展,而且XML文档具有数据语义的自解释性,使得对数据的解析变得简单。很多关系型数据库都增加了XML数据类型。XML数据类型可用作参数和变量的数据类型,还可用于创建表、列或视图。这种模型只需要对XML字段进行扩展就可以灵活地满足租户扩展数据的要求,而且对字段类型和字段扩展的数量都没有限制。因此,基于XML的数据类型,可以灵活方便地应对不同租户的数据扩展需求。

综上所述,通过Portal技术和数据库的扩展技术,便能够设计出能够同时满足多个租户的SaaS应用。

3 总 结

SaaS模式是随着云计算发展,满足市场的一种需求。要想使SaaS应用更加普及,就要求SaaS供应商能够提供更加低廉的价格、更加完善的功能、和更高品质的服务。目前,SaaS应用在中国仍在起步阶段,除了技术问题之外,SaaS供应商的可靠性和口碑、营销手段、商业运作模式等方面都对SaaS模式在中国的推广提出了挑战,也会为国内软件企业和互联网企业的发展带来新的机遇。

猜你喜欢
配置文件租户字段
从Windows 10中删除所有网络配置文件
多租户数据隔离及加密研究
用软件处理Windows沙盒配置文件
基于多租户隔离的云安全建设
互不干涉混用Chromium Edge
浅谈台湾原版中文图书的编目经验
基于Zookeeper的配置管理中心设计与实现
一种新型高效的多租户共享数据模型
基于MVC模式的多租户portlet应用研究*
CNMARC304字段和314字段责任附注方式解析