首页 / 专利库 / 电脑编程 / 执行环境 / 用于在应用服务器、云或其它环境中支持多租户的系统和方法

用于在应用服务器或其它环境中支持多租户的系统和方法

阅读:287发布:2024-02-18

专利汇可以提供用于在应用服务器或其它环境中支持多租户的系统和方法专利检索,专利查询,专利分析的服务。并且根据 实施例 ,本文所描述的是用于在应用 服务器 、 云 、室内或其它环境中支持多租户的系统和方法,这使得组件和配置的类别能够与特定的应用实例或分区相关联。资源组模板在域级别定义能够从资源组被引用的可部署资源集合。每个资源组是能够引用资源组模板的、命名的、完全合格的可部署资源集合。分区提供了域的管理和运行时细分,并且包含一个或多个资源组。每个资源组能够引用资源组模板,以将可部署资源绑定到特定于分区的值,以供进行引用的分区使用。 应用服务器 或云环境的租户能够与供该租户使用的分区或部署在其中的应用相关联。,下面是用于在应用服务器或其它环境中支持多租户的系统和方法专利的具体信息内容。

1.一种用于在应用服务器或其它环境中支持多租户的系统,包括:
计算机,包括应用服务器或其它环境,应用服务器或其它环境在该计算机上执行并且具有用于执行软件应用的域、以及能够部署到所述域以供软件应用使用的一个或多个资源;
一个或多个资源组模板,其中每个资源组模板在域级别定义能够从资源组被引用的资源集合;
一个或多个资源组,其中每个资源组能够引用资源组模板,并且定义完全合格的资源集合;
一个或多个分区,其中每个分区提供所述域的细分,并且能够与分区ID和配置相关联,并且能够包含应用和/或一个或多个资源组,并且能够引用一个或多个资源组模板;
其中,对于特定的分区,资源组模板能够被所述特定的分区中的资源组引用,以提供用于与所述特定的分区所引用的资源组模板一起使用的配置数据,并且以将资源组模板的资源绑定到特定于分区的值,以供进行引用的分区或与所述特定的分区相关联的软件应用使用;及
其中租户能够与供该租户使用的分区相关联。
2.如权利要求1所述的系统,其中所述一个或多个资源组模板、资源组和分区通过配置文件来定义。
3.如权利要求1所述的系统,其中能够部署的所述一个或多个资源包括一个或多个分区感知资源和一个或多个分区不感知资源。
4.如权利要求1所述的系统,其中应用服务器或云环境包括Java应用服务器,并且其中每个资源组模板包括一个或多个相关的Java应用,连同那些应用所依赖的资源。
5.如权利要求1所述的系统,其中所述系统在云环境内被提供,并且支持在云环境内操作的多个租户。
6.如权利要求1所述的系统,还包括多租户容器数据库CDB,该多租户容器数据库与所述域对应,并且包括一个或多个可插拔数据库PDB,其中每个可插拔数据库与特定分区对应。
7.如权利要求6所述的系统,其中所述系统支持多个租户,并且其中每个租户与其自己的分区和可插拔数据库相关联。
8.一种在应用服务器、云或其它环境中支持多租户的方法,包括:
在计算机中提供应用服务器或其它环境,应用服务器或其它环境在该计算机上执行并且具有用于执行软件应用的域、以及能够部署到所述域以供软件应用使用的一个或多个资源;
定义一个或多个资源组模板,其中每个资源组模板在域级别定义能够从资源组被引用的资源集合;
定义一个或多个资源组,其中每个资源组能够引用资源组模板,并且定义完全合格的资源集合;
定义一个或多个分区,其中每个分区提供所述域的细分,并且能够与分区ID和配置相关联,并且能够包含应用和/或一个或多个资源组,并且能够引用一个或多个资源组模板;
其中,对于特定的分区,资源组模板能够被所述特定的分区中的资源组引用,以提供用于与所述特定的分区所引用的资源组模板一起使用的配置数据,并且以将资源组模板的资源绑定到特定于分区的值,以供进行引用的分区或与所述特定的分区相关联的软件应用使用;及
其中租户能够与供该租户使用的分区相关联。
9.如权利要求8所述的方法,其中所述一个或多个资源组模板、资源组和分区通过配置文件来定义。
10.如权利要求8所述的方法,其中能够部署的所述一个或多个资源包括一个或多个分区感知资源和一个或多个分区不感知资源。
11.如权利要求8所述的方法,其中应用服务器或云环境包括Java应用服务器,并且其中每个资源组模板包括一个或多个相关的Java应用,连同那些应用所依赖的资源。
12.如权利要求8所述的方法,其中所述方法在云环境内被提供,并且支持在云环境内操作的多个租户。
13.如权利要求8所述的方法,还包括多租户容器数据库CDB,该多租户容器数据库与所述域对应,并且包括一个或多个可插拔数据库PDB,其中每个可插拔数据库与特定分区对应。
14.如权利要求13所述的方法,其中所述方法支持多个租户,并且其中每个租户与该租户自己的分区和可插拔数据库相关联。
15.一种计算机可读存储介质,包括存储在其中的指令,所述指令在被一个或多个计算机读取和执行时,使得所述一个或多个计算机执行包括以下的步骤:
提供应用服务器或其它环境,应用服务器或其它环境在所述计算机上执行并且具有用于执行软件应用的域、以及能够部署到所述域以供软件应用使用的一个或多个资源;
定义一个或多个资源组模板,其中每个资源组模板在域级别定义能够从资源组被引用的资源集合;
定义一个或多个资源组,其中每个资源组能够引用资源组模板,并且定义完全合格的资源集合;
定义一个或多个分区,其中每个分区提供所述域的细分,并且能够与分区ID和配置相关联,并且能够包含应用和/或一个或多个资源组,并且能够引用一个或多个资源组模板;
其中,对于特定的分区,资源组模板能够被所述特定的分区中的资源组引用,以提供用于与所述特定的分区所引用的资源组模板一起使用的配置数据,并且以将资源组模板的资源绑定到特定于分区的值,以供进行引用的分区或与所述特定的分区相关联的软件应用使用;及
其中租户能够与供该租户使用的分区相关联。
16.一种在应用服务器、云或其它环境中支持多租户的装备,包括:
用于在计算机中提供应用服务器或其它环境的装置,应用服务器或其它环境在该计算机上执行并且具有用于执行软件应用的域,以及能够部署到所述域以供软件应用使用的一个或多个资源;
用于定义一个或多个资源组模板的装置,其中每个资源组模板在域级别定义能够从资源组被引用的资源集合;
用于定义一个或多个资源组的装置,其中每个资源组能够引用资源组模板,并且定义完全合格的资源集合;
用于定义一个或多个分区的装置,其中每个分区提供所述域的细分,并且能够与分区ID和配置相关联,并且能够包含应用和/或一个或多个资源组,并且能够引用一个或多个资源组模板;
其中,对于特定的分区,资源组模板能够被所述特定的分区中的资源组引用,以提供用于与所述特定的分区所引用的资源组模板一起使用的配置数据,并且以将资源组模板的资源绑定到特定于分区的值,以供进行引用的分区或与所述特定的分区相关联的软件应用使用;及
其中租户能够与供该租户使用的分区相关联。
17.一种在应用服务器、云或其它环境中支持多租户的系统,包括:
一个或多个计算机;以及
计算机可读存储介质,所述计算机可读存储介质与所述一个或多个计算机耦接,所述计算机可读存储介质包括存储在其中的指令,所述指令在被所述一个或多个计算机读取并执行时使得所述一个或多个计算机执行包括以下的步骤:
提供应用服务器或其它环境,应用服务器或其它环境在所述一个或多个计算机上执行并且具有用于执行软件应用的域、以及能够部署到所述域以供软件应用使用的一个或多个资源;
定义一个或多个资源组模板,其中每个资源组模板在域级别定义能够从资源组被引用的资源集合;
定义一个或多个资源组,其中每个资源组能够引用资源组模板,并且定义完全合格的资源集合;
定义一个或多个分区,其中每个分区提供所述域的细分,并且能够与分区ID和配置相关联,并且能够包含应用和/或一个或多个资源组,并且能够引用一个或多个资源组模板;
其中,对于特定的分区,资源组模板能够被所述特定的分区中的资源组引用,以提供用于与所述特定的分区所引用的资源组模板一起使用的配置数据,并且以将资源组模板的资源绑定到特定于分区的值,以供进行引用的分区或与所述特定的分区相关联的软件应用使用;及
其中租户能够与供该租户使用的分区相关联。

