浅析基于SaaS架构的多租户技术
2013-08-20李森
李森
(北京工业大学 北京 100124)
长期以来,IT行业以降低企业信息化成本作为首要任务,寻求一种创新的软件应用及服务模式。SaaS作为一种新兴的软件服务模式,为企业提供信息化所需要的网络基础设施及软硬件运作平台,并负责所有前期实施和后期的维护服务工作。实践证明,SaaS模式软件是一种按需使用,按需付费的创新商业模式,在大幅降低企业软件构建成本的同时,更使得软件使用者可以按需以租用方式进行软件的个性化部署,进而帮助企业更好的迎接全球化时代在信息化建设方面所面临的时间、效能与成本挑战。
1 Saas发展现状
SaaS模式,以Multi-Tenant模式提供软件的租用服务,无需将软件产品安装部署在本地,而是按照某种服务水平协议直接通过网络向专门的服务提供商获取自己所需要的、带有相应软件功能的服务。对于最终用户来说,和传统软件模式相比,SaaS具有更低的建设成本、更低的维护成本、更低的应用门槛,以及更低的应用风险等4大特点[1]。
在国外,SaaS应用服务起步早,例如专注于CRM应用领域的salesforce公司,提供一系列在线的CRM应用软件。Google公司则以其核心的搜索引擎业务为基础,依靠个性搜索和Gmail等产品积累大量客户,并推出了相关的在线办公软件。
在国内,所以随着国外SaaS软件进军中国市场,国内的很多软件商也开始调整了自身战略,投身其中;八百客的成立以及其随后推出的SOOCRM则正式标志着SaaS软件应用在中国的开始。Alisoft公司、Xtools公司等也相继推出了SaaS应用软件。
2 SaaS服务模式及相关概念
2.1 SaaS基本概念
SaaS指由软件服务提供商提供企业搭建信息化所需的网络基础设施以及软硬件运作平台,并负责所有前期的实施,以及租户使用过程中软件的升级与维护等一系列的服务,帮助租用服务的企业通过互联网使用信息管理系统,对企业日常事务进行有效地管理。在SaaS模式下,将应用软件统一部署到自己的服务器上,租户按需付费,获得在线的服务。SaaS模式使软件部署为全部托管,通过互联网存取的模式,同时向众多租户提供服务。
2.2 多租户概念及模型
多租户是指多个企业租户(Tenant)共享同一个应用实例[2]。以服务的形式将软硬件资源,运营管理维护资源提供给多个企业租户之间复用,从而有效降低SaaS应用的成本。
根据SaaS服务应用模式是否具有可配置性、高性能以及可伸缩性的特性,SaaS成熟度模型被分成了4个等级,通常被称为“成熟度”。其中,每一级都比前一级增加以上3种特性中的一种[3-4]。如图所示。
图1 SaaS模式下的四级成熟对比Fig.1 List of level 1-4 SaaS mode
图2 SaaS四级成熟度模型Fig.2 SaaS maturity model
第1级[5](Level_1)定制开发与传统的项目型软件开发或软件外包没有什么两样,即为每一个客户进行单独的开发和设计。第2级(Level_2)可配置指性是指针对不同客户的需求,通过不同的配置来满足,无需针对每个用户进行单独开发与设计,降低成本,一次开发多次部署。第3级(Level_3)高性能的多租户架构指通过一定的策略来保证不同租户间的数据隔离,确保不同租户既能共享同一个应用的运行实例,又能为用户提供独立的应用体验和数据空间,它的软件部署是多个租户共用一个运行实例,通过配置来满足不同租户间的个性化需求。第4级(Level_4)具备可伸缩的高性能多租户架构指在用户数量大量增加的情况下,无需更改应用架构,而仅需简单增加应用设备的数量,就可以支撑应用规模的增长;通过增加一个中间调度层,将租户分配到各个运行实例上,使用多个运行实例来分担大量的租户访问。
3 关键技术及实现
3.1 多租户技术
多租户是SaaS服务模式区别传统软件模式最本质的区别,而要达到SaaS成熟度模型的Level_3级要求,其核心需要解决的就是数据隔离的问题,即如何实现多租户模式[6]。在传统软件开发模式中,只是针对于一个用户的模式开发,不会涉及到用户间数据的混乱。在SaaS服务模式系统中建立多租户模式时,必须要在每个业务表上增加TENANTID或者COMPANYNO字段,用来区分各租户之间的数据信息,实现各个租户之间的数据隔离,保证各租户之间的隐私。
图3 多租户表Fig.3 Multi-tenant table
TENANTID字段是传统软件模式所没有的字段,用来区分SaaS服务模式系统中其他租户的数据信息。?当租户需要对自己的业务数据进行操作的时候,通过TENANTID来搜索自己的业务数据,在使用SQL语句时,每条都要在条件语句中增加TENANTID=‘?’语句进行租户数据区分,防止读取到其他租户的数据信息。
3.2 数据扩展技术
对于不同的租户而言,每个租户在使用系统时,信息的存储名称和信息包含的内容各不相同。传统软件模式下,通过直接扩展表、扩展字段来实现数据模型的扩展,而在多租户模式下,不同租户可能有不同的数据模型扩展需求,在同一个数据表结构中使用直接扩展表、扩展字段的方法简单的合并不同租户对于特定业务的数据需求,会造成资源浪费,甚至会严重破坏表的原有结构。
所以在多租户模式下对数据进行扩展时,需要在系统中单独建立多租户管理表、字段配置表以及数据业务扩展表,通过三表的有效结合降低因不同租户间不同扩展需求造成的资源浪费以及业务表结构的破坏。
当进行不同租户间不同需求字段扩展时,在扩展数据表中将业务数据表的横向扩展列转化成纵向的数据集,将每一条原数据记录的每一个扩展字段,都保存成一条扩展数据行。将数据表中的数据记录与配置数据表中的配置记录关联,构成扩展数据记录。
1)业务数据表中主要存储的是租户中相应的业务数据。
2)数据扩展表中主要存储了租户的扩展数据对应值。TABLE:扩展数据所对应的业务表,DATA_NO:数据编号,CONF_NO:扩展编号,EXT_VALUE:租户扩展数据值。
3)配置表中主要存储租户需要扩展数据的字段名称以及其存储类型。CONF_NO:扩展编号,TENANTID:租户编号,TABLE:扩展数据所对应的业务表,CONTENT:扩展数据的内容,TYPE:扩展数据的扩展类型。其中CONF_NO和TENANTID构成了配置表中的主键。在配置数据表中所配置的扩展数据与相应业务表中的租户TENANTID是相互对应的。数据扩展表中的DATA_NO与其相应业务数据表中的ID主键是相对应的。
数据扩展表的 CONF_NO与配置数据表中的扩展编号又是相对应的,并与租户配置的扩展数据项个数相对应,租户的每条业务扩展数据都会对应相应个数的扩展数据。
3.3 配置性技术
SaaS服务模式应用强调的“按需使用,按需付费”,就是多租户SaaS服务模式应用要能够支持让租户有选择地购买自己需要的功能,不同的租户可以同时使用不同的功能集合,来解决不同的租户需求不完全重合的问题,?更大程度降低适应来自不同租户间的功能需求差异。
图4 数据扩展图Fig.4 Data extend table
“按需使用,按需付费”的另一个含义是同一个租户在不同时期,可能会有不同的需要,可以选择不同的功能集合,并为之付费。
实现功能可配置,需将整个系统的功能分解成一个个基本的、相对独立、互不重叠的原子功能,当所有的原子功能叠加起来,就是整个应用所提供的全部功能。根据租户的类型和系统的业务逻辑,综合考虑租户的使用场景和使用习惯,再将原子功能进行组合,划分成不同的功能模式,用户根据需要进行相应功能模式的选择。
1)租户表中主要存储租户的相关信息。CO_NO:租户所属于的行业编号,?TENANTID:租户编号,USER_ID:租户的系统登录账号,USER_NAME:租户名,PSSWORD:租户系统登录密码,PATTERN_NO:租户使用系统包括的功能模式编号,PATTERN_TYPE:租户所属于系统使用范畴。其中CO_NO、TENANTID构成租户表的主键。租户表是用来对租户登录信息的检索验证,并检索租户所使用的功能模式。?
2)功能表中主要存储将系统拆分都的原子功能的相关信息。MENU_NO:原子功能编号,MENU_TYPE:原子功能分类,MENU_NAME:原子功能详细描述标签名。
其中MENUNO是表的主键。功能表保证了功能编号的唯一性,并作为系统内使用该功能的唯一标识。
图5 配置图Fig.5 Configuration table
3)模式表中主要存储了相关功能模式信息。PATTER_NO:系统包含的所有功能模式编号,MENU_NO:功能模式所包括的原子功能编号。其中PATTERN_NO、?MENU_NO构成模式表的主键。模式表定义了所有功能模式所包括的全部原子功能保证了整个系统的功能完整性。在租户初次使用时可以起到功能选择的向导作用。
4)租户模式功能表中主要存储了租户功能的相关信息。TENANTID:租户编号,MENU_NO:租户使用系统中所包含的原子功能编号。其中TENANTID、MENU_NO构成了租户模式功能表的主键。租户模式功能表定义并存储了各个租户对系统功能的配置信息。在租户初次使用以后直接通过租户模式功能表进行租户所有功能的查询。在租户使用时,根据功能模式进行租户功能划分,在功能配置后则根据租户功能进行系统显示。同时,将配置表分成四级结构,有效的减少了表之间的关联,?可根据不同的内容进行单表查询,同时也并未降低各表间的关联度。
4 结束语
本文从软件发展的角度出发,描述了SaaS的由来和发展历史,对比分析了同传统的软件模式的区别。同时提出了基于SaaS的第三级成熟度模型的数据库设计思想和实现方法。并对SaaS模式下的多租户技术,数据扩展技术和数据配置技术进行了分析和阐述。
[1]方东.SaaS与中国小企业信息化[J].科技信息:科学教研,2007,14(1):15-18.
FANG Dong.Saas and medium-sized enterprise informatization in China[J].Science and Technology Information:Scientific Research,2007,14(1):15-18.
[2]Chong F,Carraro G.Arehiteeture strategies for catehingthelong tail[R].USA,MierosoftCorPoration,2006.
[3]叶伟.互联网时代的软件革命SaaS架构设计 [M].北京:电子工业出版社,2009.
[4]李鹏.基于SaaS模式的客户管理系统的研究[D].山东:山东大学,2009.
[5]赵倪光.基于SaaS模式的数字版权交易网站的设计与实现[D].南京:南京理工大学,2011.
[6]昌中作.基于SaaS模式的公共物流服务平台关键技术的研究[D].北京:北京交通大学,2007.