[摘要]在分析现有图书馆信息系统建设模式的基础上,提出基于软件即服务思想的图书馆信息系统建设思路。介绍软件即服务的定义、特征和成熟度模型,重点阐述基于多租户模型的图书馆信息系统的数据库设计、多租户应用设计、可配置性设计和可伸缩性设计。对多租户信息系统实现中涉及的文件分布式存储、应用服务器的可伸缩性、数据库服务器的可伸缩性以及应用安全等关键技术作深入的讨论。
[关键词]多租户 图书馆 信息系统 软件即服务 云计算
[分类号]G250.71
1 引 言
现有的图书馆信息系统一般都采用自购相关软硬件系统并配备专门维护人员的建设模式,且一套系统只服务于一个单位。这种应用模式存在投资费用高、设备利用率低、维护升级与信息共享困难等缺陷。软件即服务(Software-as-a-Service,SaaS)为图书馆信息系统的建设与应用开拓了一个新的方向。
目前SaaS的研究主要集中在体系结构、评价方法、安全保护以及推广模式等方面。文献[3]从保障租户性能的角度,提出了一种多租户架构-MDSA;文献[4]提出了一种支持多类终端与服务定制的SaaS软件服务架构;文献[5]提出了基于SaaS模式的软件服务质量评价方法;文献[6]从多租户安全保护的角度;提出了隔离租户数据的相关模型,文献[7]从可应用性的角度讨论了零宕机SaaS应用系统的建立。
在实际应用上,主要集中在客户关系与供应链管理SaaS系统以及一些传统的单用户软件移植到Web上的应用,如Salesforce公司的客户关系管理系统,Google的在线办公以及国内的百会写写等。在图书馆应用方面,OCLC开发了OCLC FirstSearch,CALIS也提出了构建CALIS云服务平台,提供馆际互借、参考咨询等SaaS服务,文献[8]的实证研究表明真正的SaaS提供商还很少,文献[9]指出了当前的许多SaaS应用为单租户、多用户模式,而非真正意义上的多租户、多用户的SaaS应用,并阐述了多租户SaaS应用的核心挑战以及单租户系统向多租户迁移的途径。
本文从图书馆信息系统的特点和需求出发,重点研究如何构建真正意义上的多租户、多用户的图书馆信息系统的设计与开发策略,提出了数据库与数据架构均共享的多租户图书馆信息系统的数据库模型,并阐述了多租户信息系统的数据、功能、界面可配置的实现方法,同时对多租户系统可伸缩性的实现等关键技术做了深入的探讨。
2 软件即服务
2.1 软件即服务含义
SaaS是随着互联网技术的发展和应用而产生的一种创新的软件应用模式。在这种模式下,厂商将应用软件统一部署在自己的服务器上,租户按需定购软件的服务功能并付费。SaaS服务将原本由使用者所承担的软硬件系统建设与维护的费用,转变成支付给服务提供商的服务费用。而SaaS服务提供商则通过提高服务规模,平摊软硬件、维护等运营成本,达成多赢的目标。对于中小型企业来说,SaaS是获取先进信息化管理技术的最好途径,它消除了企业构建与维护基础设施以及应用程序所需要的庞大的前期投入和人力限制,降低了企业信息化建设门槛,将成为软件使用的主流模式。SaaS服务模型如图1所示:
2.2 SaaS成熟度模型
SaaS软件服务于多个租户,高性能、可配置、可伸缩是SaaS服务的主要特征,SaaS成熟度模型一般分为四级:
第一级:定制的SaaS。即每个客户拥有单独的应用实例和定制的代码,服务商提供硬件并负责管理维护。由于服务提供商能整合资源并服务于多个客户,从而降低软件应用的总体成本。
第二级:可配置的SaaS。每个客户仍彼此独立安装软件并完全隔离使用,但所有软件使用相同的代码,客户可以通过配置选项来改变应用的外观和行为。由于客户的应用实例具有相同的代码,应用代码的任何改变都会立刻作用到所有客户,可大幅降低SaaS应用的维护和升级成本。
第三级:可配置与多租户的SaaS。服务提供商借助其共享实例服务于所有客户,采用可配置的元数据为不同的客户提供个性的使用体验和功能,通过权限控制和安全策略确保每个客户的数据被单独存放或与其他客户的数据相隔离,这就使得服务提供商计算资源的利用效率大大提高,也无需为新增的客户增添硬件资源,从而直接降低了成本。
第四级:可伸缩的多租户SaaS。服务供应商将通过运行一个负载均衡的具备权限验证功能的平台来为众多的客户同时服务,每个客户的业务数据将被单独存放,同时提供个性功能定制服务。这样的SaaS系统无需修改架构设计,通过增减后端服务器的数量,就能适应服务大规模客户的需要,具备高度可扩展性。
3 系统设计策略
根据SaaS应用成熟度模型,只有达到第三级以上要求的SaaS服务,才能称得上真正意义上的软件即服务。因此,多租户的图书馆信息系统的设计重点在于共享实例、多租户、可配置与可扩展几个方面。
3.1 系统的数据库设计
在多租户模式的信息系统中,租户的数据存储和隔离模式直接影响到租户的使用信心和数据安全。SaaS应用的数据库主要有三种方法:①独立数据库模式:每一个租户拥有独立的数据库,数据模式的扩展设计较为方便,数据恢复简单,也可满足租户的独特需求。但由于每一个租户独立使用一个数据库,没有发挥SaaS软件的规模效应。②隔离数据架构模式:所有租户共享一个数据库,每个租户拥有独立的数据模式(Schema),在逻辑上隔离了不同租户的数据,具有较高的安全性,每个数据库也可以支持更多的租户数量,但由于共享数据库,在出现数据故障时,如果采用直接恢复数据库的方法,将影响到其他租户的数据。因此,需要采用更为复杂的数据备份和恢复模型。③数据库与数据架构共享模式:所有租户共享同一个数据库和Schema,但在数据表中通过增加租户ID字段来区分数据属于属于哪个租户。这种模式具有维护成本低、共享程度高、支持租户数量多的优点,但数据隔离低、安全性低、在设计时需增加应用安全的开发、数据备份恢复困难,需逐表逐条进行处理。三种数据库设计模式见图2。
数据的隔离和共享策略是SaaS服务数据库设计的关键因素,由于图书馆信息系统数据规范、标准化程度高、数据结构一致性好、数据内容同一性多、数据共享要求高独立性低、数据隐密性低以及系统成本要求低等特点,采用数据库与数据架构都共享模式较为适宜。
3.2 多租户的应用设计
SaaS图书馆信息系统需服务于多个租户,较传统的图书馆信息系统,需增加租户管理的相关功能,包括:租户注册、租户的用户注册、服务定制、使用日志、计费以及个性化配置文件管理、租户权限等。 共享数据库及数据架构意味着所有租户的数据混存于同一个数据表中,为了实现租户的数据隔离和系统的安全应用,首先需在相关数据表中的每一行数据中增加租户ID,以标志该行数据所属的具体租户,然后在应用系统的功能设计中,对于录入的内容增加租户ID,最后,建立租户定制功能和权限配置表,并在相关应用(如查询、修改、删除和统计)执行前,判断租户的权限,以保证租户间的数据隔离和数据安全。
3.3 多租户的可配置性设计
在多租户环境下,SaaS服务的通用性和普适性要求更高,易用的可配置是SaaS服务的重要特征。多租户SaaS系统的可配置设计包括数据可配置、功能可配置、界面可配置等。
3.3.1 数据可配置性 在传统的应用中,每个客户具有独立的应用实例,当客户提出个性需求时(如联系方式增加QQ号),直接在数据表中增加字段即可。在多租户的SaaS应用中,所有租户使用同一实例,不同租户的个性需求各异,如果直接在数据表中增加扩展性数据的字段,将会破坏数据表的规范结构,导致数据管理困难,数据表空间资源的严重浪费,还会引发数据库的性能下降。通过建立租户的个性化扩展数据配置表,使得系统的基本数据和个性化扩展的数据分开存储,能较好地避免上述缺陷。SaaS服务扩展数据应用模型的设计及数据表关系见图3。
图3中,表“User”为公共数据表,表“Config”为租户个性扩展数据配置表,租户“1001”扩展了宿舍和QQ号两种联系方式,而租户“1002”扩展了住处和电话号码两种联系方式,通过“User”、“Config”和“Data_ext”三个表的连接操作,即可方便地获取相关信息内容,满足了不同租户的个性化数据扩展需求:
3.3.2 功能可配置 SaaS服务需要面对为数众多、功能需求不同的租户,因此,SaaS服务应能支持租户有选择地定制自己需要的功能,并形成完整的功能集合,真正体现SaaS应用的“按需使用,按需付费”的精神。
原子功能的划分是实现功能可配置的基础。在原子功能划分过程中,应遵循原子功能有价值、不可再细分、相互间不重叠、不循环依赖和确保系统功能完整的分解原则。同时,由于原子功能过分细小以及各功能间存在一定的依赖关系,在实际设计中,还应根据租户的类型、应用场景、业务逻辑和使用习惯,将原子功能进行整合,形成相对独立的功能包,并按不同的商业意图,划分为最小版、标准版、完全版等销售包。如SaaS图书馆信息系统可以整合成基本版、标准版、完全版或按行业的特殊状况划分成公共图书馆版、中小学图书馆版、高校图书馆版等不同销售包供用户租用。
3.3.3 界面可配置 传统定制的应用系统,其用户界面能基本符合用户的需求。在多租户的SaaS应用中,租户订购的功能不同,王作界面也要随租户定制功能动态改变,界面配置主要包括系统菜单和页面内容可配置。
3.4 多租户的可伸缩性设计
多租户的可伸缩性是指在系统架构不做调整的基础上,只需增减相应的硬件设备就能保证服务水平的能力。多租户的可伸缩性是SaaS系统的一个重要的评价指标,主要包括应用服务器的可伸缩性、数据库服务器的可伸缩性、存储体系的可伸缩性等。应用服务器的可伸缩性主要通过设计一定的负载均衡机制,使得访问和应用服务能够均摊到多台应用服务器。当访问增加较多时,可以通过增加应用服务器,确保应用层具有良好的伸缩性和服务性能。数据库的可伸缩性可通过分析应用和数据的特征,采用数据切分、读写分离等方法,将服务压力分散到多台数据库服务器。
4 关键技术选择
4.1 文件的分布式存储
目前,传统的SAN方式已不能满足SaaS应用的存储需求,分布式存储和冗余存储已成为SaaS服务主要的存储技术。
当前分布式数据存储技术主要有谷歌的GFS(Google File System)和Hadoop开发团队开发的HDFS(Hadoo PDistributed File System)。大部分IT厂商,包括雅虎、英特尔的“云”计划采用的都是HDFS的数据存储技术。
Hadoop是由Apache基金会开发的一个能够对大量数据进行分布式处理的开源软件框架,充分利用了集群的高速运算和大容量存储的特点,具有高容错、低廉部署、高传输率、支持超大数据集、开放、开源、免费等优点。因此,Hadoop技术是实现图书馆信息系统SaaS应用的较好选择,Hadoop的相关程序和应用示例可从Apache网站下载。
4.2 应用服务器的负载均衡
负载均衡是维持大规模应用并发请求和提升SaaS系统服务性能的重要保证。基于硬件的负载均衡性能高,但价格昂贵。采用开源Apache http Server的负载均衡功能,可满足多租户图书馆信息系统的需求。
在Apachehttp Server中,通过Load Blance配置,应用层的压力就会均摊到多台应用服务器上,可保证应用层具有良好的伸缩性。负载均衡的关键点是众多用户的请求分配和请求保持,Apache Server提供了3种Session请求的保持策略:①将Session复制到所有的应用服务器,这样无论前端怎样分发请求,都能保持会话请求,但大量的Session复制会严重影响应用服务器的性能;②将同一用户的请求转发到特定的应用服务器上,避免了Session复制,但这种模式在某台服务器“宕机”时,服务器上的所有用户的Session都将失效;③将Session集中到一台独立的Session服务器上,使用集中式的Cache代替本地的Session。在这种模式下,应用服务基本实现了完全的水平扩展,而集中式的Session服务器在Session数量达到一台服务器无法承担时,也可以通过增加服务器来扩展,可较好地应用于SaaS服务中。
4.3 数据库服务器的可伸缩性
数据库是信息系统中的重要支撑,也常常成为整个应用系统的瓶颈。数据库层的可伸缩性可以通过数据库的垂直切分、水平切分、读写分离和混合应用等几种方式来解决。数据库的垂直切分是将不同功能模块所涉及的数据表的列划分到不同的数据库中,以便减轻数据表的访问压力,但某些强关联的应用不易划分且相应的连接操作对性能影响较大。数据库的水平切分是按某种规则将数据表的行划分到不同的数据库中,在具体应用时,定位到特定数据库访问数据。数据库的读写分离是将同一个数据库在多个服务器上保留备份并彼此同步,对于写操作都统一到一个主服务器上,而读操作则分摊到多台服务器上。
基于多租户模型的图书馆信息系统的数据在总体上具有相同的模式。因此,当数据库服务器负荷超过一定限度时,可以将数据表中的数据按所属租户进行水平切分,采用多个数据库完成整个的应用。同时,图书馆信息系统中的大量用户是查询相关文献资料,而真正进行录入和修改等写操作的用户只有图书馆的工作人员,根据这一实际情况,可以采用读写分离的方式,对数据库进行扩展。
4.4 应用安全
有别于传统局域网内的信息系统应用模式和基于Web的应用,SaaS服务是基于开放互联网的多租户应用,其应用和数据保存在云端,不但要防范基于互联网的各种安全攻击,更要保证多租户架构下的各自的数据安全,因此,SaaS应用安全是租户最为担心的问题,也是SaaS应用推广的重要障碍之一。
云计算的应用安全主要有两个方面:一是可信,没有可信一切设计都是白费力气;二是安全,没有安全,一切应用都是免谈,理想的单位云是可信安全云,其特点是人和设备达到可信计算和认证的目的,具体可以从三方面加以控制和实现:①身份管理,身份的确认是云计算可信和安全应用的最基础的内容,非可信客户应拒之门外,可从身份认证、权限分配、操作日志和关键应用实时监控等方面加以管理和实现;②数据安全,对于SaaS应用来说,客户最担心保留在他处的数据的完整性和保密性,可从租户间的数据隔离、数据库连接安全、敏感数据加密和数据量监控等方面加以管理和实现;③网络安全,完全基于互联网使用的SaaS应用,数据在传输过程中更容易受到攻击,应用的稳定性也更易受网络的影响,可从加密的数据传输,分层部署的攻击防范和网络可用性方面加以管理和实现。
5 总 结
云计算一方面可将更大范围内的计算资源整合为一个统一的资源为用户服务,另一方面,云计算又可对租户的实际需求实现按需定制、按实付费的信息化应用模式,其低成本、高可靠以及快速、便捷的优点将逐步成为信息化建设和应用的主流模式。作为云计算最为典型应用的SaaS服务,在图书馆信息系统领域的开发与推广应用,必将为推进图书馆信息化建设、提升图书馆信息服务水平、降低图书馆信息化建设的成本等方面起到至关重要的作用。