说明书全文

用于在应用服务器或其它环境中支持多租户的系统和

方法

[0001] 版权申明
[0002] 本专利文档的公开内容的一部分包含受版权保护的素材。版权所有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现那样进行的传真再现,但是除此之外在任何情况下都保留所有版权。

技术领域

[0003] 本发明实施例一般而言涉及应用服务器和云环境,并且具体而言,涉及用于在这种环境中支持多租户的系统和方法。

背景技术

[0004] 应用服务器通常提供应用软件可以在其中被部署和运行的受管理的环境。基于云的环境允许应用在由云提供的分布式资源中运行并且利用这些分布式资源。这些环境可以支持大量的用户或租户,其中一些用户或租户可能具有特定于该用户或租户的具体要求。这些是其中可以使用本发明的实施例的环境的类型的一些例子。

发明内容

[0005] 根据实施例,本文所描述的是用于在应用服务器、云、本地部署(on-premise)或其它环境中支持多租户的系统和方法,其使得组件和配置的类别与特定的应用实例或分区相关联。资源组模板在域级别定义可以从资源组被引用的可部署资源集合。每个资源组是可以引用资源组模板的、命名的、完全合格的可部署资源集合。分区提供了域的管理和运行时细分,并且包含一个或多个资源组。每个资源组可以引用资源组模板,以将可部署资源绑定到特定于分区的值,以供进行引用的分区使用。应用服务器或云环境的租户可以与供该租户使用的分区或部署在其中的应用相关联。附图说明
[0006] 图1示出了根据实施例的、用于在应用服务器、云或其它环境中支持多租户的系统。
[0007] 图2进一步示出了根据实施例的、用于在应用服务器、云或其它环境中支持多租户的系统。
[0008] 图3进一步示出了根据实施例的、用于在应用服务器、云或其它环境中支持多租户的系统。
[0009] 图4示出了根据实施例的资源组模板的示例性使用。
[0010] 图5示出了根据实施例的示例性多租户环境。
[0011] 图6示出了根据实施例的、支持分区不感知组件和分区感知组件的系统。
[0012] 图7示出了根据实施例的、由多个租户对应用服务器、云或其它环境中的分区的访问
[0013] 图8示出了根据实施例的、在应用服务器、云或其它环境中支持多租户的方法。

具体实施方式

