软件即服务的应用多租户
摘要
软件即服务已发展成为云环境中的新型软件部署范式,能够动态地、“按需”提供信息技术服务。SaaS中的应用多租户通过多个租户共享相同的应用、资源和数据服务,提高了资源利用率并降低了整体应用成本。本文提出一种基于图的方法,称为SaaS级应用多租户图,用于形式化表示云环境中SaaS模型的多租户特性。该方法有助于分析多个租户在SaaS中访问共享服务集的服务交互路径。所提出的方法足以建模多种类型的租户,如隔离租户、具有单个或多个数据服务的共享租户以及SaaS中的多个租户。此外,为该方法定义了多个度量指标,以描述多租户SaaS应用的基本特征。通过多个示例和详细的案例研究,展示了该方法的表达能力。
关键词
应用多租户,租户,接口,标签,数据异构性,零停机
引言
云计算是设计和开发基于Web的应用的可扩展、灵活且健壮的环境。它支持按需网络访问共享的可配置计算资源池[9]。通常,云环境包含三大主要服务模型[20],即:(i)软件即服务(SaaS),一种在线软件交付模式;(ii)平台即服务(PaaS),提供开发平台并允许消费者开发云服务和应用;(iii)基础设施即服务(IaaS),提供与处理器、存储、网络等基础设施资源相关的 services。云计算仍是一种演进范式,存在诸多主要挑战[16],包括软硬件架构、数据管理、云互操作性、隐私、服务提供以及支持应用实例高效定制的多租户实现。
多租户是一种架构模式,其中单个软件实例运行在服务提供商的基础设施上,多个租户访问同一实例。[1]。在此上下文中,术语“租户”指的是代表同一组织的利益相关者的用户组。多租户应用通过为租户提供一个共享的应用和数据库实例,使他们共享相同的硬件资源,同时允许他们配置应用以满足自身需求,就像在专用环境中运行一样[9]。多租户应用的优势体现在两方面:首先,由于只需维护一个应用实例,服务提供商的应用维护变得更加简便;其次,它可以提高资源利用率。这两个因素降低了应用的总体成本,并促进了高共享度。然而,实现和监控多租户环境的一些主要目标包括:实现高可用性的更好性能、具备零停机时间的高效服务交付[9],成本优化以及管理这些应用[8]。除此之外,应用管理是实现多租户(尤其是具有共享数据集时)所需解决的关键问题之一。
一种高效的云SaaS模型也遵循为多个租户共享相同的基础设施资源以实现软件交付。然而,随着SaaS服务模型的日益普及,由于其按需特性和可扩展性要求,组织在为共享服务实现多租户方面正面临严峻挑战。此外,多租户应用应符合软件即服务架构框架。
本文提出了一种基于图的方法,称为SaaS级应用多租户图(SaaSAMT),用于形式化云环境中SaaS模型的多租户特性。该图形化方法有助于分析多个租户访问与SaaS应用相关的共享服务集时的服务交互路径。交互路径还有助于度量共享度。利用所提出的方法,可以测量若干有用度量指标,如多租户SaaS应用的共享度和实现复杂度。根据共享应用程序实例的实现策略,租户可被划分为若干类别,即隔离租户、具有单个或多个数据服务的共享租户以及多个租户。所提出的方法在概念层面能够有效表达这些租户类别。所提出的SaaSAMT基于一种名为面向数据为中心应用的灵活云架构(FCADCA)[11, 12]的SaaS架构框架。然而,总体而言,该方法也可适用于云环境中的任何SaaS架构框架。在此背景下,FCADCA是一种面向SaaS的概念性云架构。FCADCA是一种分层架构方法,通过集成以数据为中心的云应用所需的各种非功能性特性(如可扩展性、灵活性、可移植性、适应性、共存性和完整性),提供了SaaS中不同组件的抽象。
本文的组织结构如下。在第2节中,总结了相关文献中的方法和成果。在第3节中,简要介绍了FCADCA框架。第4节描述了所提出的SaaS级应用多租户图的形式化定义,还包括利用该方法对不同类型多租户的概念表示、以及与所提出的SaaSAMT图相关的重要特性及度量指标。第5节通过一个案例研究展示了所提出的SaaSAMT图。第6节比较并分析了不同的应用多租户方法。最后,第7节讨论了本项工作的结论及未来的研究方向。
2. 相关工作
应用多租户是软件即服务模式的重要方面之一。在此模式中,多个租户共享服务。租户可以根据自身需求访问定制化的应用实例,并通过共享服务为多个用户服务。近年来,许多研究工作集中在提高SaaS应用的可扩展性上。应用多租户是一种SaaS的架构模式,通过允许多个服务被多个消费者共享来实现共享[1]。该架构分为四层:应用层、中间件层、虚拟机层和操作系统层。其中只有应用层支持多租户,其中多租户仅能通过弹性扩展表(EET)支持关系型数据库,而弹性扩展表(EET)是公共租户表(CTT)和虚拟扩展表(VET)的组合。在[6]中采用了三种方法来实现多租户数据架构,分别是独立数据库、共享数据库独立模式和共享数据库共享模式。出于安全目的,此处采用了Kerberos协议,这是一种基于对称密钥加密的认证协议。但它也未能充分解释多租户的一些关键方面,如可扩展性、性能、零停机时间[9]等。在[4]中描述了一种通过租户数据的物理隔离来实现多租户的方法,即将数据存储在独立数据库中,或在同一数据库中,或使用同一数据库和一组表来托管多个租户的数据。[8]中所述方法的主要重点是采用元数据驱动方法,通过三种不同方式支持多租户,即独立数据库、共享数据库独立模式和共享数据库共享模式。该方法在实现多租户时考虑了软件即服务(SaaS)的两个层次,即数据层和应用层。在此,将可共享的应用实例部署在共享硬件上为多个企业提供服务,从而降低开发成本,并确保相对的数据安全性和信任。根据Paul等人,[9]实现多租户需要软件即服务(SaaS)中的三个层次,即认证、配置和数据库层。作者列举了实现多租户的各种功能挑战和非功能挑战,如可用性、零停机时间、性能、可扩展性和安全性。然而,本文的主要重点是将单租户进行重构以转变为多个租户。在[5]中讨论了多租户模式是否可以应用于软件即服务(SaaS)的挑战。他们提出了一种用于设计软件即服务(SaaS)中多租户应用的框架。
除了这些,文献中还研究了少数在IaaS层应用多租户的方法。在[7]中描述了一种方法,用于在共享数据库共享模式场景中支持多租户,以管理在变化的属性、数据库技术和资源方面的异构性。该方法的主要重点是将数据分解到节点特定粒度,以优化IaaS层的资源利用率。在[2]中,研究人员主要关注以数据为中心的多租户,而非应用多租户。本文提出了一种用于表示云环境多租户的通用架构,并在应用、基础设施和数据中心三层上实施了客户集成。在该方法中,应用层多租户被视为软件和基础设施层的架构实现问题。在[3]中提出了一种通过使用虚拟机技术进行数据库存储虚拟化来实现多租户的方法。
总之,现有的方法中很少有专门针对软件即服务(SaaS)中的应用多租户进行研究,而这些研究应支持对服务、业务流程和数据库的租户特定配置。这些租户特定配置应由某种架构框架来指导,以控制租户的行为的、技术的以及数据访问机制。此外,在SaaS中采用一种形式化的应用多租户方法,将有助于更好地理解云环境中租户、应用实例和服务之间复杂的交互关系。
3. FCADCA框架简介
一种称为面向数据应用的灵活云架构(FCADCA)的概念性架构框架[11, 12],在考虑软件即服务(SaaS)的三个核心功能——可定制性、可扩展性和灵活性的基础上被提出。除此之外,该架构还能够支持具有异构数据集的数据中心云应用的实现。如图1所示,FCADCA由四个层组成。(1)应用层:这是最外层,直接与用户交互,负责提供服务并管理服务配置。(2)服务管理层:它负责根据请求者的需求提供服务。此处包含多个功能模块组合在一起以定义服务。通过定义服务之间的字段、公式和工作流,可以实现应用定制化。(3)业务层:该层由多个业务组件和一组作用于服务及其组件的业务规则组成。通过这种框架,设计者能够实现面向业务的服务分组,且这些服务分组独立于用于定义它们的功能模块。因此,由于业务组件与业务规则相互分离,业务层的变更可以更容易地被支持。(4)数据层:在此架构框架中,数据层分为两个子层,即元数据管理子层和数据管理子层。元数据管理层充当业务层与数据管理层之间的桥梁。根据数据类型,元数据表示关于用户数据、应用数据、服务数据和事件数据的元信息。云中的数据本质上是高度动态变化的。FCADCA框架支持大规模业务数据的异构表示和存储,兼容不同的数据库服务,如结构化、半结构化或非结构化数据。
在FCADCA中,每一层包含一组接口,这些接口提供了不同层之间交互的手段,并支持信息交换。信息交换可以是符合可引用交换模式、结构和语义的消息。接口还提供了一种屏障,使得接口的应用逻辑可以在不影响接口用户的情况下进行更改。一个接口由多个接入点组成,这些接入点提供了对相关层功能方面的访问。一个接口的接入点可以与相邻层中其他接口的一个或多个接入点进行交互。接入点根据其可用性和类型被动态选择,用于特定的服务或服务组合。因此,可以实现针对特定服务组合的服务组件的动态添加或删除。
FCADCA架构框架为以数据为中心的SaaS应用提供了参考架构。但它未能为SaaS模型中具有共享服务集的应用多租户提供任何形式化方法。因此,本文提出了一种称为SaaS级应用多租户(SaaSAMT)的基于图的方法,以形式化地描述具有共享服务集的多租户特性。为此,根据各层不同的服务类型,将FCADCA每一层的接口划分为若干子接口。尽管所提出的SaaSAMT基于FCADCA框架,但该方法在一般情况下也适用于应用多租户的概念化。
4. 软件即服务应用多租户的形式化表示
多租户应用允许多个消费者(租户)访问共享的应用和数据库实例,并支持高度的定制化。租户可以被视为访问多租户SaaS解决方案的组织实体。通常情况下,一个租户包含多个作为该组织利益相关者的用户[9]。在FCADCA架构框架中,这些租户直接与应用层的接口进行交互,并通过中间层的接口和共享服务进一步访问数据层所需的共享数据集。
4.1 SaaSAMT图的形式化
软件即服务级应用多租户(SaaSAMT)针对应用多租户进行建模,可在FCADCA分层架构框架上表示为图G(V, E, L)。该图表示为有向标记图,其中接口表示为节点集V,通过请求或回复路径的有向交互集表示为边集E,边标识符表示为标签L。更正式地,它们可定义如下:
顶点集V(接口)
:在FCADCA中,每一层都有多个接口。这些接口中的每一个都被视为图G的节点或顶点。此处V定义为所有层的接口的全集。在图形上,每个顶点将用圆角矩形表示。
这里,每个节点表示为vij,其中i表示在FCADCA中层的索引,j表示在某一层i中接口的索引。例如,v1j表示应用层或第1层的第j个接口。因此,通常节点V可以表示为,
$$
V = \bigcup_{i=1}^{4} \left{ \bigcup_{j=1}^{n} v_{ij} \right}
$$
其中 $1 \leq i \leq 4$ 且 $1 \leq j \leq n$
边集E :SaaSAMT中的边表示相邻层顶点之间的交互。对于交互,一条边必须从一个顶点开始,然后与相关层的服务进行交互,接着该边终止于相邻层的顶点。因此,这种交互形式上可以表示为一个元组,并可表示为,
$$
T_i = \langle\langle V_{ij}, S_{ik}, V_{(i+1)l} \rangle | \langle V_{ij}, S_{ik}, V_{(i-1)l} \rangle\rangle
$$
根据交互类型的的不同,边可以分为(i)请求边(Ereq),其中交互表示为$\langle V_{ij}, S_{ik}, V_{(i+1)j} \rangle$;以及(ii)响应边(Eres),其中交互表示为$\langle V_{ij}, S_{ik}, V_{(i-1)j} \rangle$。因此,
$$
E = E_{req} | E_{res}
$$
请求边从FCADCA的应用层指向数据层,而回复边的方向则朝向应用层。回复边通常沿着请求边的相反路径进行。SaaSAMT图中的边将用实心有向线表示。
路径表示法 :路径表示法是FCADCA连续层的顶点和服务的组合。对于单个路径的形式化表示,它被定义为连续层的交互元组的组合。因此,租户的服务请求路径可以表示为,
$$
P_{req} = {\langle V_{ij}, S_{ik}, V_{(i+1)l} \rangle, \langle V_{(i+1)j}, S_{(i+1)k}, V_{(i+2)l} \rangle, …}
= {V_{ij}, S_{ik}, V_{(i+1)j}, S_{(i+1)k}, V_{(i+2)j}, …} \text{ 通过截断重复的目的节点 } V_{(i+1)j} \text{ 得到。}
$$
然而,任何租户的请求路径也可以使用交互元组T来表示,
$$
P_{req} = {T_1, T_2, …}
$$
标签L
:标签L用于标识SaaSAMT图中的边,因此可以将其定义为边上的函数l(e)。标签用于识别相邻层顶点对之间的不同服务交互。因此,边上的标签由相关层的服务ID定义。
更正式地,标签可以表示为 $l(e) = S_{ik}$,其中$i$表示层编号,k表示第i层的服务ID。
SaaSAMT的图形表示法列表见表1。
图2展示了一个SaaSAMT图的场景。在该图中,前三层分别包含一个单个顶点,即第1层的V11, 、第2层的V21,和第3层的V31 。而第4层包含两个顶点,分别为V41和V42。其中,边(V11, V21)上的标签为S11 ,表示第1层中的交互$\langle V11, S11, V12 \rangle$ 。在第3层中,两条不同的边(V31, V41)和(V31, V42)具有相同的边标签,这强调了在第4层使用了两个不同的数据库实例。因此,在第3层中,服务S31是共享的。示例图中的可能请求路径为,
- 请求路径1: $P1_{req}: {V11, S11, V21, S21, V31, S31, V41}$
- 请求路径2: $P2_{req}: {V11, S11, V21, S21, V31, S31, V42}$
如前所述,服务响应将沿服务请求路径的反向方向返回。还需要注意的是,通过标注可以识别单个租户的交互路径。
4.2 SaaSAMT图的性质
基于软件即服务的特性和SaaSAMT的形式化定义,可以得出SaaSAMT的若干有趣特性,以概括多租户云应用的重要方面。这些特性如下:
a) 请求与响应边 :在SaaSAMT图G中,指向第4层的边称为请求边。与请求边方向相反的边称为响应边,这些响应边指向第1层。在图2中,边从顶点V11传播,该顶点正在与第1层的服务S11交互,以访问下一层的接口V21 。该边指向第4层,且为请求边。
b) 接入点 :接入点被整合在顶点中,是与同层特定服务交互的起点。因此,一个顶点可以引出多条边,最多等于接入点的数量。
c) 边的服务交互 :每一层可能包含多个具有唯一服务ID的服务。边从一个顶点延伸,并通过服务与相邻层的顶点进行交互。
关注层。相邻层顶点之间的交互可以用不同形式表示,如下所示:
(i) 单个顶点对内的单一服务 :单对顶点之间的边将与单个服务进行交互。此处(图3)连接两个接口V11 和V21 的边通过唯一的服务S11实现。
(ii)
单个顶点对内的多个服务
:在单对相邻层顶点之间的边可以与多个服务进行交互。对于每个服务交互,需要在该对顶点之间考虑一条单独的边。
在图4中,顶点V11和V21之间的交互通过三条不同的边表示,其边标签分别为S11, 、S12和S13 。一个顶点可以通过组合服务与相邻层的顶点进行交互。在这种情况下,首先发生服务组合,随后这对顶点通过该组合服务进行交互。例如在图4中,如果V11和V12需要通过由S12和S13组成的组合服务进行交互,则相应的边可以用S1(2,3)作为标签来描述。此类标签表示组合服务的服务ID。
(iii)
多个接口对内的多个服务
:在此情况下,一个服务可以与多对接口顶点进行交互。它表示共享服务交互场景。在此场景中,多条边可以具有相同的边标签,但源顶点和目标顶点不同。
在图5中,通过服务S11, S12, S13连接了两对接口(V11, V21)和(V12, V22)。此处,S12服务在租户1和租户2之间共享。
d) 租户 :在SaaSAMT中,租户被视为直接与FCADCA的第1层或应用层接口交互的一组用户。一个租户可以关联到应用层的一个专用接口。换句话说,应用层中的接口数量等于租户数量。
e) 数据服务管理 :在SaaSAMT中,数据管理层的接口(第4层顶点)负责处理一个或多个数据服务。然而,共享数据服务可以通过数据管理层上的单一接口进行访问。
4.3 SaaSAMT图上提出的度量指标
基于SaaAMT图的概念,可以定义多个有意义的度量指标,这些指标对评估应用多租户场景非常有效。
(i) 租户数量 :租户数量可以通过应用层上的接口数量来定义,用U表示。因此,
$$
U = |v_1|
$$
其中,$v_1$ 表示应用层或第1层上的接口数量,且$v_1 \subset V$。这里,$|v_1|=1$ 表示单租户,而$|v_1|>1$ 表示多个租户。
(ii) 共享度 :在多租户中,每个租户共享同一个应用实例,尽管对他们而言似乎是在使用专用的实例。因此,评估多租户的一个关键参数是共享度,它反映了资源在租户之间共享的程度。此处,共享度表示为$D_s$。$D_s$的取值取决于第1层中的顶点数量或租户数量U、共享服务数量m以及最大可能部分支持P和总层数L的数量。形式上,P可以表示为,
$$
P = \left( \prod_{i=1}^{4} |V_i| \right) \times \left( \prod_{i=1}^{4} |S_i| \right)
$$
其中$|V_i|$ 是第i层的顶点数量,$|S_i|$ 是第i层中的服务数量。
由于FCADCA框架由四层组成,因此L的值始终为4。因此,共享度可以表示为,
$$
D_s = \frac{m \times U}{P \times L}
$$
对于应用多租户,可共享性度量$D_s$将在共享服务数量增加或租户数量与共享服务数量同时增加时提高。$D_s$的值始终介于0和1之间。对于隔离租户,如果没有服务被共享,则$D_s$的值最小且等于0。而对于具有共享服务集的多个租户,$D_s$的值介于0和1之间。因此,共享度的范围是$0 \leq D_s < 1$。
(iii)
实现复杂度
:该指标基于SaaSAMT图定义了应用多租户架构规范的复杂度度量,表示实现多租户SaaS应用的相对难度。显然,如果在应用多租户架构中可共享的服务数量较少和/或可能路径的数量较多,则实现复杂度会更高。因此,实现复杂度C与共享度$D_s$成反比,但在隔离租户的情况下除外,此时$D_s=0$。
形式上可以表示为,
$$
C =
\begin{cases}
P, & \text{where } D_s = 0 \
k / D_s, & \text{where } D_s \neq 0
\end{cases}
$$
其中,k是常数,其值取决于所使用的服务类型和租户的定制化能力。此处,为简化起见,k的值取为1。
对于隔离租户而言,当在软件即服务中部署大量隔离租户时,其复杂度值极高。而在高度共享服务场景下,或当$D_s$取最大值时,实现复杂度将降低。
4.4 通过SaaSAMT图实现应用级多租户
根据可共享性的类型,应用级租户可分为几类,即隔离租户、具有单个或多个数据服务的共享租户以及多个租户。这些类别会影响不同层中服务的可共享性。如果大多数层的服务都被共享,则可以实现较高的共享度。
(i)
隔离租户
:在这种情况下,每个租户都有一个独立的服务请求路径,该路径不包含任何共享服务。因此,每个租户使用一组独立的服务和接口。图6展示了隔离租户场景。
在此示例场景中,共享服务数量为$m=0$,用户组数量为$U=1$,最大可能路径数为$P=128$,层数为$L=4$。
因此,
$$
D_s = \frac{m \times U}{P \times L} = \frac{0 \times 1}{128 \times 4} = 0
$$
和实现复杂度$C = P = 128$,意味着可能的最大路径数量。
(ii)
单租户多数据服务
:单租户可以通过与中间层接口系列进行交互,请求多个专用的数据层服务。
在图7中,租户1访问了多个数据服务。在图中,服务数量$m = 2$,租户数量$U = 1$,最大独立路径数$P=((1\times1\times2\times2)\times(1\times1\times2)) = 8$,层数$L= 4$。
因此,共享度
$$
D_s = \frac{m \times U}{P \times L} = \frac{2 \times 1}{8 \times 4} = \frac{1}{16}
$$
以及实现复杂度$C= 16$。
(iii) 多租户共享服务 :在此类别中,多个租户共享单个或多个数据服务。根据共享的服务,可将其分为两类,
a)
多租户单数据服务
:在这种多租户类型中,多个租户共享一个数据服务。在此场景中,如果租户数量增加,则可共享性也会增加。
在图8中,数据服务已被多个租户共享。在此示例中,共享服务数量$m= 2$,租户数量$U=2$,最大独立路径数$P=((2\times2\times1\times1)\times(2\times1\times1)) = 8$,以及层数$L=4$。
因此,共享度
$$
D_s = \frac{m \times U}{P \times L} = \frac{2 \times 2}{8 \times 4} = \frac{1}{8}
$$
以及实现复杂度$C= 8$。
b)
多租户多数据服务
:在此场景中,多个租户通过中间的共享服务访问多个数据服务。这是软件即服务中应用级多租户可共享性最复杂的场景。
图9描述了具有共享服务的这种多租户类型。其中,共享服务数量$m=1$,租户数量$U=2$,最大独立路径数量$P=((2\times1\times2\times2)\times(2\times1\times2)) = 32$,以及层数$L= 4$。
因此,共享度
$$
D_s = \frac{m \times U}{P \times L} = \frac{1 \times 2}{32 \times 4} = \frac{1}{64}
$$
以及实现复杂度$C= 64$。
4.5 为租户查找路径的算法
在SaaS模型中,从用户的服务请求到服务响应,需以系统化的方式遵循若干步骤。在SaaSAMT图中,各层接口与相邻层接口进行交互,从应用层接口开始的交互将形成请求路径。此处假设来自数据管理层的回复将沿原路径反向返回。对于租户所请求的服务,高效地发现请求路径以完成请求‐回复循环至关重要。发现请求路径的算法以租户(TN)作为输入,利用相邻接口查找一条连续的服务请求路径以访问数据服务。
算法1. 发现请求路径的算法
输入:租户ID
输出:交互路径
Request[] 路径(TN) {
栈 S
交互 { 顶点 Ver1, 服务 Ser, 顶点 Ver2 } T[]
路径 { 交互 T[] } P[]
Or = NULL
v = 与 T 相连的顶点
将 v 压入栈 S
当 S 非空时 {
v1 = 从栈 S 弹出
list[] = v1 的相邻节点
for i = 1 到 n {
如果 label(v1, list[i]) 匹配租户请求的服务 {
T[] = <V1, label(v1, list[i]), list[i]>
将 (list[i]) 压入栈 S
}
}
Built_路径(Or, T[], P[])
Or = v1
}
返回 P[]
}
函数:Built_路径(Or, T[], P[]) {
n = mod(T[])
if (Or == NULL) {
for i = 1 到 n
将 T[i] 加入 P[]
} else {
P’ = 在路径 P[] 中搜索 其中 (P[i].T[i].ver2) == Or
for i = 1 到 n
将 T[i] 加入 P’
在 P[] 中构建新路径 P’
}
}
首先,将租户接口(SaaSAMT图中的第一层顶点)压入栈S,然后检查其相邻顶点。如果连接顶点的边上的标签与租户服务匹配,则会存储该交互。该交互及其源顶点随后用于查找租户的所有可能交互路径。此过程持续进行,直到栈为空。算法1描述了所提方法的伪代码。
在此算法中,循环耗时为Θ(V),且对每个顶点还需检查其相邻层的顶点。因此,该算法的复杂度可定义为,
$$
\text{complexity} = \sum V_i + \sum E_i = \mathcal{O}(V + E)
$$
因此,从复杂度分析可以看出,SaaSAMT图中接口(顶点)数量的增加会导致复杂度上升。如果顶点数量增加,则共享度会降低,进而影响应用可扩展性。
5. 所提SaaSAMT方法的示例说明
为了说明SaaSAMT在多租户应用中的概念,本文使用了一个简化的直接护理电子健康记录(EHR)系统的示例。Direct Care EHR系统需要一种能够在任何时间、任何地点提供患者护理信息的基础设施。因此,该示例适用于在云环境中实现。该系统通过使用FCADCA和所提出的SaaSAMT实现。简化的Direct Care电子健康记录系统包含两个不同的组件:注册与计费服务组件和药物与护理服务组件。从这些组件中衍生出若干组服务,如表2所列。
基于这些服务创建了两个不同的应用,分别命名为应用1(S21, S25, S26)和应用2(S22, S23, S24)。对于存储与患者相关的信息,考虑了两个独立的数据服务。此外,为简化起见,本示例中仅考虑了两个不同的租户:一个是注册与计费服务的用户组,另一个是顾问用户组。这两个租户都使用这两个数据服务,因为它们彼此依赖。
上述示例的用例表示说明了其组件之间可能存在的有效交互;它还展示了系统的功能,并演示了系统用户之间的交互机制。图10描述了参与者(租户)与简化EHR云的不同组件和概念之间的交互。在此示例中,租户与应用1(app1)和应用2(app2)相关联。应用1包含人口统计服务(S21)、订购和采购服务(S25)以及计费服务(S26);而应用2包含诊断服务(S22)、咨询服务(S23)和药物服务(S24)。然而,在此示例中,服务(S25, S26)和(S22, S23)被组合在一起。这些服务分别源自业务组件S31 和S32 , ,它们分别使用数据服务S41 和S42 。
该用例图可以轻松映射到SaaSAMT图中。从用例图可以看出,应用层需要两个不同的接口V11 和V12。在服务层中,六种不同的服务中有两对服务被组合在一起。因此,组合服务可被视为一个单一单元,所以在SaaSAMT中,服务层的接口顶点总数为四个(V21, V22, V23, V24)。然而,所有服务都扩展自这两个业务组件,因此业务流程层将具有两个接口顶点(V31, V32)。如前所述,该业务组件使用两个数据服务,且这些数据服务也相互关联,因此数据层将有一个接口顶点(V41)。此示例对应的SaaSAMT图如图11所示。其中,边表示接口顶点之间的交互,边上的标签表示服务。
因此,使用多个租户检索任意数据服务的共享度为
$$
D_s = \frac{m \times U}{P \times L} = \frac{2 \times 2}{256 \times 4} = \frac{1}{256}
$$
实现复杂度为 $ C = 256 $。因为此处租户数量 $ U = 2 $,共享服务数量 $ m = 2 $,最大独立路径数 $ P = ((2 \times 4 \times 2 \times 1) \times (2 \times 4 \times 2)) = 256 $,层数 $ L = 4 $。
6. 应用级多租户方法的详细比较分析
SaaS应用应具备按需、自助服务、基于广泛网络的访问、资源池化、快速弹性和计量服务等特性,这些特性由NIST[10]定义。为了实现这些目标以及应用多租户,所需的SaaS架构框架必须支持多种功能。本节描述了这些功能,并用于比较支持多租户的SaaS架构框架。为此,采用了[1, 6, 4, 8, 9, 5, 7]中描述的模型以及提出的SaaSAMT图。相关比较已在表3中总结。
a) 用于多租户的服务模型 :文献中研究的应用多租户方法很少,且大多数方法缺乏形式化。所提出的SaaSAMT提供了一种基于图的正式方法,用于表示SaaS中不同的应用级多租户场景。
b) 框架 :最近文献中的大多数应用多租户方法并未遵循健全的软件即服务架构框架。因此,这些方法在表示和分析SaaS中具有共享服务的各种应用多租户方面存在局限性。SaaSAMT是基于一种称为面向数据为中心应用的灵活云架构(FCADCA)的软件即服务架构框架设计的。然而,总体而言,所提出的方法也可适用于云环境中的任何软件即服务架构框架。
c) 性能 :在所提出的方法中,定义了多个度量指标,如租户数量、共享度和实现复杂度,这些指标对于在设计层面分析性能特征至关重要。这些度量指标强调,通过较高的共享度、较少的可能路径以及适中的租户数量,可以实现更好的应用多租户性能。
d) 可扩展性 :指某种解决方案在问题规模增大时的适用程度。在所提出的SaaSAMT中,可扩展性可以通过接口(顶点)数量和租户数量来控制。研究表明,如果顶点数量增加,则共享度会降低,从而影响应用可扩展性。
e) 成本优化 :该功能问题的目标是最小化多租户环境下针对用户服务请求的数据检索成本和实施成本。通过增加租户数量、共享服务,或两者同时增加,SaaSAMT可以显著优化实施成本。为此,已为SaaSAMT图定义了实施复杂度度量。
f) 可用性 :可用性与应用在软件即服务中的存在相关。如果一个应用在需要时无法使用,那么它很可能无法满足租户的功能需求。在恢复过程中,该应用处于不可用状态。所提出的SaaSAMT方法采用了FCADCA分层架构框架,并受到FCADCA可用性特性的影响。
g) 数据异构性 :通常情况下,云应用及其相关数据本质上具有异构性。云环境中的SaaS架构必须同时支持结构化、半结构化和非结构化数据服务,以满足广泛的数据中心应用需求。由于所提出的SaaSAMT方法基于FCADCA框架,其中数据管理层的顶点负责处理多种类型的数据服务。此外,共享数据服务可通过数据管理层上的单一接口(顶点)进行访问。
| 引用指数 | (a) | (b) | (c) | (d) | (e) | (f) | (h) |
|---|---|---|---|---|---|---|---|
| [1] | SaaS | - | - | - | - | - | P |
| [6] | SaaS | - | - | - | - | - | P |
| [4] | 软件即服务,基础设施即服务 | - | - | - | Y | - | - |
| [8] | 软件即服务,基础设施即服务 | - | Y | Y | - | Y | - |
| [9] | SaaS | Y | - | - | - | - | - |
| [5] | - | Y | Y | - | - | Y | - |
| [7] | - | Y | - | Y | - | Y | - |
| SaaSAMT | SaaS | Y | Y | Y | P | P | Y |
这里的‘Y’表示存在,‘P’表示部分支持,而-表示在表中未定义。
7. 结论与未来工作
应用多租户利用消费者在云环境中以高度定制化的方式访问共享应用和数据库实例。本文提出了在云环境的SaaS模型中,应用级多租户及其不同方面的形式化表示。为此,提出了一种基于图的方法,称为SaaS级应用多租户图(SaaSAMT)。该图形化方法有助于分析多个租户访问与SaaS应用相关的共享服务集的服务交互路径。所提出的SaaSAMT图基于一种名为面向数据为中心应用的灵活云架构(FCADCA)[12, 13]的SaaS架构框架。然而,总体而言,所提出的方法也可适用于云环境中的任何SaaS架构框架。
所提出的方法能够基于服务共享特性来表示和分析多种类型的应用多租户(如隔离租户、具有单个或多个数据服务的共享租户以及多个租户)。在该方法基础上还定义了若干有用度量,如共享度和实现复杂度,这些度量对于描述多租户SaaS应用的基本特征至关重要。此外,还基于SaaSAMT图设计了一种算法,用于发现多租户应用场景中的请求与响应路径。结果表明,该方法的时间复杂度为 $\mathcal{O}(V + E)$。随着SaaSAMT图中接口(顶点)数量的增加,发现请求路径的复杂度将随之增加。所有这些特征表明,在应用级多租户中,可扩展性可以通过共享服务数量和接口数量来处理。此外,通过案例研究以及与现有方法的详细比较,展示了所提方法的表达能力。
未来工作包括完善SaaSAMT图的指标集,这将有助于对SaaS中的应用多租户场景进行详尽分析。在实时云环境中验证所提出方法也是一个重要的未来目标。
基于图的SaaS多租户建模方法
2941

被折叠的 条评论
为什么被折叠?



