专利名称:用于多租户环境下定位应用程序的隔离点的方法和系统的制作方法
技术领域:
本发明涉及软件即服务SaaS,特别涉及多租户环境下定位应用程序的隔离点的方法和系统。
背景技术:
随着互联网技术的发展,软件即服务(SaaS, Software as a service)将软件作为一种服务形式提供给客户,帮助软件开发商通过提供服务的形式赢得客户。云计算的兴起,使SaaS的安全性和可靠性受到越来越多企业的认可和信赖。作为SaaS应用的核心技术,多重租赁(Multi-Tenant),又称“多租户”受到越来越多的重视,多租户的思想是将多个租户的数据和业务流程托管存放在SaaS服务商的同一服务器组上,经过软件和数据库的隔离及保密等技术同时使用,其目的是允许多个企业(或者企业内部多个租户)共享软硬件资源,提高资源利用率,降低了分摊在单个租户上的平均基础设施和管理成本。虽然多租户可以提高资源的利用率,但是同时也存在着一些问题,其中如何保证各租户之间的数据隔离是多租户应用面临的难点之一,一个应用实例需要支持多个租户资源共享,需要确保多个租户的数据能够安全隔离,从而正确运行多个租户的应用实例,应用的开发人员在对应用进行程序开发和转换(修改成多租户模式)时需要确定应用实例的隔离点,其中隔离点即多租户各自享有的资源,例如某些文件、静态变量、数据库以及缓存,其区别于共享点,共享点即多租户共享的资源。现有的方法需要开发人员通过人工查找所有数据库、源代码来确定隔离点,然而由于涉及的隔离数量庞大,不仅需要花费大量的人力成本,而且效率低、准确性差。因此需要一种在多租户环境下高效、准确定位应用程序中的隔离点的方法
发明内容
基于上述问题,本发明提供一种在多租户环境下高效、准确定位应用程序中的隔离点的方法和装置。根据本发明的第一方面,提供一种用于多租户环境下定位应用程序的隔离点的方法,该方法包括利用扫描规则扫描应用程序以获得潜在隔离点以及潜在隔离点之间的关系;从潜在隔离点中指定至少一个隔离点;利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出隔离点。根据本发明的第二方面,提供一种用于多租户环境下定位应用程序的隔离点的装置,该装置包括扫描模块,被配置为利用扫描规则扫描应用程序以获得潜在隔离点以及潜在隔离点之间的关系;指定模块,被配置为从潜在隔离点中指定至少一个隔离点;以及隔离点筛选模块,被配置为利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出隔离点。根据本发明的实施例的定位应用程序中的隔离点的方法和装置,能够高效、准确定位应用程序中的隔离点,节省大量的人力成本。
结合附图,通过参考下列的实施例详细描述多租户环境下定位应用程序的隔离点的方法和系统,将会更好地理解本发明本身、优选的实施方式以及本发明的目的和优点,其中图I示出根据本发明实施例的多租户环境下定位应用程序的隔离点的方法;图2示出根据本发明实施例构建的有向图的示例;图3示出根据本发明实施例的多租户环境下定位应用程序的隔离点的方法;图4示出根据本发明实施例的多租户环境下定位应用程序的隔离点的方法;·图5示出根据本发明实施例的多租户环境下定位应用程序的隔离点的装置框图;以及图6示意性示出了实现根据本发明的实施例的计算设备的结构方框图。
具体实施例方式以下结合附图描述根据本发明实施例的多租户环境下定位应用程序的隔离点的方法和系统,将会更好地理解本发明的目的和优点。图I示出根据本发明实施例的多租户环境下定位应用程序的隔离点的方法,该方法包括在步骤S101,利用扫描规则扫描应用程序以获得潜在隔离点以及潜在隔离点之间的关系;在步骤S102,从潜在隔离点中指定至少一个隔离点;在步骤S103,利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出真正隔离点。在步骤S101,利用扫描规则扫描应用程序以获得潜在隔离点以及潜在隔离点之间的关系。首先预先定义扫描规则,扫描规则用于查找潜在隔离点以及潜在隔离点之间的关系,在扫描规则中定义扫描应用程序以获得的潜在隔离点的类型以及潜在隔离点之间的关系,根据本发明的实施例,潜在隔离点包括静态变量类型的隔离点、文件类型的隔离点和数据库类型的隔离点。对于静态变量类型的隔离点,通过对应用程序进行静态分析查找到所有的变量声明,在所有的变量声明中搜索关键字“static”,从而找到静态变量,并获得静态变量类型的隔离点的属性,即,静态变量的名称、类别、所属的类以及声明静态变量的位置,通过静态变量类型的隔离点的属性可以唯一确定静态变量类型的隔离点。对于文件类型的隔离点,通过对应用程序进行静态分析查找到对文件API的调用,对调用的参数返回值进行分析获得文件类型的隔离点的属性,即,文件的名称、目录,文件类型的隔离点的属性可以唯一确定文件类型的隔离点。对于数据库类型的隔离点,通过对数据库脚本静态分析查找到表结构的创建语句,对表结构的创建语句进行分析获得数据库类型的隔离点的属性,即,表结构和表名,数据库类型的隔离点的属性可以唯一确定数据库类型的隔离点。扫描规则中定义的潜在隔离点之间的关系至少包括以下其中之一赋值关系和成员关系,其中赋值关系表示将一个潜在隔离点赋值给另一个潜在隔离点,赋值关系包括直接赋值、参数传递以及函数调用返回值赋值,成员关系表示一个潜在隔离点包含另一个潜在隔离点。根据本发明的实施例,对于静态变量类型、文件类型和数据库类型的潜在隔离点来说,存在六种潜在隔离点之间的关系,即,静态变量类型的隔离点之间的关系、静态变量类型的隔离点与文件类型的隔离点之间的关系、静态变量类型的隔离点与数据库类型的隔离点之间、文件类型的隔离点之间、文件类型的隔离点与数据库类型的隔离点之间以及数据库类型的隔离点之间的关系,以下分别介绍六种隔离点之间的关系。静态变量类型的潜在隔离点之间的关系包括赋值关系和成员关系,其中赋值关系表示将一个静态变量的值赋值给另一个静态变量,包括直接赋值、参数传递以及函数调用返回值赋值,成员关系表明一个静态变量是另一个静态变量的成员。静态变量类型的潜在隔离点与文件类型的潜在隔离点之间的关系包括赋值关系,其中赋值关系包括将文件的内容赋给变量;以及将变量赋给文件。 静态变量类型的潜在隔离点与数据库类型的潜在隔离点之间的关系包括赋值关系,其中赋值关系包括将数据库的内容赋给变量;以及将变量赋给数据库。文件类型的潜在隔离点之间的关系包括赋值关系和成员关系,其中赋值关系表示将文件的内容赋给变量并且将变量赋给另一个文件,成员关系表示一个文件是另一个目录类型文件的子文件。文件类型的潜在隔离点与数据库类型的潜在隔离点之间的关系包括赋值关系,其中赋值关系表示将文件的内容赋给变量并且将变量赋给数据库,或者将数据库的内容赋值给变量并且将变量赋值给文件。数据库类型的潜在隔离点之间的关系包括赋值关系,其中赋值关系表示将数据库的内容赋给变量并且将变量赋给数据库,数据库类型的潜在隔离点之间的关系还包括通过SQL (Structured Query Language)结构化查询语句将数据库读出再写入另一个数据库。利用扫描规则扫描应用程序的代码以获得具有上述类型以及上述关系的潜在隔离点,根据本发明的实施例,利用获得的潜在隔离点和潜在隔离点之间的关系构建有向图,有向图G = (V,E),由多个结点V和至少一条有向边构成,V表示结点的集合,E表示结点之间的有向边集合,其中每个结点表示潜在隔离点,从一个结点指向另一个结点的有向边表示潜在隔离点之间的关系。例如通过扫描程序代码获得潜在隔离点静态变量i和j,int i=j,能够确定静态变量i和j之间的关系是赋值关系,图2示出根据本发明实施例构建的有向图的示例,如图所示,结点i和j分别表示静态变量i和j,从结点j指向结点i的有向边表明将静态变量j的值赋给静态变量i。在步骤S102,从潜在隔离点中指定至少一个隔离点,由应用程序的开发人员根据应用程序的应用场景从潜在隔离点中指定至少一个隔离点。在步骤S103,利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出隔离点。具体地,通过对构建的有向图中的潜在隔离点应用隔离点确定规则来确定隔离点。根据本发明的实施例,如果将所述指定的至少一个隔离点赋值给潜在隔离点,则确定潜在隔离点是隔离点。例如,对于具有赋值关系的指定隔离点a和潜在隔离点b,如果将a赋值给b并且a是隔离点,那么能够确定b也是隔离点。本发明实施例的隔离点的确定规则并不限于具有直接赋值关系的隔离点,对于具有传递赋值关系的多个隔离点也适用,例如,对于指定隔离点a和潜在隔离点b和C,如果将a赋值给b并且将b赋值给C,那么能够确定b和c是隔离点。
根据本发明的实施例,如果所述指定的至少一个隔离点包含潜在隔离点,则确定潜在隔离点是隔离点。例如,对于具有成员关系的指定隔离点a和潜在隔离点b,如果a包含b,那么能够确定b也是隔离点。图3示出根据本发明实施例的多租户环境下定位应用程序的隔离点的方法,步骤S301至步骤S303分别对应于步骤SlOl至步骤S103,具体实现参照步骤SlOl至步骤S103,在此不一一赘述。根据本发明的实施例,增加步骤S304-S306。在步骤S304,从潜在隔离点中指定至少一个共享点,由应用程序的开发人员根据应用程序的应用场景从潜在隔离点中指定至少一个共享点。在步骤S305,利用所述指定的至少一个共享点与其余所述潜在隔离点之间的关系从潜在隔离点中过滤出至少一个共享点。
根据本发明的实施例,如果将潜在隔离点赋值给所述共享点,则确定潜在隔离点是共享点。例如,对于具有赋值关系的潜在隔离点b和共享点a,如果将b赋值给a,那么能够确定b也是共享点。本发明实施例的共享点的确定规则并不限于具有直接赋值关系的共享点,对于具有传递赋值关系的多个共享点也适用,例如,对于指定共享点a和潜在隔离点b和c,如果将c赋值给b并且将b赋值给a,那么能够确定b和c是共享点。根据本发明的实施例,如果潜在隔离点包含所述共享点,那么确定潜在隔离点是共享点。例如,对于具有成员关系的共享点a和潜在隔离点b,如果b包含a,那么b也是共享点在步骤S306,检测筛选出的隔离点中是否存在共享点,响应于检测结果为是,则报告存在冲突的隔离点。在利用上述确定隔离点的规则筛出隔离点,以及利用确定共享点的规则过滤出共享点之后,检测筛选出的隔离点中是否存在共享点,如果存在共享点,则报告存在冲突的隔离点,由应用程序的开发人员去处理。图4示出根据本发明实施例的多租户环境下定位应用程序的隔离点的方法,步骤S401至步骤S406分别对应于步骤S301至步骤S306,具体实现参照步骤S301至步骤S306,在此不一一赘述。根据本发明的实施例,增加步骤S407。在步骤S407,进一步包括通过计算剩余潜在隔离点与确定的隔离点的相关度向用户推荐剩余潜在隔离点中高概率的隔离点。根据本发明的实施例,利用推荐算法计算剩余潜在隔离点与确定的隔离点的相关度,假设给定的有向图G = (V,E),其中V表示结点的集合,E表示结点之间的有向边集合,根据上述的方法将结点集合V划分为隔离点集合Vd(Ul,U2. . . un)、潜在隔离点集合Vp(Vl,v2. . . vm)以及共享点集合Vs (W1, W2. . . wk),选取潜在隔离点集合Vp中任意一个潜在隔离点Vj,计算隔离点集合Vd (Ul,u2. . . un)中每个隔离点Ui与潜在隔离点Vj之间的距离d(Vj,Ui),Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间最短路径的一种算法,可以利用Floyd-Warshall算法计算隔离点集合Vd(U1,u2. . . Un)中每个隔离点Ui与潜在隔离点Vj之间的距离(!(Ui,Vj)将结点集V中的所有结点记为V = {x1 x2, , XpI设沪(1^, Vj)为从Ui到Vj的只以{x1; x2, , xk}集合中的结点为中间结点的最短路径的长度,若最短路径经过结点Xk,则(^(Ui, V」)=dk_1 (Ui, xk) +dk_1 (xk, Vj);若最短路径不经过点Xk,则(^(Ui, Vj) = dk_1 (Ui, Vj);
因此,dk(Ui,Vj) = min (dk_1 (Ui, xk) +dk_1 (xk, Vj), dk_1 (Ui, Vj))按照上述算法计算出隔离点集合Vd(Ul,ii2. . . un)中每个隔离点到潜在隔离点Vj的最短距离d(Ui,Vj) (Ui e Vd),选取其中的最小值作为隔离点集合Vd(Ul,U2. . . un)与潜在隔离点 ' 的距离D(Vj) = min{dk (Ui, Vj) Ui e Vd}按照上述方法计算出隔离点集合Vd与所有潜在隔离点的距离D(Vj) (Vj e Vp),并按照D(Vj)的大小排序呈现给用户,D(Vj)越大,表明潜在隔离点是隔离点的概率越小,为应用程序的开发人员提供推荐的隔离点的列表,开发人员按照推荐的隔离点的列表首先查找高概率的隔离点,节省了开发人员的手工查找的人力成本和时间成本。 基于同一发明构思,本发明提出一种多租户环境下定位应用程序的隔离点的装置,图5示出根据本发明的实施例用于多租户环境下定位应用程序的隔离点的装置,该装置包括扫描模块501,被配置为利用扫描规则扫描应用程序以获得潜在隔离点以及潜在隔离点之间的关系;指定模块502,被配置为从潜在隔离点中指定至少一个隔离点;以及隔离点筛选模块503,被配置为利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出隔离点。根据本发明的实施例,其中所述潜在隔离点之间的关系至少包括以下其中之一赋值关系和成员关系。根据本发明的实施例,隔离点筛选模块503进一步被配置为如果将所述指定的至少一个隔离点赋值给潜在隔离点,则确定潜在隔离点是隔离点。根据本发明的实施例,其中隔离点筛选模块503进一步被配置为如果所述指定的至少一个隔离点包含潜在隔离点,则确定潜在隔离点是隔离点。根据本发明的实施例,其中指定模块502进一步被配置为从潜在隔离点中指定至少一个共享点。根据本发明的实施例,该装置进一步包括共享点过滤模块504,被配置为利用所述指定的至少一个共享点与其余所述潜在隔离点之间的关系从潜在隔离点中过滤出共享点。根据本发明的实施例,其中共享点过滤模块504被进一步配置为如果将潜在隔离点赋值给所述指定的至少一个共享点,则确定潜在隔离点是共享点。根据本发明的实施例,其中共享点过滤模块被进一步配置为如果潜在隔离点包含所述指定的至少一个共享点,则确定潜在隔离点是共享点。根据本发明的实施例,进一步包括冲突报告模块505,被配置为如果检测到筛选出的隔离点中存在共享点,则报告存在冲突的隔离点。根据本发明的实施例进一步包括隔离点推荐模块506,被配置为通过计算剩余潜在隔离点与筛选的隔离点之间的相关度向用户推荐剩余潜在隔离点中高概率的隔离点。图6则示意性示出了可以实现根据本发明的实施例的计算设备的结构方框图。图6中所示的计算机系统包括CPU (中央处理单元)601、RAM (随机存取存储器)602、ROM (只读存储器)603、系统总线604,硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器608、显示器控制器609、硬盘610、键盘611、串行外部设备612、并行外部设备613和显示器614。在这些部件中,与系统总线604相连的有CPU 601、RAM602、R0M603、硬盘控制器605、键盘控制器606,串行接口控制器607,并行接口控制器608和显示器控制器609。硬盘610与硬盘控制器605相连,键盘611与键盘控制器606相连,串行外部设备612与串行接口控制器607相连,并行外部 设备613与并行接口控制器608相连,以及显示器614与显示器控制器609相连。图6中每个部件的功能在本技术领域内都是众所周知的,并且图6所示的结构也是常规的。这种结构不仅用于个人计算机,而且用于手持设备,如Palm PC、PDA(个人数据助理)、移动电话等等。在不同的应用中,例如用于实现包含有根据本发明的客户端模块的用户终端或者包含有根据本发明的网络应用服务器的服务器主机时,可以向图6中所示的结构添加某些部件,或者图6中的某些部件可以被省略。图6中所示的整个系统由通常作为软件存储在硬盘610中、或者存储在EPROM或者其它非易失性存储器中的计算机可读指令控制。软件也可从网络(图中未示出)下载。或者存储在硬盘610中,或者从网络下载的软件可被加载到RAM 602中,并由CPU 601执行,以便完成由软件确定的功能。尽管图6中描述的计算机系统能够支持根据本发明提供的技术方案,但是该计算机系统只是计算机系统的一个例子。本领域的熟练技术人员可以理解,许多其它计算机系统设计也能实现本发明的实施例。虽然这里参照附图描述了本发明的示例性实施例,但是应该理解本发明不限于这些精确的实施例,并且在不背离本发明的范围和宗旨的情况下,本领域普通技术人员能对实施例进行各种变化的修改。所有这些变化和修改意欲包含在所附权利要求中限定的本发明的范围中。应当理解,本发明的至少某些方面可以可替代地以程序产品实现。定义有关本发明的功能的程序可以通过各种信号承载介质被传送到数据存储系统或计算机系统,所述信号承载介质包括但不限于,不可写存储介质(例如,CD-ROM)、可写存储介质(例如,软盘、硬盘驱动器、读/写CD ROM、光介质)以及诸如包括以太网的计算机和电话网络之类的通信介质。因此应当理解,在此类信号承载介质中,当携带或编码有管理本发明中的方法功能的计算机可读指令时,代表本发明的可替代实施例。本发明可以硬件、软件、固件或其组合的方式实现。本发明可以集中的方式在一个计算机系统中实现,或以分布方式实现,在这种分布方式中,不同的部件分布在若干互连的计算机系统中。适于执行本文中描述的方法的任何计算机系统或其它装置都是合适的。优选地,本发明以计算机软件和通用计算机硬件的组合的方式实现,在这种实现方式中,当该计算机程序被加载和执行时,控制该计算机系统而使其执行本发明的方法,或构成本发明的系统。上面出于举例说明的目的,给出了本发明的优选实施例的说明。优选实施例的上述说明不是穷尽的,也不打算把本发明局限于公开的明确形式,显然鉴于上述教导,许多修改和变化是可能的。对本领域的技术人员来说显而易见的这种修改和变化包括在由附加的权利要求限定的本发明的范围内。
权利要求
1.一种用于多租户环境下定位应用程序的隔离点的方法,包括利用扫描规则扫描应用程序以获得潜在隔离点以及潜在隔离点之间的关系; 从潜在隔离点中指定至少一个隔离点; 利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出隔离点。
2.根据权利要求I的方法,其中所述潜在隔离点之间的关系至少包括以下其中之一赋值关系和成员关系。
3.根据权利要求2的方法,其中利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出隔离点包括 如果将所述指定的至少一个隔离点赋值给潜在隔离点,则确定潜在隔离点是隔离点。
4.根据权利要求2的方法,其中利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出隔离点包括 如果所述指定的至少一个隔离点包含潜在隔离点,则确定潜在隔离点是隔离点。
5.根据权利要求1-4任一项所述的方法,进一步包括在潜在隔离点中指定至少一个共享点。
6.根据权利要求5的方法,进一步包括利用所述指定的至少一个共享点与其余所述潜在隔离点之间的关系从所述潜在隔离点中过滤出共享点。
7.根据权利要求6的方法,其中利用所述指定的至少一个共享点与其余所述潜在隔离点之间的关系从潜在隔离点中过滤出共享点进一步包括如果将潜在隔离点赋值给所述共享点,则确定潜在隔离点是共享点。
8.根据权利要求6的方法,其中利用所述指定的至少一个共享点与其余所述潜在隔离点之间的关系从潜在隔离点中过滤出共享点进一步包括如果潜在隔离点包含所述共享点,那么确定潜在隔离点是共享点。
9.根据权利要求6的方法,进一步包括检测筛选出的隔离点中是否存在共享点;响应于检测结果为是,则报告存在冲突的隔离点。
10.根据权利要求1-4任一项所述的方法,进一步包括通过计算剩余的潜在隔离点与确定的隔离点之间的相关度向用户推荐剩余的潜在隔离点中高概率的隔离点。
11.一种用于多租户环境下定位应用程序的隔离点的装置,包括扫描模块,被配置为利用扫描规则扫描应用程序以获得潜在隔离点以及潜在隔离点之间的关系; 指定模块,被配置为从潜在隔离点中指定至少一个隔离点;以及 隔离点筛选模块,被配置为利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出隔离点。
12.根据权利要求11的装置,其中所述潜在隔离点之间的关系至少包括以下其中之一赋值关系和成员关系。
13.根据权利要求12的装置,其中隔离点筛选模块进一步被配置为 如果将所述指定的至少一个隔离点赋值给潜在隔离点,则确定潜在隔离点是隔离点。
14.根据权利要求12的装置,其中隔离点筛选模块进一步被配置为 如果所述指定的至少一个隔离点包含潜在隔离点,则确定潜在隔离点是隔离点。
15.根据权利要求11-14任一项所述的装置,其中指定模块进一步被配置为从潜在隔离点中指定至少一个共享点。
16.根据权利要求15的装置,进一步包括共享点过滤模块,被配置为利用所述指定的至少一个共享点与其余所述潜在隔离点之间的关系从潜在隔离点中过滤出共享点。
17.根据权利要求16的装置,其中共享点过滤模块被进一步配置为 如果将潜在隔离点赋值给所述指定的至少一个共享点,则确定潜在隔离点是共享点。
18.根据权利要求16的装置,其中共享点过滤模块被进一步配置为 如果潜在隔离点包含所述指定的至少一个共享点,则确定潜在隔离点 是共享点。
19.根据权利要求16的装置,进一步包括冲突报告模块,被配置为检测筛选出的隔离点中是否存在共享点,响应于检测结果为是,则报告存在冲突的隔离点。
20.根据权利要求11-14任一项所述的装置,进一步包括隔离点推荐模块,被配置为通过计算剩余潜在隔离点与筛选的隔离点之间的相关度向用户推荐剩余潜在隔离点中高概率的隔尚点。
全文摘要
本发明公开一种用于多租户环境下定位应用程序的隔离点的方法和系统,该方法包括利用扫描规则扫描应用程序以获得潜在隔离点以及潜在隔离点之间的关系;从潜在隔离点中指定至少一个隔离点;利用所述指定的至少一个隔离点与其余所述潜在隔离点之间的关系从潜在隔离点中筛选出隔离点。
文档编号G06F21/57GK102968593SQ20111027023
公开日2013年3月13日 申请日期2011年8月31日 优先权日2011年8月31日
发明者樊莉亚, 周明骏, 高波, 马丽丽, 王芝虎, 蔡弘, 郭常杰, 安文豪 申请人:国际商业机器公司