杨正球,窦 伟
(北京邮电大学智能通信软件与多媒体技术研究中心 北京 100876)
基于自动机的多租户应用平台的设计与实现
杨正球,窦 伟
(北京邮电大学智能通信软件与多媒体技术研究中心 北京 100876)
有限状态自动机是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型,它是具有离散输入和输出系统的一种数学模型,只需配置业务流程就可以实现租户所需的特定的业务功能。本文在研究SaaS应用平台、自动机模型、软件开发形式化、SOA核心技术的基础上,提出了基于自动机的多租户应用平台,并将其划分为几个基于自动机的独立模块,实现了业务逻辑和业务数据的分离,解决了业务逻辑和安全操作间的问题,运用灵活的结构组织租户和站点。基于自动机的多租户应用平台已经初步完备,能够很好地满足多租户应用平台的管理,并可作为自适应的租户管理模型。
软件即服务;自动机;租户应用平台
自动机是基于有限计算、离散输入输出数学模型的,将功能模块或者子模块拼装组合就可以生成用户所需的特定业务需求。用户对于软件功能的需求不是千篇一律的,所以某些软件的定制消费了大量资源,去开发功能相近或相似的系统和软件,基于自动机的多租户应用平台很好地解决了这一问题。基于自动机的软件体系开发将为软件开发流程带来重大变革,程序员面向的不再是由用户提出的需求,而是由专业人士提供的原子的基于整体性的需求。软件提供商再面对业务相近的软件需求时,将不再需要程序员重新编写代码,只需要将业务逻辑进行排序组合即可,定制的软件就可以轻松地满足用户需要。
SaaS是一种软件布局模型,它将企业信息化所需的软、硬件交由SaaS提供商去搭建和维护,企业只需通过互联网即可使用已租赁的信息系统。SaaS模式已成为软件产业的重要力量,不过它的品质和可信度仍未得到完美的解决,基于自动机的多租户应用平台将进一步解决SaaS模式的数据安全性问题。将业务交由租户业务系统管理,将数据交由租户管理,将自动机扩展出权限控制。当用户使用业务时,只需将自己保护的私有数据连接到自动机,由业务管理系统将用户定制的业务注入到自动机,用户就可以轻松使用定制的业务。
有限状态自动机是有限计算的基本模型,也是许多形式化规格、验证方法的基础模型。例如,一个钟表就是一个有限状态系统,共有12×60×60种状态,秒针每走一步,就从一种状态转移到另外一种状态;饮料自动售货机也是一个有限状态系统,售货机根据客户的按键输入以及投入硬币的面值和枚数来指导客户操作,并提供不同规格的饮料。一个有限状态自动机是一个五元组,如下:
其中,Q={q0,q1,…,qn}是有限状态集合,在任何一个确定的时刻,有限状态机只能处于一个确定的状态qi;∑={σ1,σ2,…,σm}是有限输入字符的集合,在任一确定的时刻,有限状态机只能接受一个确定的输入σj;δ:Q×∑→Q是状态转移函数,如果在某个确定的时刻,有限状态机处于某一状态qi∈Q,并接受一个输入字符σj∈∑,那么下一个时刻将处于一个确定的状态 q′=δ(0i,σj)∈Q;q0∈Q是初始状态,有限状态机由此状态开始接受输入;F∝Q是终结状态集合,有限状态机在到达此状态之后不再接受输入。
通过将一个系统抽象为状态和动作的集合,可以很好地描述系统的行为。在实际的系统中,可以包含若干个并发执行的自动机,其中每个自动机用来描述系统某一方面的行为。将这些自动机复合起来,可以描述整个系统的行为。也可以用一个状态机来表示一个系统的行为,用状态表示一个系统当前的状况,用动作表示状态之间的迁移关系。
通过扩展自动机来表示系统的权限控制。抽象出来的自动机可以表现为若干状态,其中在每个状态下可以接受一些特定的动作。我们对每个自动机所涉及的角色进行抽象,并规定出在某个状态下,哪些角色可以执行何种操作。可以通过将自动机的操作角色分成实例角色和类角色来达到完美控制权限。
通过对系统进行扩展的自动机建模,不仅可以描述系统的行为特征,而且可以描述系统的权限控制特征。对于一个比较复杂的系统,可以同时采用多个自动机来描述。在实际系统运行的时候,会将系统的角色赋给某个具体的操作人员。当某个操作人员对系统进行某种操作的时候,系统将根据自身的状态及其所承担角色的操作许可情况进行综合分析,从而得出该操作员是否可以对系统实施某种具体的操作。这样的控制方式既灵活又精确,非常适合需要多种角色参与的数据加工和处理流程。
基于自动机的多租户应用系统模型主要由6个部分构成:租户系统、租户站点系统、租户业务系统、站点管理系统、租户管理系统以及门户系统。
租户系统包括控制域系统、租户信息、操作员信息、实例信息以及自动机信息。其中,控制域系统是自动机和租户相结合的产物,表示一个自动机逻辑注入到租户内的控制逻辑。实例信息表示租户内的系统信息部分,实例信息和操作员信息属于一个企业的内部数据。这样的设计将系统的业务逻辑和业务数据分开,就可以将整个业务逻辑放在网络的通用节点上供租户注入域系统,而将各个租户自己私有的信息放在租户所信任的地方。
一个租户系统是一个逻辑上独立的系统,随着租户数量的增多,假如每个租户都独占一个系统资源,对于系统的资源开销是很大的。事实上并不是所有的租户对数据安全性和保密性的要求都一样高,所以我们可以提供一种方式,将对数据安全性和保密性要求不太高的租户放置在一个系统上,让他们共享一个机器和数据库系统。根据租户对数据安全性、业务的数据流量等要求,将租户分成几个等级,按照对应等级分配系统资源、制定数据安全方案的租户信息控制系统,我们称之为站点系统。
站点是租户的载体,也是一个承载业务的载体,随着租户体验的不断深入,该用户可以在原有的基础上增加新的业务,增加的过程实际上是业务逻辑不断注入到租户系统中的过程。所以在这种站点上运行的租户系统的业务存在一个不断成长的可能性。当业务成长到一定的程度时,租户所占用的资源将会随之增加,由于采用站点这种方式给租户分配资源非常灵活,可以通过配置系统将一个站点中的租户迁移到别的站点,或为一个成长性较好的租户分配独立的资源。在这种业务成长的过程中,系统的性能不会波及其他站点的租户,从而保证了系统整体扩容的情况,能非常方便地控制整个SaaS系统的成本。
站点系统是本系统的核心部分。一个站点是一个独立的运行单位,它有自己的存储系统和自动机控制系统。一个站点内可能会包含一个或多个租户的信息,其中每个租户内部也是相对独立的一个逻辑单位。在一个站点内部采用规则引擎的方法来完成操作员、角色、自动机逻辑、自动机实例等之间相容关系的维护和计算。站点内存放的对象包括租户、自动机逻辑、自动机实例、租户、操作员及控制域系统,这些对象在站点内以知识库的形式存放。当站点接收到某个操作员对某个实例的操作请求时,相当于向知识库中添加了新的事实,这将会触发知识库系统的推理规则,该规则按照知识库中自动机的逻辑自动地判断该操作是否可以进行以及如何进行。
站点系统使得每个租户的私有数据得到了有效的存放和管理,但是租户并不能直接访问站点系统完成其所必需的业务逻辑过程。原因是每个站点不拥有业务逻辑的解释执行系统,我们将这个解释执行业务逻辑系统称为租户业务系统。当一个租户的操作员进行了某业务的某项操作时,业务操作的指令通过某种方式传递到租户业务系统,该业务系统根据业务操作指令中所指明的租户信息,找到拥有该租户的站点并调用该站点的基本业务操作服务,完成该业务操作的执行过程,如图1所示。
在图1中,一个租户业务系统与两个站点系统相联系。其中站点1包含租户T1和T2,站点2包含租户T3和T4。租户业务系统通过接口I1与站点进行互动,并向外提供接口I2。接口I1是各站点提供的服务,供租户业务系统调用。需要说明的是,接口I1的内容和具体的业务逻辑没有关系,它所涉及的是关于一个租户内部自动机实例、租户、租户内操作员、域系统等创建、删除、属性改变等通用操作接口。接口I2的内容与具体的业务有关系。接口I2的提供实际上是租户业务系统利用各站点系统提供的接口I1进行组合而成的。租户业务系统的主要功能是利用站点提供与业务无关的接口I1来实现与业务相关业务逻辑过程。
如果在一个SaaS系统中,租户的数量很多,一个业务系统往往成为操作的瓶颈,在这种情况下,可以提供若干个业务系统,每个业务系统分别管理一部分租户,从而可以构成一个负荷分担的业务组合方案。也可以采用一个租户同时连接到两个业务系统,其中一个为主业务系统,一个为从业务系统。这两个业务系统同时向上提供接口I2。一旦其中一个业务系统发生故障,另外一个业务系统仍然能够完成业务操作。可以根据用户对业务需求的不同配置不同的方案,使整个系统保持足够的灵活性。
我们可以采用BPEL的业务计算和组合的方法来实现。这样,所有的业务逻辑只存在于租户的业务系统中,而站点系统仅仅作为用户一个基本服务的计算平台,对所有的业务都适用。这实际上是将业务系统分成两个独立的层次,一个是以逻辑为核心的业务逻辑平台,一个是以业务数据为核心的租户业务数据平台。业务逻辑平台和业务数据平台可以分别配置,结合在一起构成一个完整的业务。
租户业务逻辑的实现主要依靠BPEL技术实现,一个租户业务就是一个BPEL流程。在该BPEL流程中,所有的站点提供的接口I1作为其伙伴链接备用。在一个租户业务中,其基本的活动就是接口I1所提供的基本任务,这部分内容对于每个租户业务来说是不可再分的执行单元。由于租户业务向外提供的业务 (也以伙伴链接的方式提供)是针对某个具体的租户和操作员的,所以在组成业务的过程中一般采用串行方式。
一个租户业务逻辑通过BPEL来描述,经BPEL引擎解释执行,如图2所示,其向调用各站点提供的接口I1的Web service服务,向上给门户或其他的租户业务逻辑提供接口I2的Web service服务。
站点系统和租户业务系统的配合从逻辑上能够保证系统业务的正常开展。但如果要让站点系统和业务系统能够高性能工作,还需要很多部署、配置和管理的工作要做。这些工作包括站点管理类别、业务系统管理类别、连接管理等。站点和业务系统的管理工作需要由一个单独的实体来完成,这个实体就是站点管理系统(PM)。站点管理系统监控这个SaaS系统的各个实体(包括业务系统实体、站点实体)的节点运行情况和网络的运行情况,及时向SaaS管理员发出故障报警信息和性能报警信息,协助SaaS管理员采取适当的配置方案来缓解乃至解决各租户可能会遇到的业务瓶颈问题。管理实体和业务实体、站点实体、租户的关系如图3所示。
在图3中,S1、S2为两个业务系统,P1、P2为两个站点系统。其中,P1中包含租户T1和T2,P2包含租户T3和T4。S1、T1、T2 构成了业务系统 1,S2、T3、T4 构成了业务系统 2。PM 通过管理总线对 S1、S2、P1、P2 实施管理。S1、S2通过I1接口对T1、T2、T3、T4实施业务层的控制。
站点管理系统是整个SaaS系统的配置系统,主要完成的任务包括对所有的站点进行监控、提供给站点管理员资源查询的功能、对站点进行配置。要完成这三个部分的任务,站点管理系统需要与站点之间进行频繁的信息交互。对于站点管理系统来说,每个站点可以分为下面几种状态:start、running、suspended、disconnected、excluded;站点管理系统需要发布一些管理命令给各个站点,这些命令主要有status、include、exclude、connect、disconnect、fill、suspend、restore、clear。站点管理的命令只有在合适的状态下,才能发布到站点中去。
租户内部的管理员对各租户的内部数据统一进行管理,这样才能保证租户内部数据的安全性和保密性。租户内的实体包括一个或多个域系统、操作员集合,而操作员分为普通操作员和租户管理员。普通操作员通过域系统的类角色和实例角色的指配确定和自动机实例之间的操作关系:在自动机实例的特点状态下,每个具有一定角色的操作员,可以对该实例进行某种特定的操作。每个角色对实例的操作关系由自动机的逻辑确定,而操作员到角色的指派关系主要是由租户管理员来决定。
在一个SaaS系统中存在着很多的业务,每个业务包含一个或多个业务系统实体,这些业务系统实体负责解释某个业务逻辑的执行,向外部提供接口I2。这些接口I2所提供的信息最终要以业务表格和业务图表的方式呈现给操作员。在理想的情况下,SaaS中的各个租户操作员可以登录一个公共的网址。操作员在进行操作之前需要输入身份信息,这些身份信息包括下面几个方面:操作员的登录信息、操作员的口令、所属租户的名称、业务系统名称。当SaaS系统收集到这些信息之后,将会自动地将该操作员导入到相应的业务系统平台中,操作员就可以接入到某个具体的业务系统平台所提供的功能,也可以看到其所在租户内部能被允许接入的信息。利用这些信息,操作员可以进一步发起新的命令,这些命令在自动机逻辑的控制下被业务系统和站点系统解释执行,如果操作合法,操作员可以看到其所发出指令的结果。这个能够将操作员自动地导入租户业务系统和站点系统的接入装置就是门户系统。
操作员通过门户系统接入SaaS服务,门户系统将提供三种用户视图。
第一种是业务视图,普通操作员登录系统之后,门户系统会自动将其导入到租户的业务系统。一个SaaS平台可以同时支撑很多业务,每个业务可以由一个或多个业务平台系统同时提供;
第二种是管理视图,SaaS平台的运营方通过该视图可以浏览整个SaaS平台范围内的所有业务节点和站点系统的节点,对其网络连接情况、负荷情况进行监控,并能通过一些配置手段来调整租户和站点之间的关系;
第三种是租户视图,每个租户的管理员可以通过门户系统看到其所在租户的域系统信息、操作员信息、租户信息和自动机实例信息,也可以通过门户系统来调整它们之间的关系。
本文描述了一个基于自动机的SaaS平台架构,该平台架构具有以下技术特点。
· 业务逻辑和业务数据分开。在这样的SaaS平台上,可以在原来的站点里,通过建立新的租户业务系统和注入反映租户业务逻辑的自动机,站点将自动地获得业务逻辑,这使得整个架构拥有了一个较好的扩展性和灵活性。
·采用了基于知识库的规则引擎来处理业务逻辑和安全操作的问题。可以在这样的框架下,每个租户可以通过给操作员指定角色,使得操作员只能够进行符合自己身份特征和实例状态的操作,这使得系统的安全性得到了很大的保障,也使业务逻辑变得非常清晰。
·采用BPEL流程来构建业务逻辑。BPEL是新的服务计算和服务组合的工具,BPEL中有很多流程制作工具,业务开发人员可以采用这些工具直观、迅速和有效地构建新的业务。
·采用SaaS的整体架构,使得系统软件的提供性得到了很大的提高。让使用者仅仅需要关注自己的需求,将一些复杂的安装、配置等需要计算机专业人员参与的工作完全交给软件提供商,这将是一个成功的商业模式。
·采用灵活的站点式结构来组织租户。租户可以根据自己对安全性和保密性的实际需求来选择恰当的服务,保证了系统部署的灵活性。
1 叶伟.互联网时代的软件革命SaaS架构设计.北京:电子工业出版社,2009
2 古天龙.软件开发的形式化方法.北京:高等教育出版社,2005
3 王紫瑶.SOA核心技术及应用.北京:电子工业出版社,2008
Multi-tenant Application Platform Based on Automata
Yang Zhengqiu,Dou Wei
(Beijing University of Posts and Telecommunication,Beijing 100876,China)
Finite State Machine is an
computational model for the computation of the limited memory and the research of language class,it is a mathematical model with discrete input and output and able to achieve specific business functions after configuring the business process.Based on the research of SaaS,automaton,Formal Software Development and SOA,the multi-tenant application platform is proposed.In our platform,we divide our system into several independent modules based on automata,separate the business logic and business data,solve the problems between safe operation and business logic,and use flexible structure to organize our tenants and websites.The multi-tenant application platform is coming to be complete,could satisfy the management of multi-tenant application platform and can serve as an adaptive management model tenant.
software as a service,automata,application platform
2010-08-06)