[0014] 如上所述,应用服务器通常提供软件应用可以在其中部署和运行的受管理的环境。基于云的环境允许应用在由云提供的分布式资源中运行并且利用这些分布式资源。这些环境可以支持大量的用户或租户,其中一些用户或租户可以具有特定于该用户或租户的具体要求。
[0015] 为了解决对这种环境的需要,根据实施例,本文所描述的是用于在应用服务器、云、本地部署或其它环境中支持多租户的系统和方法,该系统使得组件和配置的类别与特定的应用实例或分区相关联。资源组模板在域级别定义可以从资源组被引用的可部署资源集合。每个资源组是可以引用资源组模板的、命名的、完全合格的可部署资源集合。分区提供了域的管理和运行时细分,并且包含一个或多个资源组。每个资源组可以引用资源组模板,以将可部署资源绑定到特定于分区的值,以供进行引用的分区使用。应用服务器或云环境的租户可以与供该租户使用的分区或部署在该分区中的应用相关联。
[0016] 例如,诸如Oracle WebLogic Server(WLS)和Glassfish的Java EE应用服务器可以带有隔离度地运行Java归档。根据实施例,软件应用可以被视为包括作为在系统或域级别被管理的一组Java归档或其它组件的组件或配置的第一类别;以及作为需要运行那些归档和在应用级别被管理的配置的第二类别。系统或域组件的实例可以与应用组件的若干组实例或分区一起运行,其中特定的分区映射到特定的租户。
[0017] 根据实施例,系统可以支持提供软件即服务(SaaS)或平台即服务(PaaS)能并且需要区分不同租户的方法的多租户用例
[0018] 例如,在SaaS用例中,系统可以利用识别不同租户的租户感知应用使得能够在多个租户之间共享应用服务器基础设施。基于用户的身份,租户感知应用可以确定用户所属于的特定租户,并且使用该信息来访问与那个特定租户相关的资源,诸如特定于租户的数据库连接或JMS队列。
[0019] 作为另一个例子,在PaaS用例中,系统可以使得多个租户能够运行不同的应用,其中在各种租户环境之间几乎没有或没有重叠,并且对于每个特定的租户使得多个租户能够管理其自己的运行时环境的某些方面,诸如为与那个特定租户相关联的那些用户部署应用。
[0020] 作为另一个例子,在可能包括其自己不是租户感知的应用,但是期望简化应用生命周期的企业软件应用环境(诸如Oracle融合应用)的情况下,系统可以支持使用应用安装的单个副本,该应用安装在运行时可以被实现为多个不同的副本。每个副本可以在其自己的分区中运行,并且使用不同的类加载器,从而允许每个副本连接到不同的数据库,或者连接到在相同容器数据库(CDB)中运行的不同便携式数据库(PDB)。
[0021] 根据其它实施例,系统也可以解决传统的用例,使得用户可以以他们以前所具有的类似方式使用应用服务器的多租户版本,并且不需要使用任何其多租户特征。
[0022] 各种其它用例和例子在下面进一步详细描述,为了说明的目的包括多租户WLS应用服务器环境(本文被称为WLS-MT)的实施例。根据其它实施例,类似的功能和特征也可以被提供用于与其它应用服务器、云、本地部署或其它环境一起使用。
[0023] 多租户环境
[0024] 图1示出了根据实施例的、用于在应用服务器、云或其它环境中支持多租户的系统。
[0025] 如在图1中所示,根据实施例,多租户应用服务器环境100,例如使软件应用能够在该环境中被部署和运行的应用服务器或其它组件,可以被配置为包括应用服务器域配置102并根据其来操作,应用服务器域配置102在运行时被使用来定义应用服务器域。
[0026] 根据实施例,应用服务器还可以包括被定义为在运行时使用的一个或多个分区104。每个分区可以与分区标识符(ID)和配置相关联,并且还可以包括一个或多个资源组
124,连同对资源组模板的引用126、和/或其它特定于分区的应用或资源128。
[0027] 根据实施例,附加的资源组、应用和/或资源140也可以在域级别定义,可选地与对资源组模板的引用一起。
[0028] 根据实施例,应用服务器还可以包括被定义为在运行时使用的一个或多个资源组模板160。每个资源组模板可以包括一个或多个应用部署162、164、资源166、168和/或其它可部署应用或资源170。
[0029] 根据实施例,每个资源组可以引用资源组模板。例如,在分区104中示出的资源组124可以引用190资源组模板160。
[0030] 通常,系统管理员可以创建或删除分区,域级别资源组能够从分区、领域和域级别资源组模板被引用。分区管理员通常可以管理其自己分区的各个方面,例如,创建资源组、将应用部署到分区、以及为分区引用特定领域。
[0031] 根据一些实施例,也可以定义租户管理员色来支持租户级别的管理任务,尽管此类任务可以替代地由组件自身来驱动,并且然后映射到对应的系统级别动作或分区级别动作。
[0032] 图2进一步示出了根据实施例的、用于在应用服务器、云或其它环境中支持多租户的系统。
[0033] 如在图2中所示,根据实施例,分区202可以包括,例如,引用资源组模板206的资源组205、虚拟目标/虚拟主机信息207以及PDB信息208。资源组模板210可以包括,例如,多个应用部署A 211和B 212,连同可部署资源,诸如JMS服务器213、JMS系统资源214、SAF代理215、邮件会话组件216和JDBC系统资源217。在图2中示出的分区和资源组模板仅仅作为例子提供,并且根据其它实施例,不同的分区和/或资源组模板元件可以被提供。
[0034] 根据实施例,分区(例如,分区202)可以引用或扩展220特定的资源组模板(例如,资源组模板210)。例如,这种引用使得与特定分区相关联的PDB信息能够与被引用的资源组模板组合使用,以为该分区指示特定于分区的信息230,诸如特定于分区的PDB信息。特定于分区的PDB信息然后可以被应用服务器使用来配置供该分区使用的资源。
[0035] 例如,如在图2中所示,与分区202相关联的特定于分区的PDB信息可以被应用服务器使用,以配置232容器数据库236和适当的PDB 238,以供那个分区使用。
[0036] 类似地,根据实施例,可以使用与特定分区相关联的虚拟目标/虚拟主机信息来定义239特定于分区的虚拟目标/虚拟主机240,以供该分区使用,在示出的例子中然后可以使得该虚拟目标/虚拟主机240能够在baylandurgentcare.com被访问。
[0037] 图3进一步示出了根据实施例的、用于在应用服务器、云或其它环境中支持多租户的系统。
[0038] 根据实施例,例如,可以使用由诸如config.xml文件的配置文件定义的配置来定义分区,包括用于与那个分区相关联的资源组、数据库和/或其它分区属性的元件。值可以利用例如资源组中的属性名称/值对进行每分区指定。资源组可以在域级别进行全局定义,或者可以特定于分区。
[0039] 如在图3中所示,根据实施例,多个分区可以在受管理的服务器/集群242、或可以提供对容器数据库243的访问并且能够经由web层244访问的类似环境中被执行。根据实施例,域可以一般地对应于容器数据库,其中每个分区或租户隐式地与容器数据库的PDB中的一个或多个PDB相关联。
[0040] 根据实施例,该多个分区中的每一个,在这个例子中为分区A 250和分区B 260,可以被配置为包括与那个分区相关联的多个资源。在所示的例子中,分区A可以被配置为包括资源组251,其包含应用A1 252、应用A2 254和JMS A 256,连同与容器数据库中的PDB A 259相关联的数据源A 257,其中该分区能够经由虚拟目标/虚拟主机A 258访问。类似地,在这个例子中,分区B 260可以被配置为包括资源组261,该资源组261包含应用B1 262、应用B2 264和JMS B 266,连同与容器数据库中的PDB B 269相关联的数据源B 267,其中该分区能够经由虚拟目标/虚拟主机B 268访问。
[0041] 虽然若干个以上例子示出了CDB和PDB的使用,但是根据其它实施例,可以支持其它类型的多租户和非多租户数据库,其中,例如,通过使用模式或不同的数据库,可以为每个分区提供特定的配置。
[0042] 租户
[0043] 根据实施例,租户是可以由一个或多个分区和/或一个或多个租户感知应用来表示或者以其它方式与一个或多个分区和/或一个或多个租户感知应用相关联的实体。
[0044] 例如,根据实施例,租户可以表示不同的用户组织,诸如不同的外部公司或者特定企业内的不同部(例如,人力资源和财务部门),其中每个用户组织可以与不同的分区相关联。租户身份(ID)是特定用户在特定时刻与特定租户的关联。例如通过参考用户身份存储库,系统可以从用户身份得出特定用户属于哪个租户。用户身份还使得系统能够强制执行当用户贯穿系统移动时他们被授权去做的那些动作,包括但不限于,用户可能属于哪个租户。
[0045] 根据实施例,系统使得不同租户的管理和运行时能够彼此隔离。例如,租户可以配置其应用的一些行为以及他们可以对其访问的资源。系统可以确保特定的租户不能管理属于另一个租户的产物;并且,在运行时,代表特定租户工作的应用只引用与那个租户相关的资源,而不是与其它租户相关的资源。
[0046] 根据实施例,租户无感知应用是一种不包含显式处理租户的逻辑的应用。无论应用对其响应的何种用户提交请求,应用使用的任何资源都起作用。作为对照,租户感知应用确实包含显式处理租户的逻辑。例如,基于用户的身份,应用可以得到用户所属于的租户,并且使用该信息来访问特定于租户的资源。
[0047] 根据实施例,系统使得用户能够部署被显式写为租户感知的应用,使得应用开发人员可以获得当前租户的租户ID。然后租户感知应用可以使用租户ID来处理使用应用的单个实例的多个租户。
[0048] 例如,根据在下面进一步详细描述的示例性实施例,支持单个医生的办公室或医院的示例租户感知应用“MedRec”可以暴露给两个不同的租户,例如,Bayland紧急护理和Valley健康中心,其中每一个租户能够访问分开的特定于租户的资源,诸如分开的PDB,而无需改变底层应用代码。
[0049] 资源
[0050] 根据实施例,资源是系统资源、应用或可以部署到环境的域的其它资源或对象。例如,根据实施例,资源可以是应用、JMS、JDBC、JavaMail、WLDF、数据源、或其它系统资源或可以部署到服务器、集群或其它应用服务器目标的其它类型对象。
[0051] 分区
[0052] 根据实施例,分区是可以与分区ID和配置相关联的域的运行时片和管理片,并且可以包含应用和/或通过使用资源组和资源组模板引用域范围的资源。
[0053] 通常,系统可以被配置为向租户提供对与那个租户相关联的分区的管理方面和运行时方面的访问。分区可以包含其自己的应用、经由资源组模板引用域范围的应用并且具有其自己的配置。能够分区的实体可以包括如上所述的资源,例如JMS、JDBC、JavaMail、WLDF资源、以及其它组件,诸如JNDI命名空间、网络流量、工作管理器、以及安全策略和领域。
[0054] 根据实施例,分区中的每个资源组可以引用零个或更多个资源组模板,而特定的资源组模板可以从多个分区被引用。每个分区还可以定义用于没有在该分区的资源组所引用的资源组模板中指定的配置数据的属性。这使得分区能够充当在资源组模板中定义的可部署资源到用于在那个分区中使用的特定值的绑定。在一些情况下,分区也可以覆盖由资源组模板指定的某些配置信息。
[0055] 根据实施例,如例如通过配置文件(例如,config.xml)定义的分区配置可以包括多个配置元件,诸如:“分区”,其包含属性和定义该分区的子元件;“资源组”,其包含部署到该分区的应用和资源;“资源组模板”,其包含应用和资源;“jdbc系统资源覆盖”,其包含特定于DB的服务名、用户名和密码;以及“分区属性”,其包含可用于资源组模板中的宏替换的属性键值。
[0056] 用于与MedRec应用一起使用的配置文件的示例性片段在下面示出,其中示出了用于分区的配置文件可以看起来如何,其中资源组模板包含若干个应用部署、JMS服务器、邮件会话、JMS系统资源、JDBC系统资源以及SAF代理。在启动时,系统可以使用由配置文件提供的信息来从资源组模板中针对每个资源生成特定于分区的配置元件:
[0057]
[0058]
[0059]
[0060]
[0061]
[0062] 资源组
[0063] 根据实施例,资源组是可以在域级别或者分区级别来定义并且可以引用资源组模板的、命名的、完全合格的可部署资源集合。在资源组中的资源在这样的情况下被认为完全合格:管理员已提供启动或连接到那些资源所需的所有信息,例如,用于连接到数据源的凭证、或用于Java应用的目标信息。
[0064] 根据实施例,系统管理员可以在域级别声明零或更多个资源组,以及在分区级别声明一个或多个资源组。
[0065] 在域级别,资源组提供方便的方式来将相关的资源分组。系统可以与未分组的资源一样管理在域级别资源组中声明的资源,使得资源可以在系统启动期间被启动,并且在系统关闭期间停止。管理员也可以单独地停止、启动或删除组中的资源,并且可以通过在组上操作隐含地对组中的所有资源起作用。
[0066] 例如,停止资源组停止该组中尚未停止的所有资源;启动资源组启动该组中尚未启动的任何资源;并且删除资源组删除在该组中包含的所有资源。
[0067] 在分区级别,分区管理员可以受限于任何安全限制配置其分区中的一个或多个资源组。例如,在SaaS的用例中,可以定义域级别资源组模板,并且各种分区级别资源组可以参考那些模板。在PaaS的用例中,可以创建不引用模板而代替地表示使其只在那个分区内可用的应用及其相关资源的分区级别资源组。
[0068] 根据实施例,可以使用资源分组来将Java应用和Java应用所使用的资源分组在一起,作为域中不同的管理单元。例如,在MedRec应用中,资源分组可以定义MedRec应用及其资源。尽管多个分区使用一些特定于租户的配置信息,但是该多个分区可以运行相同的MedRec资源组,使得作为每个MedRec应用资源实例的一部分的Java应用特定于每个租户。
[0069] 资源组模板
[0070] 根据实施例,资源组模板是在域级别定义的、可以从资源组被引用的、并且支持分区级别配置的指定的可部署资源的集合。不是所有的配置都需要在域级别指定——分区级别配置可以替代地在资源组模板中通过使用宏来指定,该宏例如属性名称/值对。
[0071] 根据实施例,资源组模板是可部署资源的集合,其中激活资源组模板的资源所需的信息中的至少一些不能存储为模板本身的一部分。关于这些资源的一些信息可能跨所有租户相同,而其它信息可能会随着租户的不同而不同。
[0072] 例如,根据SaaS用例的实施例,系统可以多次激活同一应用和资源,每个将使用该应用和资源的分区一次。当管理员定义资源组模板时,他们可以使用令牌来表示将在别处被提供的信息。例如,结合CRM相关的数据资源使用的用户名可以在资源组模板中被指示为\${CRMDataUsername}。
[0073] 根据实施例,特定的资源组模板可以被零个或更多个资源组引用。包含资源组的对象,例如域或分区,可以使用属性名称/值分配来设置在资源组模板中的任何令牌的值。当系统利用进行引用的资源组激活资源组模板时,它可以用在资源组的包含对象中设置的值替换那些令牌。
[0074] 在一些情况下,系统也可以使用静态配置的资源组模板和分区来生成用于每个分区/模板组合的运行时配置。
[0075] 根据实施例,域可以包含任意数量的资源组模板,其中每个资源组模板可以包括例如一个或多个相关的Java应用以及那些应用所依赖的资源。
[0076] 联网层
[0077] 根据实施例,系统可以包括将传入请求与分区ID相关联的联网层。例如,基于请求URL(例如,虚拟目标/虚拟主机加上可选路径),联网层可以确定用于请求的目标分区,并且将确定的分区ID添加到请求的执行上下文。根据实施例,如果每个分区被配置为使用唯一的虚拟目标/虚拟主机和网络接入点(NAP)组合,则系统可以将特定虚拟目标/虚拟主机上的所有请求映射到对应分区。如果分区作为替代被配置为共享虚拟目标/虚拟主机,则可以为虚拟目标/虚拟主机定义路径,使得系统可以基于虚拟目标/虚拟主机加上配置的路径来确定适当的分区。
[0078] 工作管理器
[0079] 根据实施例,系统可以包括分区感知工作管理器。每个工作管理器可以被配置具有工作负荷的相对优先级,连同确保始终有线程可用于处理工作请求以避免死的最小线程约束,以及限制执行请求的并发线程数量的最大线程约束。可以为每个分区创建特定于分区的工作管理器,以确保每个分区中的应用不超过其用于那个分区的线程资源使用的配置的公平份额。
[0080] 安全领域
[0081] 根据实施例,每个分区可以引用安全领域。领域也可以被多个分区引用。如上所述,当请求进入系统时,系统可以从虚拟目标/虚拟主机确定适当的分区,并且将分区ID存储在请求的执行上下文中。接着,当需要认证或授权工作时,系统可以利用分区ID来确定要使用的适当的领域。
[0082] JNDI
[0083] 根据实施例,分区感知JNDI框架使得应用能够基于每分区绑定命名对象并且检索它们。在启动和部署时间期间,应用服务器容器可以将每个特定于分区的应用与对应的分区ID相关联。JNDI框架然后可以在命名对象的绑定或查找期间利用那个分区ID。特定于分区的对象可以从其它分区隔离,这允许同一应用的不同实例利用相同的JNDI名称注册特定于分区的对象。
[0084] 端到端生命周期管理
[0085] 根据实施例,可以使用提供者来连线运行特定应用所需的基础设施组件,例如Oracle流量引导器(OTD)、数据库、Coherence或JMS组件。
[0086] 例如,在一些实施例中,特定应用的特定于分区的实例可以共享同一数据库实例。资源组模板可以为单一数据库实例引用域级别JDBC系统资源,并且引用那个资源组模板的所有分区然后可以使用该同一数据库实例。
[0087] 根据实施例,应用的若干个特定于分区的实例可以利用公共或兼容模式连接到不同的数据库实例。资源组模板可以声明JDBC系统资源,留下一些配置在配置文件(例如,config.xml)的相应分区部分中来指定。用于数据源的这种分区级别配置的例子可以包括要连接到其的URL和/或用于认证和授权对被引用的数据库实例的访问的用户凭证。
[0088] 根据实施例,数据源实现可以为每个分区创建到容器数据库中分配的PDB的分开的物理连接池,这允许PDB对应用服务器看起来像分开的数据库,并且每个分区的特定凭证要被用来在那个分区的池中为分区建立一个或多个连接。
[0089] 可替代地,系统可以支持跨PDB的连接切换,其中可以为每个分区提供分开的PDB,但是数据源实现共享到拥有该PDB的容器数据库的单个连接池。当应用提交数据请求时,它在分区的上下文中这样做。系统然后可以在执行那个连接的请求之前,使用分区ID将共享连接切换到正确的分区上下文。
[0090] 应用部署和配置
[0091] 根据实施例,应用可以在域级别被部署到资源组模板,或者部署到分区范围内或者域范围内的资源组。应用配置可以利用每应用、每分区指定的部署计划来被覆盖。部署计划也可以被指定为资源组的一部分。一些示例应用部署命令在下面示出。
[0092] 部署到域中的资源组模板:
[0093] java weblogic.Deployer…
[0094] -deploy
[0095] -resource-group-template healthcareresources-template
[0096] -name pharmacy pharmacy-app.ear
[0097] 部署到分区中的资源组:
[0098] java weblogic.Deployer…
[0099] -deploy
[0100] -partition t1
[0101] -resource-group healthcare-resources
[0102] -name pharmacy pharmacy-app.ear
[0103] 部署到具有部署计划的分区中的资源组:
[0104] java weblogic.Deployer…
[0105] -deploy
[0106] -partition t1
[0107] -resource-group healthcare-resources
[0108] –plan pharmacy-plan.xml
[0109] -name pharmacy pharmacyapp.ear
[0110] 图4示出了根据实施例的资源组模板的示例性使用。
[0111] 根据实施例,当系统启动分区时,它根据所提供的配置创建虚拟目标/虚拟主机和到相应数据库实例的连接池,所述连接池包括每个分区一个连接池。
[0112] 通常,每个资源组模板可以包括一个或多个相关Java应用以及那些应用所依赖的资源。如上所述,每个分区可以通过提供将资源组模板中的可部署资源绑定到与分区相关联的特定值,提供在该分区所引用的资源组模板中未指定的任何配置数据;并且,在一些情况下,每个分区可以覆盖由资源组模板指定的某些配置信息。这使得系统能够利用每个分区已定义的属性值为每个分区不同地激活由资源组模板表示的应用。
[0113] 在一些情况下,分区可能包含不引用资源组模板或者直接定义其自己的分区范围可部署资源的自包含资源组。在分区中被定义的应用程序和数据源通常仅对那个分区可用。根据实施例,系统不要求或强制执行任一实践—用户可以在其分区中使用任一类型的资源组,而不管预期的用例。
[0114] 如在图4中所示,例如,MedRec应用可以包括四个Java应用、数据源、JMS服务器和邮件会话。为了为多个租户运行MedRec应用,系统管理员可以为MedRec 286定义单个资源组模板,在该资源组模板中声明那些可部署资源。
[0115] 如上所述,与域级别可部署资源对照,在资源组模板中声明的可部署资源不能完全地在模板中配置。
[0116] 例如,MedRec资源组模板可以声明由Java应用使用的数据源,但是它可以不指定用于连接到数据库的URL。通常,在资源组模板中声明的一些资源不能被原样激活,因为它们缺少一些配置信息。与不同租户相关联的分区,例如,分区BUC-A 290(Bayland紧急护理)和分区VH-293(Valley健康中心)可以引用292、294各种资源组模板,包括引用296MedRec资源组模板的MedRec的资源组295。
[0117] 根据实施例,然后可以使用引用来为每个租户创建302、306虚拟目标/虚拟主机,包括与BUC-A分区相关联、用于被Bayland紧急护理租户使用的虚拟主机baylandurgentcare.com 304;以及与VH-A分区相关联、用于被Valley健康中心租户使用的虚拟主机valleyhealth.com 306。
[0118] 图5示出了根据实施例的示例性多租户环境。
[0119] 如在图5中所示,并且继续上面的例子,其中根据实施例,两个分区引用MedRec资源组模板,可以使用小服务程序或小服务程序引擎310来支持多个租户环境,在这个例子中为Bayland紧急护理医师环境320和Valley健康中心医师环境330。
[0120] 根据实施例,每个分区可以定义在其上接受传入流量的不同虚拟目标/虚拟主机、以及用于连接到其数据源的不同URL 322、332,在这个例子中,数据源分别是bayland紧急护理数据库324,或者是valley健康中心数据库334。这两个数据库实例可以具有兼容的模式,因为相同的应用代码将针对两个数据库执行。当系统启动分区时,它可以创建虚拟目标/虚拟主机和到其相应数据库实例的连接池,该连接池包括每个分区一个连接池。
[0121] 根据实施例,选择哪些用户可以管理分区与期望哪个一般用例紧密相关。例如,在SaaS的用例中,应用服务器系统管理员可以管理所有分区及其资源实例;而在PaaS的用例中,每个分区管理员可以管理其相应的分区以及其中的资源。
[0122] 图6示出了根据实施例的、支持分区不感知组件和分区感知组件的系统。
[0123] 如在图6中所示,根据实施例,环境可以包括物理计算机资源,例如,CPU、物理存储器和网络组件340、多租户应用服务器(例如,WLS-MT)分区实现342、以及一个或多个分区不感知应用服务器组件344、和/或分区感知应用服务器组件。例如Java的传统的应用350可以只包括分区不感知组件,在这个例子中为小服务程序容器组件352和EJB容器组件354。分区感知Java应用360可以既包括分区不感知组件,又包括分区感知元件,在这个实施例中分区感知元件包括JNDI 362、配置364、安全366、联网368、数据370、应用容器372或诊断374组件。
[0124] 分区标识符
[0125] 根据实施例,系统包括对分区标识符(ID)的支持,它可以用来允许系统的分区感知的任何部分检测它正代表哪个分区工作(即“当前”分区)。根据实施例,分区标识符变为执行上下文的一部分,使得需要分区ID的任何组件可以利用适当的API获得该分区ID。根据实施例,代表分区工作并且将工作分派到另一个线程的任何组件必须将分区ID传播到新线程。
[0126] 图7示出了根据实施例的、由多个租户对应用服务器、云或其它环境中的分区的访问。
[0127] 如在图7中所示,根据实施例,分区可以如上所述进行配置,包括分区A 380、B 382和N 384。
[0128] 例如,分区A可以包括资源组A 386,连同对资源组模板A 390的引用387,和/或其它特定于分区的应用或资源388。其它分区可以类似地适当包括对一个或多个资源组模板的引用402、404、406、408,该一个或多个资源组模板诸如资源组模板B 394。与不同分区相关联的租户,在这个例子中包括租户A 410、B 412和N 414,可以访问420、422、424其自己的分区以及其中的应用实例和资源。
[0129] 根据实施例,当请求通过http/https、T3或其它协议到达时,联网子系统可以将分区ID与执行上下文相关联。例如,分区可以被配置为使用特定的虚拟目标/虚拟主机。联网子系统可以识别该关联,并且使用它来将经由那个虚拟目标/虚拟主机到达的请求与那个分区相关联,这使得系统能够在启动期间创建资源的所需的特定于分区的实例,并且能够在整个处理过程中在正确的特定于分区的实例上操作。
[0130] 根据实施例,系统可以如上所述使用类似的功能,以支持应用服务器、云或其它环境内数千或上百万的租户,其中每个租户都可以与他们自己的分区及其特定的配置以及应用服务器实例相关联。
[0131] 通道
[0132] 根据实施例,系统可以包括对通道的支持,包括使用PartitionValidatorService,当给定某些键时,该PartitionValidatorService返回分区ID。例如,服务器可以利用RJVM和配置的通道进行通信。根据实施例,系统可以提供一个通道用于被所有分区使用,并且向每个分区提供其自己专用的例如T3连接。这减少了为每个分区创建通道的需要,因为所有分区可以共享同一端口。
[0133] 可替代地,根据实施例,如果配置了多个通道,则可以使用通道选择方法。例如,所有租户流量可以具有与租户流量相关联的通道名称,并且当分区ID不可用时,可以使用默认通道。如果没有指定分区和通道,则可以使用默认的通道。如果没有指定分区,但是指定了通道,则系统可以使用指定的通道。如果指定了分区,但是没有指定通道,则可以使用分区ID来确定合适的通道。如果分区和通道两者都被指定,则通道名称可以优先。
[0134] 根据实施例,当在客户端与服务器之间提供通信时,客户端可以做出初始请求,服务器可以响应,并且客户端被认证和验证。计算出的分区然后可以在线程本地上被设置,用于后续使用。在服务器侧,DNS名称以及任何客户端提供的凭证可以提供给PartitionValidatorService,以获取分区ID。一旦获得有效的分区ID,它就可以被设置在执行线程的线程本地上,从而所有后续操作都在相关联租户的范围内执行。
[0135] 根据实施例,客户端可以提供(例如,t3://:形式的)PROVIDER_URL,以查找初始上下文,并且找出连接到其对等的通道。RJVM层可以维护分区ID加通道到开放连接的映射,以找到用于特定的PROVIDER_URL的适当连接。假设分区ID可在线程上得到,则RJVM层可以找到与租户相关联的现有连接来服务请求,或者可替代地创建新的连接。
[0136] 支持多租户的方法
[0137] 图8示出了根据实施例的、在应用服务器、云或其它环境中支持多租户的方法。
[0138] 如在图8中所示,根据实施例,在步骤432,提供包括应用服务器或云环境的一个或多个计算机,连同用于执行软件应用的域,以及可以被部署到域的一个或多个资源。
[0139] 在步骤433,提供一个或多个资源组模板,其中每个资源组模板是在域级别定义的、可以从资源组引用的可部署资源集合。
[0140] 在步骤434,提供一个或多个资源组,其中每个资源组是可以引用资源组模板的、命名的、完全合格的可部署资源集合。
[0141] 在步骤436,提供一个或多个分区,其中每个分区提供域的管理和运行时细分并且可以包括资源组,并且可以引用资源组模板。
[0142] 在步骤437,特定的资源组模板从一个或多个分区中的资源组被引用,使得进行引用的分区提供用于与该分区所引用的资源组模板一起使用的配置数据(但以其它方式不由资源组模板提供),以将被引用的资源组模板的可部署资源绑定到特定于分区的值,以供进行引用的分区使用。
[0143] 在步骤438,应用服务器或云环境的特定租户与供租户使用的分区相关联。
[0144] 分区模板
[0145] 根据实施例,系统包括对分区模板的支持。可以实现单个分区类型,使得分区类型的所有实例共享相同的硬件资源并且所有应用资源都利用同一组基础设施组件得以满足。可替代地,不同的分区类型可以定义不同的服务质量特征。
[0146] 例如,可以使用“金”或“产品”分区的实例来针对比“”或“开发”分区更好的硬件,或者相对于与其它类型分区相关联的它们的相对物,提供更高的性能或其它优势。
[0147] 将分区与各种服务质量等级相关联的能力有益于租户感知应用和非租户感知应用两者,因为它们两者都受底层硬件和提供者实例的特征的影响。在单个分区实例内,用于多个已部署的应用的服务质量可以通过控制工作管理器线程约束来调整,从而允许被部署到分区的一个应用比被部署到同一分区的其它应用更好地执行。系统管理员可以关联配额来控制分区的实例;例如将“金”分区的实例限定为只有几个,而允许有大量的“铜”分区。
[0148] 便携式分区
[0149] 根据实施例,系统包括对便携式分区的支持。分区可以被导出到分区归档,该分区归档包含分区配置、资源组、和资源组模板、以及可选地包括应用二进制文件和部署计划,但没有应用运行时状态也没有特定于应用的运行时配置。这使得分区能够例如利用PartitionMBean上的导入和导出操作从第一、源域导出并且导入到第二、目标域。
[0150] 特定于域的依赖性可能需要在导入之后被更新,例如,目标集群、安全领域和虚拟主机,对于这些,外部连接可能需要被解析并且重新布线,无论通过使在域中已被配置的元素使用相同的名称,还是通过在将它导入到目标域之后更新分区。这提供了对诸如T2P的过程的更精细粒度的控制,因为取代迁移全部域,单个分区可以被迁移,而无需任一个域关闭或重启。
[0151] 在导入分区之后,系统管理员可能需要进一步更新分区配置,以使它有效,例如通过更新分区属性;PDB信息或分区资源组中的其它资源。当将分区归档导入到目标域时,有可能共享资源组模板可能已存在于目标域中。在这种情况下,导入操作可以检测现有资源组模板是否与归档中所包含的那个资源组模板相同;如果是,则现有资源组模板将被使用,否则导入将失败,并且需要用户重试指示哪个资源组模板应该被使用的导入。
[0152] 分区迁移
[0153] 根据实施例,系统包括对分区迁移的支持。例如,每个分区可以在应用服务器的集群上被创建。分区可以由于各种原因从一个集群迁移到另一个集群,例如,分区到该分区所依赖的其它资源(诸如数据库)的亲和性/去亲和性;或者为了当底层运行时需要维护时防止分区的停用时间。
[0154] 分区感知REST管理API
[0155] 根据实施例,系统包括对分区感知REST管理API的支持。REST API可以包括用于多租户配置和管理的资源,包括从bean接口和注释生成REST资源。REST API的其它特征可以包括基于角色的可见性(例如,谁可以看到什么信息);安全性(例如,谁可以改变什么配置);与JMX共享的基础设施;以及提供客户端对分区身份的可见性的方法。使用http/https协议意味着访问可以利用标准防火墙和前端主机配置来启用和控制,这在其中特定的分区管理员可能被允许只访问由应用服务器域支持的端口和通道的窄片段的多租户环境中是有用的。管理REST资源的可见性可以被限制到适于分区管理员的那些,使得利用这些REST API的服务器配置可以被限制到在那个分区范围的配置资源。
[0156] 分区感知诊断、记录和监测
[0157] 根据实施例,系统包括对分区感知诊断、记录和监测的支持,例如通过使用分区范围的度量收集;分区范围的WebLogic诊断框架(WLDF)监视规则和通知;分区感知诊断的图像转储;以及分区范围的记录。
[0158] 分区感知诊断的图像捕获可以由分区管理员或者分区范围的WLDF系统资源中的监视规则发起。系统可以呈现诊断信息的已过滤视图,使得分区级别管理员可以监测系统中他们的部分,而不能看到与其它分区相关联的信息。
[0159] 根据实施例,每个分区相关的日志记录可以利用相关的分区ID进行标记。当分区管理员使用日志查看器时,系统可以过滤要被显示的条目,只暴露观看管理员被授权查看的那些日志记录。
[0160] 根据实施例,为了支持监测,系统可以创建与系统已代表每个分区启动的特定于分区的资源对应的特定于分区的运行时MBean。如与记录一样,利用基于例如与请求访问的管理员的分区ID相比较的资源的分区ID的安全控制,对分区管理员可见的数据可以限制于来自那个管理员的分区的数据。
[0161] 分区感知
[0162] 根据实施例,系统包括对分区感知标记的支持。标记提供了将人类可读名称分配给资源的通用机制。根据实施例,标签可以被应用到资源或一组资源,以提供灵活的方式来选择资源,诸如提供者运行时。
[0163] 分区感知编辑会话
[0164] 根据实施例,系统包括对分区感知编辑会话的支持。例如,可以为每个分区提供编辑会话。分区管理员可以在特定于分区的编辑会话中改变任何分区相关的配置。
[0165] 配置和运行时MBean
[0166] 根据实施例,系统支持使用JMX和受管理的bean(MBeans)用于配置和运行时监测两者。
[0167] 例如,根据实施例,可以提供配置Mbean的层次结构,以匹配配置文件(例如,config.xml)中的配置元件,包括用于以及嵌套资源元件的适当的MBeans。示例性配置MBean层次结构可以是:
[0168]
[0169]
[0170] 根据实施例,每个分区元件可以利用MBean API来定义。根据其它实施例,其它Mbean和MBean API可以被提供。
[0171] 根据实施例,也可以提供运行时Mbean的层次结构,包括作为根节点的ServerRuntimeMBean,其包含运行时Mbean,用于应用服务器,例如集群、服务器通道、JTA和应用资源。可以提供特定于分区的分支;例如,JMSRuntimeMBean可以包含用于JMSConnectionRuntimeMBean、JMSServerRuntimeMBean和JMSPooledConnectionRuntimeMBean的特定于分区的子MBean:
[0172]
[0173]
[0174] 根据实施例,用于特定于分区的资源的运行时MBean也可以在特定于分区的层次结构而不是在ServerRuntime MBean级别的全局层次结构中被提供,这允许特定于分区的监测和统计。PartitionRuntimeMBean可以包含用于子系统的特定于组件的MBean,诸如JMS、JDBC、部署(Deployment)、WLDF、相干性(Coherence)和连接器(Connectors)。
[0175] 示例配置-SaaS用例
[0176] 用于MedRec应用例子的示例性配置文件(例如,config.xml)在下面提供,其中包括具有多个应用和资源的资源组模板,以及具有两个分区——在这个例子中,一个分区用于BayLand紧急护理,并且另一个用于Valley健康中心。每个分区定义从模板继承应用和资源的资源组,并且还包含特定于那个分区的PDB信息。
[0177]
[0178]
[0179]
[0180]
[0181] 示例配置-PaaS用例
[0182] 另一个示例性配置文件(例如,config.xml)在下面提供,在这个例子中,示出了用于具有特定于分区的应用和资源的资源组元件的配置。在这个例子中,两个分区被配置,包括一个分区用于人力资源部门,另一个用于财务部门。每个分区定义资源组,该资源组定义特定于那个分区的应用。在这个例子中,没有指定资源组模板,因为在这个用例中,没有在分区之间共享的多租户应用。
[0183]
[0184]
[0185] 根据实施例,配置可以利用部署计划进行覆盖。下面提供了示例配置,它示出了用于MedRec应用的对资源组模板的配置,包括对部署计划文件名元件的覆盖。在这个例子中,再一次,存在两个分区,一个用于BayLand紧急护理,另一个用于Valley健康中心,其中每一个分区定义覆盖资源组模板部署计划的应用。
[0186]
[0187]
[0188] 本发明可以利用一个或多个常规的通用或专用数字计算机、计算设备、机器或微处理器来方便地实现,该数字计算机、计算设备、机器或微处理器包括根据本公开内容示教编程的一个或多个处理器、存储器和/或计算机可读存储介质。适当的软件编码可以容易地由本领域技术人员基于本公开内容的示教来准备,如对软件领域的技术人员来说将是清楚的那样。
[0189] 在一些实施例中,本发明包括计算机程序产品,该计算机程序产品是其上/其中存储了指令的非瞬时性存储介质或计算机可读介质(多种介质),指令可以被用来对计算机进行编程,以执行本发明的任何处理。存储介质可以包括但不限于,任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微驱动器及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或者适于存储指令和/或数据的任何类型的介质或设备。
[0190] 本发明的前面描述是为了说明和描述而提供的。它不是穷尽的或者要将本发明限制到所公开的精确形式。许多修改和变化将对本领域技术人员而言是清楚的。
[0191] 例如,虽然为了说明起见,上述许多实施例描述了在WebLogic服务器(WLS)、多租户WLS(WLS-MT)或融合应用环境中使用多租户,但是类似的功能和特征可以与其它应用服务器、企业应用、云或其它环境一起使用。
[0192] 选择和描述实施例是为了最好地解释本发明的原理及其实际应用,由此使本领域其他技术人员能够理解本发明的各种实施例并且具有适于构想的特定用途的各种修改。本发明的范围要由以下权利要求及其等价物来限定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