CN107533485B - 用于对从多租户中间件应用调用的os程序进行多租户执行的系统和方法 - Google Patents

用于对从多租户中间件应用调用的os程序进行多租户执行的系统和方法 Download PDF

Info

Publication number
CN107533485B
CN107533485B CN201680024093.9A CN201680024093A CN107533485B CN 107533485 B CN107533485 B CN 107533485B CN 201680024093 A CN201680024093 A CN 201680024093A CN 107533485 B CN107533485 B CN 107533485B
Authority
CN
China
Prior art keywords
tenant
aware
calling
application
partition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680024093.9A
Other languages
English (en)
Other versions
CN107533485A (zh
Inventor
V·K·南俊达斯瓦米
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/059,193 external-priority patent/US9811386B2/en
Priority claimed from US15/059,872 external-priority patent/US9819609B2/en
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN107533485A publication Critical patent/CN107533485A/zh
Application granted granted Critical
Publication of CN107533485B publication Critical patent/CN107533485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

根据实施例,本文所描述的是用于支持对从多租户中间件应用调用的非租户感知程序的多租户执行的系统和方法。示例性方法可以提供多个分区和多个租户感知程序,其中多个租户感知程序中的每一个租户感知程序与分区相关联。该方法可以将多个分区和多个租户感知程序中的每一个与多个租户中的租户相关联。该方法可以从多个分区中的召用分区调用非租户感知进程,该召用分区与多个租户中的召用租户相关联。该方法可以收集关于召用租户的租赁信息。并且,基于所收集的租赁信息,该方法可以通过建立进程执行环境和资源来将非租户感知进程的执行的范围限定到召用租户。

Description

用于对从多租户中间件应用调用的OS程序进行多租户执行的 系统和方法
版权声明
本专利文档的公开内容的一部分包含受版权保护的材料。版权所有者不反对任何人如专利商标局专利文件或记录中所出现的那样对专利文档或专利公开内容进行传真复制,但以其他方式保留所有版权。
技术领域
本发明的实施例一般而言涉及应用服务器和云环境,并且具体而言涉及用于支持从多租户中间件平台调用的应用的系统和方法。
背景技术
软件应用服务器(其示例包括Oracle WebLogic Server(WLS)和Glassfish)一般为运行企业软件应用提供受管理的环境。最近,还已经开发出了用于在云环境中使用的技术,这些技术允许用户或租户在云环境内开发和运行他们的应用,并利用由环境提供的分布式资源。
发明内容
根据实施例,本文所描述的是用于支持对从多租户中间件应用调用的非租户感知程序进行多租户执行的系统和方法。示例性方法可以提供多个分区和多个租户感知的程序,其中多个租户感知的程序中的每一个与分区相关联。该方法可以将多个分区和多个租户感知程序中的每一个与多个租户中的租户相关联。该方法可以从多个分区中的召用分区来调用非租户感知进程,该召用分区与多个租户中的召用租户相关联。该方法可以收集关于召用租户的租赁信息。并且,基于所收集的租赁信息,该方法可以通过建立进程执行环境和资源来将非租户感知进程的执行的范围限定到召用租户。
根据实施例,使用容器化的应用,范围被限定的执行可以支持非租户感知进程与多租户中间件环境的其他租户的运行时隔离,从而导致对OS应用程序的多租户操作。
附图说明
图1图示了根据实施例的用于在应用服务器、云或其它环境中支持多租赁的系统。
图2进一步图示了根据实施例的用于在应用服务器、云或其它环境中支持多租赁的系统。
图3进一步图示了根据实施例的用于在应用服务器、云或其它环境中支持多租赁的系统。
图4图示了根据实施例的用于与示例性多租户环境一起使用的域配置。
图5进一步图示了根据实施例的示例性多租户环境。
图6图示了根据实施例的用于对非租户感知进程进行租户范围被限定的执行(tenant scoped execution)的系统。
图7图示了根据实施例的用于对非租户感知进程进行租户范围被限定的执行的系统。
图8图示了根据实施例的用于对非租户感知进程进行租户范围被限定的执行的系统。
图9是根据实施例的用于为对非租户感知进程进行租户范围被限定的执行创建环境和资源的示例性方法的流程图。
图10是根据实施例的用于创建和配置进程构建器的示例性方法的流程图。
图11是根据实施例的用于从MT中间件应用(例如,JEE应用)对非租户感知OS应用进行多租户执行的示例性方法的流程图。
图12是用于支持对从多租户中间件应用调用的非租户感知进程进行租户范围被限定的执行的示例性方法的流程图。
具体实施方式
根据实施例,本文所描述的是用于支持对从多租户中间件应用调用的非租户感知(在本文中也不一样地称为“非租户感知”)进程的租户范围被限定的执行(在本文中也不一样地称为“多租户执行”)的系统和方法。示例性方法可以提供多个分区以及多个租户感知(在本文中也不一样地称为“租户感知的”)程序,其中多个租户感知程序中的每一个与分区相关联。该方法可以将多个分区和多个租户感知程序中的每一个与多个租户中的租户相关联。该方法可以从多个分区中的召用分区来调用非租户感知进程,该召用分区与多个租户中的召用租户相关联。该方法可以收集关于召用租户的租赁信息。并且,基于所收集的租赁信息,该方法可以通过建立进程执行环境和资源来将非租户感知进程的执行的范围限定到该召用租户。
根据实施例,通过使用本文所描述的系统和方法,包括作为操作系统上的本地程序/进程运行的非Java组件的租户感知JEE应用(例如,SaaS应用)可以以租户范围被限定的的方式进行操作,从而使完整的应用(端到端)是多租户感知的并且是隔离的。即,在多租户应用服务器环境内提供的多租赁支持可以在本地OS上的MT应用服务器环境之外被支持,而不限于在MT应用服务器环境(例如,WebLogic MT)内运行的组件/程序。
应用服务器(例如,多租户(MT))环境
图1图示了根据实施例的用于在应用服务器、云或其它环境中支持多租赁的系统。
如图1中所示,根据实施例,启用软件应用的部署和执行的应用服务器(例如,多租户(MT))环境100或其它计算环境可以被配置为包括域102并且根据域102配置来操作,其中域102配置在运行时被用来定义应用服务器域。
根据实施例,应用服务器可以包括被定义用于在运行时使用的一个或多个分区104。每个分区可以与全局唯一的分区标识符(ID)和分区配置相关联,并且还可以包括一个或多个资源组124,连同对资源组模板126的引用和/或特定于分区的应用或资源128。域级别资源组、应用和/或资源140也可以在域级别被定义,其可选地具有对资源组模板的引用。
每个资源组模板160可以定义一个或多个应用A 162、应用B 164、资源A 166、资源B 168和/或其它可部署的应用或资源170,并且可以被资源组引用。例如,如图1中所示,分区104中的资源组124可以引用190资源组模板160。
一般而言,系统管理员可以定义分区、域级别资源组和资源组模板以及安全领域;而分区管理员可以例如通过创建分区级别资源组、将应用部署到分区或者为分区引用具体的领域来定义其自己的分区的各方面。
图2进一步图示了根据实施例的用于在应用服务器、云或其它环境中支持多租赁的系统。
如图2中所示,根据实施例,分区202可以包括例如资源组205、虚拟目标(例如,虚拟主机)信息207以及可插拔数据库(PDB)信息208,资源组205包括对资源组模板210的引用206。资源组模板(例如,210)可以定义例如多个应用A 211和B 212,连同诸如Java消息服务器(JMS)服务器213、存储转发(SAF)代理215、邮件会话组件216或Java数据库连接(JDBC)资源217之类的资源。
图2中所示的资源组模板是以示例方式提供的;根据其它实施例,可以提供不同类型的资源组模板和元件。
根据实施例,当分区(例如,202)内的资源组引用220特定的资源组模板(例如,210)时,与特定分区相关联的信息可以与所引用的资源组模板结合使用,以指示特定于分区的信息230,例如特定于分区的PDB信息。然后,特定于分区的信息可以被应用服务器用来配置资源(例如PDB资源)以供该分区使用。例如,与分区202相关联的特定于分区的PDB信息可以被应用服务器用来利用适当的PDB 238配置232容器数据库(CDB)236,以供该分区使用。
类似地,根据实施例,与特定分区相关联的虚拟目标信息可以被用来定义239特定于分区的虚拟目标240(例如,baylandurgentcare.com)以供该分区使用,然后可以使其经由统一资源定位符(URL)(例如,http://baylandurgentcare.com)可访问。
图3进一步图示了根据实施例的用于在应用服务器、云或其它环境中支持多租赁的系统。
根据实施例,系统配置(诸如config.xml配置文件)被用来定义分区,该系统配置包括用于与该分区相关联的资源组的配置元素和/或其它分区属性。可以使用属性名/值对为每个分区指定值。
根据实施例,多个分区可以在受管理的服务器/集群242或者可以提供对CDB 243的访问并可经由web层244访问的类似环境内执行。这允许例如域或分区与(CDB的)PDB中的一个或多个PDB相关联。
根据实施例,多个分区中的每个分区(在此示例中是分区A 250和分区B 260)可以被配置为包括与该分区相关联的多个资源。例如,分区A可以被配置为包括资源组251,资源组251包含应用A1 252、应用A2 254和JMS A 256,连同与PDB A 259相关联的数据源A257,其中该分区可经由虚拟目标A 258访问。类似地,分区B 260可以被配置为包括资源组261,资源组261包含应用B1 262、应用B2 264和JMS B 266,连同与PDB B 269相关联的数据源B267,其中该分区可经由虚拟目标B 268访问。
虽然上面的几个示例示出了对CDB和PDB的使用,但是根据其它实施例,可以支持其它类型的多租户数据库或非多租户数据库,其中可以例如通过模式的使用或不同数据库的使用来为每个分区提供特定的配置。
资源
根据实施例,资源是可以被部署到环境的域的系统资源、应用或者其它资源或对象。例如,根据实施例,资源可以是可被部署到服务器、集群或其它应用服务器目标的应用、JMS、JDBC、JavaMail、WLDF、数据源或者其它系统资源或其它类型的对象。
分区
根据实施例,分区是域的运行时和管理性的细分或切片,分区可以与分区标识符(ID)和配置相关联,并且可以包含应用和/或通过资源组和资源组模板的使用来参考域范围的资源。
一般而言,分区可以包含它自己的应用、经由资源组模板参考域范围的应用,并且具有它自己的配置。可分区的实体可以包括资源(例如JMS、JDBC、JavaMail、WLDF资源),以及其它组件(诸如JNDI命名空间、网络流量、工作管理器以及安全策略和领域)。在多租户环境的上下文(context)中,系统可以被配置为向租户提供对与租户相关联的分区的管理性和运行时方面的访问。
根据实施例,分区内的每个资源组可以可选地引用资源组模板。分区可以具有多个资源组,并且这些资源组中的每一个可以引用资源组模板。每个分区可以定义用于在该分区的资源组所参考的资源组模板中未指定的配置数据的属性。这使得分区能够充当在资源组模板中定义的可部署资源到用于与该分区一起使用的具体值的绑定(binding)。在一些情况下,分区可以覆盖(override)由资源组模板指定的配置信息。
根据实施例,例如由config.xml配置文件定义的分区配置可以包括多个配置元素,例如:“partition(分区)”,其包含定义分区的特性和子元素;“resource-group(资源组)”,其包含部署到分区的应用和资源;“resource-group-template(资源组模板)”,其包含由该模板定义的应用和资源;“jdbc-system-resource-override(JDBC系统资源覆盖)”,其包含特定于数据库的服务名称、用户名和密码;及“partition-properties(分区属性)”,其包含可用于资源组模板中的宏替换的属性键值。
在启动时,系统可以根据资源组模板使用由配置文件提供的信息为每个资源生成特定于分区的配置元素。
资源组
根据实施例,资源组是可部署资源的经命名的完全合格的汇集,资源组可以在域级别或分区级别定义,并且可以引用资源组模板。资源组中的资源被认为是完全合格的,因为管理员已经提供了起动或连接到这些资源所需的所有信息(例如用于连接到数据源的凭据或者应用的目标信息)。
系统管理员可以在域级别或者在分区级别声明资源组。在域级别,资源组提供了一种方便的方式来对相关资源进行分组。系统可以以与未分组的资源相同的方式来管理在域级别资源组中声明的资源,使得这些资源可以在系统启动期间被起动,并在系统关闭期间被停止。管理员还可以单独地停止、起动或删除组中的资源,并且可以通过对组进行操作来隐式地作用于组中的所有资源。例如,停止资源组停止该组中尚未停止的所有资源;起动资源组起动该组中尚未起动的任何资源;以及移除资源组移除该组中包含的所有资源。
在分区级别,受任何安全限制,系统或分区管理员可以配置分区中的零个或多个资源组。例如,在SaaS用例中,各种分区级别资源组可以参考域级别资源组模板;而在PaaS用例中,可以创建分区级别资源组,该分区级别资源组不参考资源组模板,而是表示被置为仅在该分区内可用的应用及其相关资源。
根据实施例,对资源进行分组可以被用来将应用和它们使用的资源分组在一起,作为域内的不同管理性单元。例如,在下面描述的医疗记录(MedRec)应用中,对资源进行分组定义了MedRec应用及其资源。多个分区可以运行同一MedRec资源组,每个分区使用特定于分区的配置信息,使得作为每个MedRec实例的一部分的应用是特定于每个分区的。
资源组模板
根据实施例,资源组模板是在域级别定义的可部署资源的汇集,可以从资源组引用资源组模板,并且激活其资源所需的一些信息可以不被存储为模板本身的一部分,使得它支持对分区级别配置的指定。域可以包含任何数量的资源组模板,每个资源组模板可以包括例如一个或多个相关的Java应用和这些应用所依赖的资源。关于此类资源的一些信息可以跨所有分区是相同的,而其它信息可以因分区而异。并非所有配置都需要在域级别指定——代替地,可以通过宏或属性名/值对的使用在资源组模板中指定分区级别配置。
根据实施例,特定的资源组模板可以被一个或多个资源组引用。一般而言,在任何给定的分区内,资源组模板可以一次被一个资源组引用(即,不被同一分区内的多个资源组同时引用);但是,它可以被不同分区中的另一资源组同时引用。包含资源组的对象(例如,域或分区)可以使用属性名/值分配来设置资源组模板中任何标记(token)的值。当系统使用进行引用的资源组来激活资源组模板时,它可以使用在资源组的包含对象中所设置的值来替换这些标记。在一些情况下,系统还可以使用静态配置的资源组模板和分区来为每个分区/模板组合生成运行时配置。
例如,在SaaS用例中,系统可以多次激活相同的应用和资源,这包括为将使用它们的每个分区激活一次。当管理员定义资源组模板时,他们可以使用标记来表示将在其它地方提供的信息。例如,在连接到CRM相关的数据资源时使用的用户名可以在资源组模板中被指示为\${CRMDataUsername}。
租户
根据实施例,在多租户环境(诸如多租户(MT)应用服务器环境)中,租户是可以由一个或多个分区和/或一个或多个租户感知应用表示或以其它方式与其相关联的实体。
例如,租户可以表示不同的用户组织(诸如不同的外部公司或特定企业内的不同部门(例如,HR和财务部门)),每个租户可以与不同的分区相关联。租户全局唯一身份(租户ID)是特定用户在特定时刻与特定租户的关联性。系统可以例如通过参考用户身份存储库而从用户身份推导出特定用户属于哪个租户。用户身份使系统能够实施用户被授权执行的那些动作,包括但不限于用户可以属于哪个租户。
根据实施例,系统使得能够将不同租户的管理和运行时彼此隔离。例如,租户可以配置他们的应用的一些行为,以及它们可以访问的资源。系统可以确保特定租户不能管理属于另一租户的工件(artifact);并且,在运行时,代表特定租户工作的应用仅参考与该租户相关联的资源,而不参考与其他租户相关联的资源。
根据实施例,非租户感知应用是不包含显式地应对租户的逻辑的应用,这使得该应用使用的任何资源都可以是可访问的,而不管是哪个用户提交了该应用正在对其进行响应的请求。相比之下,租户感知的应用包括显式地应对租户的逻辑。例如,基于用户的身份,应用可以推导出用户所属的租户并且使用该信息来访问特定于租户的资源。
根据实施例,系统使得用户能够部署被显式地写为租户感知的应用,使得应用开发者可以获得当前租户的租户ID。然后,租户感知的应用可以使用租户ID来处置正在使用应用的单个实例的多个租户。
例如,支持单个医生的办公室或医院的MedRec应用可以被暴露于两个不同的分区或租户(例如湾区紧急护理(Bayland Urgent Care)租户和溪谷健康(Valley Health)租户),每个租户能够访问单独的特定于租户的资源(诸如单独的PDB)而无需改变底层应用代码。
示例性域配置和多租户环境
根据实施例,应用可以被部署到域级别的资源组模板,或者被部署到范围限定到分区或范围限定到域的资源组。可以使用为每个应用或每个分区指定的部署计划来覆盖应用配置。
图4图示了根据实施例的用于与示例性多租户环境一起使用的域配置。
根据实施例,当系统起动分区时,它根据所提供的配置创建虚拟目标(例如,虚拟主机)和到相应的数据库实例连接池,包括每个分区一个连接池。
通常,每个资源组模板可以包括一个或多个相关的应用和这些应用所依赖的资源。通过提供资源组模板中可部署的资源到与分区相关联的具体值的绑定,每个分区可以提供未在它所参考的资源组模板中指定的配置数据;在一些情况下,这包括覆盖由资源组模板指定的某些配置信息。这使得系统能够使用每个分区已经定义的属性值为每个分区不同地激活由资源组模板表示的应用。
在一些实例中,分区可以包含不参考资源组模板或直接定义它们自己的分区范围限定的可部署资源的资源组。在分区内定义的应用和数据源一般仅可用于该分区。资源可以被部署成使得可以使用分区:<分区名称>/<资源JNDI名称>或域:<资源JNDI名称>来跨多个分区对它们进行访问。
例如,MedRec应用可以包括多个Java应用、数据源、JMS服务器和邮件会话。为了为多个租户运行MedRec应用,系统管理员可以定义单个MedRec资源组模板286,从而在该模板中声明那些可部署的资源。
与域级别的可部署资源相比,在资源组模板中声明的可部署资源可能未在模板中完全配置,或者不能按原样被激活,因为它们缺少一些配置信息。
例如,MedRec资源组模板可以声明由应用使用的数据源,但它可以不指定用于连接到数据库的URL。与不同租户相关联的分区(例如分区BUC-A 290(湾区紧急护理,BUC)和分区VH-A 292(溪谷健康,VH))可以通过各自包括引用296、297MedRec资源组模板的MedRec资源组293、294来引用一个或多个资源组模板。然后,该引用可以被用来创建302、306用于每个租户的虚拟目标/虚拟主机,包括供湾区紧急护理租户使用的与BUC-A分区相关联的虚拟主机baylandurgentcare.com以及供溪谷健康租户使用的与VH-A分区相关联的虚拟主机valleyhealth.com 308。
图5进一步示出了根据实施例的示例性多租户环境。如图5中所示,并且继续来自上面的示例(其中两个分区引用MedRec资源组模板),根据实施例,伺服小程序(servlet)引擎310可被用来支持多个租户环境,在此示例中是湾区紧急护理医师(Bayland UrgentCare Physician)租户环境320和溪谷健康医师(Valley Health Physician)租户环境330。
根据实施例,每个分区321、331可以定义在其上接收针对该租户环境的传入流量的不同虚拟目标,以及用于连接到该分区及其资源324、334(在此示例中分别包括湾区紧急护理数据库或溪谷健康数据库)的不同URL 322、332。数据库实例可以使用兼容模式,因为相同的应用代码将对这两个数据库都执行。当系统起动分区时,它可以创建虚拟目标和到相应数据库实例的连接池。
对OS程序的租户范围被限定的执行
根据实施例,本文所描述的方法和系统可以支持对OS(即,非租户感知)程序、应用和进程(此后不同地称为“OS程序”、“OS应用”、“OS进程”、“非租户感知程序”、“非租户感知应用”和“非租户感知进程”)的租户范围被限定的执行。
通常,当应用在MT环境内执行时,应用是租户范围被限定的(tenant-scoped),这意味着由租户感知程序访问的库和资源与MT环境中的例如其它租户隔离。
但是,当在MT环境中操作的租户感知程序调用在本地OS上操作的非租户感知应用(例如,C、C++、Perl等)时,会出现问题,因为在OS上操作的这些程序之间少有或没有隔离。即,通用操作系统没有租赁的概念,并且不知道与MT应用(即,JEE应用)相关联的租赁(即,与来自MT应用的始发调用相关联的租赁信息)。这可以导致OS程序在公共环境中被执行并且使用共享的OS资源(例如,文件、进程、数据库),当不同的租户应用调用外部OS应用(例如,非租户感知应用)时,这继而导致丢失租户上下文以及运行时分离/隔离。
图6图示了根据实施例的用于对非租户感知进程进行租户范围被限定的执行的系统。如图6中所示,多租户应用服务器环境600(例如,WebLogic多租户)可以包括若干租户分区(诸如租户1分区601和租户2分区605)。租户1分区和租户2分区二者可以与和数据源603、607分别相关联的应用(诸如JEE应用602、606)分别相关联,这允许分别访问每个租户的相应数据库604、608。
根据实施例,应用(诸如与租户2相关联的JEE应用)可以调用位于例如本地OS 610中的多租户应用服务器之外的OS程序(调用进程)。例如,当存在不局限于MT应用程序服务器的MT应用组件(例如,Perl脚本、C程序等)时,会发生这种情况。这种应用(即,还依赖在MT应用服务器外部运行的外部OS组件以进行执行的这些MT应用)可以被称为复合应用。与租户2相关联的JEE应用在MT环境中运行,并具有在运行时相关联的租户上下文。
根据实施例,当MT应用(例如,JEE应用)调用OS程序/应用(即,进程620)时,MT应用可以建立若干变量625(即,环境变量),以便扩展/传播对该JEE应用可用的租户上下文。这些变量可以包括:租户ID、租户名称;租户文件系统(TFS)根;在TFS下的具有输入和输出子目录的进程工作目录;租户DB连接字符串,及租户LDAP(轻量级目录访问协议)目录URL。
根据实施例,MT应用服务器可以管理用于已经登入MT应用服务器环境600中的每个租户的虚拟租户文件系统630。当租户登入时,此虚拟租户文件系统可以被创建/建立作为应用服务器管理的一部分。虚拟租户文件系统是OS 610的一部分,对于当前在MT应用服务器环境中活动的每个租户有一个虚拟租户文件系统。
根据实施例,当MT应用(例如,JEE应用)调用OS进程(即,非租户感知进程)时,MT应用可以附加地在租户的虚拟文件系统下创建临时进程工作目录。如果MT应用调用多于一个OS进程,那么MT应用可以为被调用的每个OS进程创建一个临时工作目录。在创建虚拟文件系统下的临时工作目录时,MT应用可以(为被调用的每个OS进程)在临时工作目录下附加地创建用于输入、输出、错误和数据库目录的子目录。这些子目录可以接收被调用的OS进程的重定向的stdin(输入流)、stdout(输出流)和stderr(错误流)。可以使用进程输入文件来建立每个输入子目录。每个输出子目录可以负责捕获进程输出文件。每个错误子目录可以负责捕获进程错误(例如,stderr)消息。虚拟的特定于租户的文件系统可以与本地存储装置(诸如OS存储装置640)相关联。
根据实施例,进程构建器可以包括API(例如,Java ProcessBuilder API),该API允许客户端指定OS程序/应用要执行的命令行、配置要在进程环境中建立的环境变量、配置进程工作目录,以及将进程输入流、输出流和错误流重定向到文件系统上的文件。进程构建器可以允许在进程(即,OS进程)起动之前建立或配置某些进程特性(诸如进程环境、进程工作目录以及进程输入流/输出流/错误流重定向)。
根据实施例,当MT应用调用OS进程时,它可以创建和利用进程构建器(例如,进程构建器实例)。来自MT应用的租赁上下文可以作为进程构建器API调用的一部分而被传播,包括设置环境变量以及创建和配置进程工作目录。通过利用环境变量连同进程工作目录,可以配置进程构建器以便指派如下资源(环境变量、进程工作目录、重定向的输入/输出文件、数据库连接描述符、LDAP目录、钱包(wallet)),即,这些资源允许非租户感知进程(例如,OS进程)在该非租户感知进程执行时被限定/局限在租赁上下文内。以这种方式,非租户感知进程(例如,OS进程)获得如下工作目录,即,该工作目录特定于召用租户并且在该租户分派的虚拟文件系统下,并且与由MT应用程序服务器环境600的其他租户创建或拥有的文件和资源隔离。
根据实施例,非租户感知进程被指派OS文件系统下用于重定向的进程I/O流的特定于租户的文件夹、使用特定于租户的访问凭证连接到与租户相关联的数据库、以及使用租户LDAP目录。特定于租户的数据库连接字符串/描述符可以允许程序透明地与租户数据库一起工作。可以在租户的虚拟文件系统中的进程工作目录的数据库子目录下建立的钱包中配置特定于租户的凭证。
根据实施例,在为来自(与有时被称为“召用租户”的租户相关联的)召用分区的召用MT应用创建虚拟租户文件系统之后,与非租户感知进程相关联的流(例如,输入流、输出流、错误流)可以被重定向到租户的虚拟文件系统中的进程工作目录下的相应输入子目录、输出子目录和错误子目录。
以这种方式,与不同租户调用的OS程序相关联的租赁上下文、环境和数据可以保持离散并且彼此分离,从而允许对基于来自MT容器内部(例如,来自代表MT容器内的分区执行的JEE程序)的调用而执行的(非租户感知)OS应用进行范围被限定的处理。
根据实施例,一旦非租户感知进程完成执行,在MT应用服务器环境中运行的MT应用就可以取回进程输出并清理进程工作目录。
根据实施例,MT应用可以(例如,从java Process对象的exitValue()方法)获得进程exitValue状态代码,以查明程序是否成功执行。它还可以取回输出子文件夹和错误子文件夹下的重定向的stdout和stderr文件,以检查进程执行是否成功。一旦非租户感知进程执行完成,租户数据库中的经更新的结果就可以由在分区中运行的MT应用从数据库直接访问。
根据实施例,MT应用还可以删除进程工作目录及其子文件夹,这清理输出文件和db文件(诸如钱包)。
根据实施例,在调用OS程序的MT应用处配置的环境变量可以包括:租户ID、租户名称;租户文件系统(TFS)根;在TFS下具有输入、输出和错误子目录的进程工作目录;租户DB连接字符串,及租户LDAP(轻量级目录访问协议)目录URL。
根据实施例,使用进程构建器配置,非租户感知OS程序可以被指派将该非租户感知OS程序的执行限定/局限在租户上下文内的资源(环境变量、进程工作目录、重定向的输入/输出文件,DB连接描述符,LDAP目录和钱包)。
对OS程序的多租户执行——容器化的应用
根据实施例,本文所描述的方法和系统可以通过使用容器化的应用在运行时提供租户隔离,来支持对非租户感知进程(即,OS进程)的多租户执行。
根据实施例,本公开可以利用容器化的应用来在非租户感知进程的运行时期间提供租户隔离。
根据实施例,容器化的应用或进程是被封装为容器并且包括让应用运行的必要信息(诸如OS基本映像、应用可执行文件和库)的应用。容器化的应用可以是可以在使用相同Linux内核(诸如Linux内核750)的Linux发行版之间共享的可移植应用。可以创建容器化的应用,使得如果开发人员创建了可移植/容器化的应用并共享映像并且假设相同linux内核,那么向其共享了容器化的应用的系统可以从容器映像注册表(registry)或仓库中下载容器化的应用映像并剥离(spin off)容器以运行该容器化的应用。此时,该应用将在与其它容器隔离并且与OS隔离的目的地主机上可用,并且仍然对所需的库(例如,应用/进程的开发人员预期的库的相同版本)可用。然后,可以存在使用相同版本的库的另一个容器化的应用实例,但它将分开运行。Docker(码头工)是这种容器框架/基础架构的示例。
图7图示了根据实施例的用于对非租户感知进程进行多租户执行的系统。图7绘出了对从MT应用调用的OS程序的多租户执行,其使用在支持软件容器的OS中执行的容器化的OS应用。
如图7中所示,MT应用服务器环境600(例如,WebLogic多租户)可以包括若干个租户分区(诸如租户1分区601和租户2分区605)。租户1分区和租户2分区二者可以与和数据源603、607分别相关联的应用(诸如JEE应用602、606)分别相关联,这允许分别访问每个租户的相应数据库604、608。
根据实施例,当MT应用(例如,JEE应用)调用非租户感知应用(例如,作为容器化的应用)时,MT应用可以建立多个变量(即,环境变量),以便扩展/传播对该JEE应用可用的租户上下文。这些变量可以包括:租户ID,租户名称;租户文件系统(TFS)根;在TFS下具有输入子目录、输出子目录和错误子目录的进程工作目录;租户DB连接字符串,及租户LDAP(轻量级目录访问协议)目录URL。
根据实施例,MT应用服务器可以管理用于已经登入MT应用服务器环境600中的每个租户的虚拟租户文件系统735。当租户登入时,该虚拟租户文件系统可以被创建/建立作为应用服务器管理的一部分。虚拟租户文件系统是OS 610的一部分,对于当前在MT应用服务器环境中活动的每个租户有一个虚拟租户文件系统。
根据实施例,当MT应用(例如,JEE应用)调用非租户感知应用时,MT应用可以附加地在租户的虚拟文件系统下创建临时进程工作目录(在本文也称为“进程工作目录”)。如果MT应用调用多于一个非租户感知应用,那么MT应用可以为被调用的每个非租户感知应用创建一个进程工作目录。在虚拟文件系统下创建进程工作目录时,MT应用可以(为被调用的每个非租户感知应用)在进程工作目录下附加地创建用于输入、输出、错误和数据库目录的子目录。这些子目录可以接收被调用的OS进程的重定向stdin(输入流)、stdout(输出流)和stderr(错误流)。可以使用进程输入文件建立每个输入子目录。每个输出子目录可以负责捕获进程输出文件。每个错误子目录可以负责捕获进程错误(例如,stderr)消息。虚拟的特定于租户的文件系统可以与本地存储装置(诸如OS存储装置736)相关联。
根据实施例,可以被MT应用利用的进程构建器可以包括API(例如,JavaProcessBuilder API),该API允许客户端指定非租户感知应用要执行的命令行、配置要在进程环境中建立的环境变量、配置进程工作目录,以及将进程输入流、输出流和错误流重定向到文件系统上的文件。进程构建器可以允许在进程(即,非租户感知应用)起动之前建立或配置某些进程特性(诸如进程环境、进程工作目录以及进程输入流/输出流/错误流重定向)。
根据实施例,当MT应用调用非租户感知应用时,它可以创建和利用进程构建器(例如,进程构建器实例)。来自MT应用的租赁上下文可以作为进程构建器API调用的一部分而被传播,包括设置环境变量以及创建临时进程工作目录。通过利用环境变量连同临时进程工作目录,可以配置进程构建器,以便指派允许非租户感知应用在该非租户感知应用被执行时被限定/局限在租赁上下文内的资源(环境变量、进程工作目录、重定向的输入/输出/错误流、数据库连接描述符、LDAP目录、钱包)。以这种方式,非租户感知应用获得如下工作目录,即,该工作目录特定于召用租户并在租户分派的虚拟文件系统下并与由MT应用服务器环境600的其他租户创建或拥有的文件隔离。
根据实施例,非租户感知应用被指派在OS文件系统下的用于重定向的进程I/O流的特定于租户的文件夹,使用特定于租户的访问凭证连接到与租户相关联的数据库,以及使用特定于租户的LDAP目录。特定于租户的数据库连接字符串/描述符可以允许程序透明地与租户数据库一起工作。可以在租户的虚拟文件系统中的进程工作目录下的数据库子目录下建立的钱包中配置特定于租户的凭证。
根据实施例,在为来自(与有时被称为“召用租户”的租户相关联的)召用分区的召用MT应用创建虚拟租户文件系统之后,与非租户感知应用(例如,容器化的应用)相关联的流(例如,输入流、输出流、错误流)可以被重定向到租户的虚拟文件系统中的进程工作目录下的相应输入子目录、输出子目录和错误子目录。
根据实施例,非租户感知应用(其从MT应用被调用,诸如来自租户2的分区的JEE应用召用)可以被封装成容器化的应用。在示例性进程中,MT应用可以调用OS程序。在这种情况下,进程构建器(例如,Java ProcessBuilder)可以调用容器化的应用。容器框架提供了轻量级容器虚拟化技术。一个这样的容器框架是Docker。
根据实施例,容器运行时(诸如Docker)定义将应用和应用的所有依赖关系封装到单个映像中的格式。该映像可以被传送到任何启用Docker的机器,在那里该映像可以被执行,并且保证暴露给应用的执行环境将是相同的。
使用具有容器框架(诸如Docker)的OS,系统可以创建应用容器映像,该应用容器映像包括基本OS(例如,Ubuntu)连同分层文件系统,该分层文件系统包含应用二进制文件及所需的库和组件。映像可以是自包含的和可移植的,从而当启动容器化的应用时允许该映像运行应用而不依赖于主机。
根据实施例,MT应用(即,JEE应用程序606)可以通过启动容器进程(例如,Docker或Rocket)来调用非租户感知应用。容器客户端720(诸如Docker客户端)可以由MT应用(例如,在租户2的分区605中运行的JEE应用606)使用进程构建器来调用,以使用来自请求的始发者(即,JEE应用)的租赁上下文来启动OS(非租户感知)应用。容器客户端可以调用容器守护进程725(诸如Docker守护进程)。然后,容器守护进程可以从JEE应用下载并启动所请求的容器化的应用的应用映像740。应用映像740可以包括基本OS(例如,Ubuntu)连同包含应用二进制文件及所需的库和组件的分层文件系统。应用映像可以是自包含的和可移植的,从而允许它运行应用而不依赖于主机。此外,容器化的应用可以作为隔离的实例运行。容器化的应用在相同的OS上运行,但是可以隔离执行,这意味着两个或更多个租户可以隔离地运行同一个应用的不同实例,作为分离的容器。
根据实施例,当容器(由容器守护进程)创建并且应用映像被加载到容器中以运行容器化的应用730时,该应用可以被运行而不依赖于主机。
根据实施例,容器化的应用730可以与租户的虚拟租户文件系统735通信(I/O)(虚拟租户文件系统735基于租户上下文(例如,租户2的分区),虚拟租户文件系统735又可以与OS存储装置736通信)。
根据实施例,代表租户(例如,租户2)操作的容器化的应用可以使用必要的凭证来访问租户的数据库608。
根据实施例,MT应用可以(例如从java Process对象的exitValue()方法)获得进程exitValue状态代码,以查明程序是否成功执行。它还可以取回输出子文件夹和错误子文件夹下的重定向的stdout和stderr文件,以检查进程执行是否成功。一旦非租户感知的容器化的应用执行完成,租户数据库中的经更新的结果就可以由在分区中运行的MT应用直接从数据库访问。
根据实施例,MT应用程序还可以删除进程工作目录及其子文件夹,这清理输出文件和db文件(诸如钱包)。
图8图示了根据实施例的用于对非租户感知进程的多租户执行的系统。图8绘出了对从MT应用调用的OS程序的多租户执行,其使用在容器中执行的容器化的OS应用。
如图8中所示,MT应用服务器环境600(例如,WebLogic Multitenant)可以包括多个租户分区(诸如租户1分区601和租户2分区605)。租户1分区和租户2分区二者都可以与和数据源603、607分别相关联的应用(诸如JEE应用602、606)分别相关联,这允许分别访问每个租户的相应数据库604、608。
根据实施例,当MT应用(例如,JEE应用)调用非租户感知应用(例如,作为容器化的应用)时,MT应用可以建立多个变量(即,环境变量),以便扩展/传播对该JEE应用可用的租户上下文。这些变量可以包括:租户ID,租户名称;租户文件系统(TFS)根;在TFS下的具有输入子目录和输出子目录的进程工作目录;租户DB连接字符串,以及租户LDAP(轻量级目录访问协议)目录URL。
根据实施例,MT应用服务器可以管理用于已经登入MT应用服务器环境600中的每个租户的虚拟租户文件系统735。当租户登入时,该虚拟租户文件系统可以被创建/建立作为应用服务器管理的一部分。虚拟租户文件系统是OS 610的一部分,对于当前在MT应用服务器环境中活动的每个租户有一个虚拟租户文件系统。
根据实施例,当MT应用(例如,JEE应用)调用非租户感知应用时,MT应用可以附加地在租户的虚拟文件系统下创建临时进程工作目录。如果MT应用调用了多于一个非租户感知应用,那么MT应用可以为被调用的每个非租户感知应用创建一个进程工作目录。在虚拟文件系统下创建进程工作目录时,MT应用可以(为被调用的每个非租户感知应用)在进程工作目录下附加地创建用于输入、输出、错误和数据库目录的子目录。这些子目录可以接收重定向的(stdin)输入流、(stdout)输出流和(stderr)错误流。每个输入子目录可以负责建立进程输入文件。每个输出子目录可以负责捕获进程输出文件。每个错误子目录可以负责捕获进程错误(例如,stderr)消息。虚拟的特定于租户的文件系统可以与本地存储装置(诸如OS存储装置736)相关联。
根据实施例,进程构建器可以包括API(例如,Java ProcessBuilder API),该API允许客户端指定非租户感知应用要执行的命令行、配置要在进程环境中建立的环境变量、配置进程工作目录,以及将进程输入流、输出流和错误流重定向到文件系统上的文件。进程构建器可以允许在进程(例如,非租户感知应用)起动之前建立或配置某些进程特性(诸如进程环境、进程工作目录以及进程输入流/输出流/错误流重定向)。
根据实施例,当MT应用调用非租户感知应用时,它可以创建和利用进程构建器(例如,进程构建器实例)。来自MT应用的租赁上下文可以作为进程构建器API调用的一部分进行传播,包括设置环境变量。MT应用可以在VTFS(虚拟租户文件系统)下创建进程工作目录和子目录(输入、输出、错误和数据库)。然后,MT应用可以使用进程构建器API来配置环境变量、具有临时进程工作目录路径的进程工作目录、重定向的流。通过利用环境变量连同进程工作目录,可以配置进程构建器,以便指派允许非租户感知应用在该非租户感知应用被执行时被限定/局限在租赁上下文内的资源(环境变量、进程工作目录、重定向的输入/输出文件、数据库连接描述符、LDAP目录、钱包)。以这种方式,非租户感知应用获得如下工作目录,即,该工作目录特定于召用租户并在租户分派的虚拟文件系统下并与由MT应用服务器环境600的其他租户创建或拥有的文件隔离。
根据实施例,非租户感知应用使用OS文件系统下特定于租户的文件夹进行I/O操作,使用特定于租户的访问凭证连接到与租户相关联的数据库,并且使用租户LDAP目录。特定于租户的数据库连接字符串/描述符可以允许程序透明地与租户数据库一起工作。可以在租户的虚拟文件系统中的进程工作目录内的数据库子目录下建立的钱包中配置特定于租户的凭证。
根据实施例,在为来自(与有时被称为“召用租户”的租户相关联的)召用分区的召用MT应用创建了虚拟租户文件系统之后,与非租户感知应用(例如,容器化的应用)相关联的流(例如,输入流、输出流、错误流)可以被重定向到租户的虚拟文件系统中的进程工作目录下的相应子文件夹。
根据实施例,非租户感知应用(其从MT应用被调用,诸如来自租户2的分区的JEE应用召用)可以被封装成容器化的应用。在示例性进程中,MT应用可以调用OS程序。在这种情况下,进程构建器API由MT应用配置为调用容器进程。一个这样的容器框架/基础设施是Docker。
根据实施例,容器框架/基础设施(诸如Docker)可以定义用于将应用及其所有依赖关系封装到单个映像中的格式。此映像可以被上传到Docker枢纽(hub)/仓库,该映像可以从那里被下载和执行,并且保证暴露给应用的执行环境将是相同的。
根据实施例,使用诸如Docker的容器框架,系统可以从应用映像库810下载先前创建的容器映像815。应用映像815可以包括基本OS(例如,Ubuntu)连同包含应用二进制文件及所需的库和组件的分层文件系统。映像可以是自包含的和可移植的,从而在创建容器并在其中启动应用时允许该映像运行应用而不依赖于主机。
根据实施例,应用映像库815可以被建立在主机本地文件系统上,并且可以包括用于可以从在MT应用服务器内运行的应用调用的期望的程序和应用的若干个容器化的应用映像(例如,.tar文件)。这种应用映像可以包括例如通常请求的OS程序和应用。
根据实施例,MT应用(即,JEE应用606)可以通过启动容器进程(例如,Docker或Rocket)来调用非租户感知应用。容器客户端720(诸如Docket客户端)可以由MT应用(例如,在租户2的分区605中运行的JEE应用606)使用进程构建器来调用,以使用来自请求的始发者(即,JEE应用)的租赁上下文来启动OS(非租户感知)应用。容器客户端可以调用容器守护进程725(诸如Docker守护进程)。然后,容器守护进程可以从JEE应用下载并启动所请求的容器化的应用的应用映像740。应用映像740可以包括基本OS(例如,Ubuntu)连同包含应用二进制文件及所需的库和组件的分层文件系统。应用映像可以是自包含的和可移植的,从而允许它运行应用而不依赖于主机。此外,容器化的应用可以作为隔离的实例运行。容器化的应用在相同的OS上运行,但是可以隔离执行,这意味着两个或更多个租户可以隔离运行同一个应用的不同实例,作为分离的容器。
根据实施例,容器仓库810可以填充有若干个应用映像815。这些应用映像可以预先填充到应用映像库中,或者也可以在图8的容器进程创建应用映像之后被保存到应用映像库中。
根据实施例,当容器(由容器守护进程)创建并且将应用映像加载到容器中以运行容器化的应用730时,可以在没有对主机的任何依赖性的情况下运行该应用。
根据实施例,容器化的应用730可以与租户的虚拟租户文件系统735通信(I/O)(虚拟租户文件系统735基于租户上下文(例如,租户2的分区),虚拟租户文件系统735又可以与OS存储装置736通信)。
根据实施例,代表租户(例如,租户2)操作的容器化的应用可以使用必要的凭证来访问租户的数据库608。
根据实施例,MT应用可以(例如,从java进程对象的exitValue()方法)获得进程exitValue状态代码,以查明程序是否成功执行。它还可以取回输出子文件夹和错误子文件夹下的重定向的stdout和stderr文件,以检查进程执行是否成功。一旦非租户感知的容器化的应用执行完成,租户数据库中的经更新的结果就可以由在分区中运行的MT应用直接从数据库访问。
根据实施例,MT应用还可以删除进程工作目录及其子文件夹,这清理输出文件和db文件(诸如钱包)。
图9是根据实施例的用于为对非租户感知进程的租户范围被限定的执行创建环境和资源的示例性方法的流程图。在步骤910处,可以在租户文件系统(例如,虚拟租户文件系统)下创建进程工作目录。在步骤920处,可以在进程工作目录下创建用于输入、输出、错误和数据库文件夹的子目录。在步骤930处,可以使用数据文件建立输入文件夹。在步骤940处,可以使用租户数据库配置文件和凭证(例如,钱包)建立数据库文件夹。在步骤950处,可以基于租户上下文最终确定让非租户感知应用(例如,OS应用/进程)进行执行的环境。
图10是根据实施例的用于创建和配置进程构建器以启动容器化的应用的示例性方法的流程图。在步骤1010处,可以创建进程构建器实例(例如,Java ProcessBuilderAPI)。在步骤1020处,可以(例如,使用租户上下文)配置进程环境。在步骤1030处,可以配置进程工作目录。在步骤1040处,该方法可以配置可执行命令行来启动容器化的应用。在步骤1050处,可以将来自容器化的应用的流(诸如输入流、输出流和错误流)重定向到进程工作目录的输入子目录、输出子目录和错误子目录。
图11是根据实施例的用于从MT中间件应用(例如,JEE应用)对非租户感知OS应用进行多租户执行的示例性方法的流程图。作为此示例性方法的前提,可以将OS应用(即,意图从MT应用服务器环境调用的OS应用)封装为容器化的应用(例如,容器化的应用映像)。在步骤1110处,可以创建用于租户范围被限定的执行的进程环境和资源,如图9中的流程图所标识的那样。在步骤1120处,可以创建和配置进程构建器(例如,Java ProcessBuilder API实例),如图10中的流程图所标识的那样。在步骤1130处,该方法可以使用进程构建器起动方法来调用容器化的OS应用进程。此步骤创建经配置的特定于租户的执行环境并起动容器进程。容器化的应用可以利用特定于租户的环境和资源运行,并具有由容器运行时实施的与其它容器和OS进程的运行时隔离。在步骤1140处,该方法可以等待容器化的应用进程执行完成。在步骤1150处,取回来自进程工作目录的stdout文件的进程输出以及来自租户数据库的进程输出,执行任何必要的后处理,并利用结果来更新特定于租户的数据库。在步骤1160处,该方法可以删除和清理进程工作目录及其内容。
图12是用于支持对从多租户中间件应用调用的非租户感知进程进行租户范围被限定的执行的示例性方法的流程图。在步骤1210处,该方法可以在一个或多个计算机(该一个或多个计算机包括在其上执行的应用服务器环境)处提供多个分区(其中每个分区提供域的管理性和运行时细分)以及多个租户感知程序,其中这多个租户感知程序中的每一个与多个分区中的分区相关联。
在步骤1220处,该方法可以将多个分区和多个租户感知程序中的每一个与多个租户中的租户相关联,以用于由该租户使用。
在步骤1230处,该方法可以从多个分区中的召用分区调用非租户感知进程,召用分区与多个租户中的召用租户相关联。
在步骤1240处,该方法可以收集关于召用租户的租赁信息。
在步骤1250处,该方法可以基于所收集的租赁信息将非租户感知进程的执行的范围限定到召用租户,其中限定执行的范围允许将范围被限定到召用租户的对非租户感知进程的执行与多租户中间件环境的其他租户隔离。
本发明可以使用一个或多个常规的通用或专用数字计算机、计算设备、机器或微处理器来方便地实现,包括根据本公开的教导编程的一个或多个处理器、存储器和/或计算机可读存储介质。如对软件领域的技术人员将清楚的,基于本公开的教导,适当的软件编码可以由熟练的程序员容易地准备。
在一些实施例中,本发明包括计算机程序产品,该计算机程序产品是具有存储在其上/其中的指令的非暂态存储介质或(一个或多个)计算机可读介质,其中指令可用来对计算机进行编程,以执行本发明的任何进程。存储介质可以包括但不限于任何类型的盘(包括软盘、光盘、DVD、CD-ROM、微型驱动器和磁光盘)、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适于存储指令和/或数据的任何类型的介质或设备。
出于说明和描述的目的,提供了本发明的前述描述。它并不旨在是详尽的或者将本发明限制到所公开的精确形式。许多修改和变化对本领域技术人员将是清楚的。这些修改和变化包括所公开的特征的任何相关组合。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域的其他技术人员能够理解本发明的各种实施例以及适于预期特定用途的各种修改。本发明的范围意在由以下权利要求及其等同物定义。

Claims (43)

1.一种用于支持对从多租户中间件应用调用的非租户感知进程进行租户范围被限定的执行的方法,包括:
在包括在其上执行的应用服务器环境的一个或多个计算机处提供:
多个分区,其中每个分区提供域的管理性和运行时细分,以及
多个租户感知程序,其中所述多个租户感知程序中的每一个租户感知程序与所述多个分区中的分区相关联;
将所述多个分区中的每一个分区以及所述多个租户感知程序中的每一个租户感知程序与多个租户中的租户相关联,以用于由该租户使用;
从所述多个分区中的召用分区调用所述非租户感知进程,所述召用分区与所述多个租户中的召用租户相关联;
收集关于所述召用租户的租赁信息;
基于所收集的关于所述召用租户的租赁信息,创建特定于租户的虚拟文件系统;以及
基于所收集的租赁信息,通过建立进程执行环境和资源来将所述非租户感知进程的执行的范围限定到所述召用租户,其中将所述非租户感知进程的执行的范围限定到所述召用租户包括:
将所述非租户感知进程的流重定向到所述特定于租户的虚拟文件系统,其中所述非租户感知进程的流包括输入流、输出流和错误流中的至少一个;
其中,限定执行的范围允许将范围被限定到所述召用租户的对所述非租户感知进程的执行与多租户中间件环境的其他租户隔离。
2.如权利要求1所述的方法,其中所述多租户中间件应用与所述多个分区中的所述召用分区相关联,并且其中所述多租户中间件应用与调用所述非租户感知进程一起传递所述租赁信息。
3.如权利要求1或2所述的方法,还包括:
在所述特定于租户的虚拟文件系统下创建进程工作目录,其中所述进程工作目录包括输入子目录、输出子目录、数据库子目录和错误子目录。
4.如权利要求3所述的方法,还包括:
使用至少一个数据文件来建立所述输入子目录;以及
使用钱包来建立所述数据库子目录,所述钱包包括与所述召用租户相关联的配置文件和凭证。
5.如权利要求4所述的方法,还包括:
在所述非租户感知进程完成之后,由所述非租户感知进程访问特定于租户的数据库,其中访问是经由所述钱包授权的;以及
在所述非租户感知进程完成以及由所述非租户感知进程访问特定于租户的数据库之后,清理所述特定于租户的虚拟文件系统,其中清理所述特定于租户的虚拟文件系统包括删除所述进程工作目录。
6.如权利要求3所述的方法,其中所述非租户感知进程的流分别被重定向到所述进程工作目录的输入子目录、输出子目录和错误子目录。
7.如权利要求1-2和4-6中任一项所述的方法,其中从所述多个分区中的所述召用分区调用的所述非租户感知进程是复合应用的一部分,所述复合应用还包括在所述多个分区中的所述召用分区的上下文中运行的租户感知应用。
8.一种用于支持对从多租户中间件应用调用的非租户感知进程进行租户范围被限定的执行的系统,包括:
一个或多个计算机,包括在其上执行的应用服务器环境,连同:
多个分区,其中每个分区提供域的管理性和运行时细分,以及
多个租户感知程序,其中每个租户感知程序与所述多个分区中的一个分区相关联,
其中所述多个分区中的每一个分区以及所述多个租户感知程序中的每一个租户感知程序与多个租户中的租户相关联,以用于由该租户使用;以及
其中所述多个分区中的召用分区调用所述非租户感知进程,所述召用分区与所述多个租户中的召用租户相关联;
其中收集关于所述召用租户的租赁信息;
其中基于所收集的关于所述召用租户的租赁信息来创建特定于租户的虚拟文件系统,
其中,基于所收集的租赁信息,通过建立进程执行环境和资源来将所述非租户感知进程的执行的范围限定到所述租户,其中将所述非租户感知进程的执行的范围限定到所述召用租户包括:
将所述非租户感知进程的流重定向到所述特定于租户的虚拟文件系统,其中所述非租户感知进程的流包括输入流、输出流和错误流中的至少一个;以及
其中,限定所述非租户感知进程的执行的范围允许将范围被限定到所述召用租户的对所述非租户感知进程的执行与多租户中间件环境的其他租户隔离。
9.如权利要求8所述的系统,其中所述多租户中间件应用与所述多个分区中的所述召用分区相关联,并且其中所述多租户中间件应用与调用所述非租户感知进程一起传递所述租赁信息。
10.如权利要求8或9所述的系统,其中在所述特定于租户的虚拟文件系统下创建进程工作目录,并且其中所述进程工作目录包括输入子目录、输出子目录、数据库子目录和错误子目录。
11.如权利要求10所述的系统,其中使用至少一个数据文件建立所述输入子目录,并且其中使用钱包建立所述数据库子目录,所述钱包包括与所述召用租户相关联的配置文件和凭证。
12.如权利要求11所述的系统,其中在所述非租户感知进程完成之后,由所述非租户感知进程使用所述钱包访问特定于租户的数据库,并且其中所述特定于租户的虚拟文件系统在所述非租户感知进程完成之后被清理,其中清理所述特定于租户的虚拟文件系统包括删除所述进程工作目录。
13.如权利要求10所述的系统,其中所述非租户感知进程的流分别被重定向到所述进程工作目录的输入子目录、输出子目录和错误子目录。
14.如权利要求8-9和11-13中任一项所述的系统,其中从所述多个分区中的所述召用分区调用的所述非租户感知进程是复合应用的一部分,所述复合应用还包括在所述多个分区中的所述召用分区的上下文中运行的租户感知应用。
15.一种非暂态计算机可读存储介质,包括存储在其上的指令,所述指令用于支持对从多租户中间件应用调用的非租户感知进程进行租户范围被限定的执行,其中所述指令在由一个或多个计算机读取和执行时,使所述一个或多个计算机执行步骤,所述步骤包括:
在包括在其上执行的应用服务器环境的一个或多个计算机处提供:
多个分区,其中每个分区提供域的管理性和运行时细分,以及
多个租户感知程序,其中所述多个租户感知程序中的每一个租户感知程序与所述多个分区中的分区相关联;
将所述多个分区中的每一个分区以及所述多个租户感知程序中的每一个租户感知程序与多个租户中的租户相关联,以用于由该租户使用;
从所述多个分区中的召用分区调用所述非租户感知进程,所述召用分区与所述多个租户中的召用租户相关联;
收集关于所述召用租户的租赁信息;
基于所收集的关于所述召用租户的租赁信息,创建特定于租户的虚拟文件系统;以及
基于所收集的租赁信息,通过建立进程执行环境和资源来将所述非租户感知进程的执行的范围限定到所述召用租户,其中将所述非租户感知进程的执行的范围限定到所述召用租户包括:
将所述非租户感知进程的流重定向到所述特定于租户的虚拟文件系统,其中所述非租户感知进程的流包括输入流、输出流和错误流中的至少一个;
其中,限定执行的范围允许将范围被限定到所述召用租户的对所述非租户感知进程的执行与多租户中间件环境的其他租户隔离。
16.如权利要求15所述的非暂态计算机可读存储介质,其中所述多租户中间件应用与所述多个分区中的所述召用分区相关联,并且其中所述多租户中间件应用与调用所述非租户感知进程一起来传递所述租赁信息。
17.如权利要求15或16所述的非暂态计算机可读存储介质,所述步骤还包括:
在所述特定于租户的虚拟文件系统下创建进程工作目录,其中所述进程工作目录包括输入子目录、输出子目录、数据库子目录和错误子目录。
18.如权利要求17所述的非暂态计算机可读存储介质,所述步骤还包括:
使用至少一个数据文件建立所述输入子目录;以及
使用钱包建立所述数据库子目录,所述钱包包括与所述召用租户相关联的配置文件和凭证。
19.如权利要求18所述的非暂态计算机可读存储介质,所述步骤还包括:
在所述非租户感知进程完成之后,由所述非租户感知进程访问特定于租户的数据库,其中访问是经由所述钱包授权的;以及
在所述非租户感知进程完成以及由所述非租户感知进程访问特定于租户的数据库之后,清理所述特定于租户的虚拟文件系统,其中清理所述特定于租户的虚拟文件系统包括删除所述进程工作目录。
20.如权利要求17所述的非暂态计算机可读存储介质,其中所述非租户感知进程的流分别被重定向到所述进程工作目录的输入子目录、输出子目录和错误子目录。
21.如权利要求15-16和18-20中任一项所述的非暂态计算机可读存储介质,其中从所述多个分区中的所述召用分区调用的所述非租户感知进程是复合应用的一部分,所述复合应用还包括在所述多个分区中的所述召用分区的上下文中运行的租户感知应用。
22.一种用于支持对从多租户中间件应用调用的非租户感知进程进行租户范围被限定的执行的方法,包括:
在包括在其上执行的应用服务器环境的一个或多个计算机处提供:
多个分区,其中每个分区提供域的管理性和运行时细分,以及
多个租户感知程序,其中所述多个租户感知程序中的每一个租户感知程序与所述多个分区中的分区相关联;
将所述多个分区中的每一个分区以及所述多个租户感知程序中的每一个租户感知程序与多个租户中的租户相关联,以用于由该租户使用;
从所述多个分区中的召用分区调用所述非租户感知进程,所述召用分区与所述多个租户中的召用租户相关联;
收集关于所述召用租户的租赁信息;
基于所收集的租赁信息,通过建立进程执行环境和资源来将所述非租户感知进程的执行的范围限定到所述召用租户,其中将所述非租户感知进程的执行的范围限定到所述召用租户包括:
将所述非租户感知进程启动作为容器化的进程,所述容器化的进程包括与所述非租户感知进程相关联的库和可执行文件;
其中所述容器化的进程是独立的进程,所述独立的进程能够将针对所述召用租户的对所述非租户感知进程的执行与多租户中间件环境的其他租户隔离。
23.如权利要求22所述的方法,还包括:
基于所收集的关于所述召用租户的租赁信息,创建特定于租户的虚拟文件系统,其中所述特定于租户的虚拟文件系统包括输入子目录、输出子目录、数据库子目录和错误子目录。
24.如权利要求22或23所述的方法,还包括:
在所述非租户感知进程完成之后,由所述非租户感知进程访问特定于租户的数据库;
其中所述非租户感知进程使用钱包访问所述特定于租户的数据库。
25.如权利要求23所述的方法,其中将所述非租户感知进程启动作为容器化的进程包括:
由容器守护进程访问应用映像,所述应用映像与所述非租户感知进程相关联;
创建与租户相关联的容器;以及
在所述容器中启动所述应用映像。
26.如权利要求25所述的方法,其中被访问的应用映像被存储在应用映像仓库中。
27.如权利要求25所述的方法,其中所述应用映像的流被重定向到所述特定于租户的虚拟文件系统,其中所述应用映像的流包括输入流、输出流和错误流中的至少一个。
28.如权利要求22-23和26-27中任一项所述的方法,其中从所述多个分区中的所述召用分区调用的所述非租户感知进程是复合应用的一部分,所述复合应用还包括在所述多个分区中的所述召用分区的上下文中运行的租户感知应用。
29.一种用于支持对从多租户中间件应用调用的非租户感知进程进行租户范围被限定的执行的系统,包括:
一个或多个计算机,包括在其上执行的应用服务器环境,连同
多个分区,其中每个分区提供域的管理性和运行时细分,以及
多个租户感知程序,其中每个租户感知程序与所述多个分区中的一个分区相关联,
其中所述多个分区中的每一个分区以及所述多个租户感知程序中的每一个租户感知程序与多个租户中的租户相关联,以用于由该租户使用;以及
其中所述多个分区中的召用分区调用所述非租户感知进程,所述召用分区与所述多个租户中的召用租户相关联;
其中收集关于所述召用租户的租赁信息;
其中,基于所收集的租赁信息,通过建立进程执行环境和资源来将所述非租户感知进程的执行的范围限定到所述召用租户;
其中将所述非租户感知进程的执行的范围限定到所述召用租户包括:
将所述非租户感知进程启动作为容器化的进程,所述容器化的进程包括与所述非租户感知进程相关联的库和可执行文件;
其中所述容器化的进程是独立的进程,所述独立的进程能够将针对所述召用租户的对所述非租户感知进程的执行与多租户中间件环境的其他租户隔离。
30.如权利要求29所述的系统,其中,基于所收集的关于所述召用租户的租赁信息,创建特定于租户的虚拟文件系统,其中所述特定于租户的虚拟文件系统包括输入子目录、输出子目录、数据库子目录和错误子目录。
31.如权利要求29或30所述的系统,其中在所述非租户感知进程完成之后,所述非租户感知进程使用钱包访问特定于租户的数据库。
32.如权利要求30所述的系统,其中将所述非租户感知进程启动作为容器化的进程包括:
从容器守护进程访问应用映像,所述应用映像与所述非租户感知进程相关联;
创建与租户相关联的容器;以及
在所述容器中启动所述应用映像。
33.如权利要求32所述的系统,其中被访问的应用映像存储在应用映像仓库中。
34.如权利要求32所述的系统,其中所述应用映像的流被重定向到所述特定于租户的虚拟文件系统,其中所述应用映像的流包括输入流、输出流和错误流中的至少一个。
35.如权利要求29-30和33-34中任一项所述的系统,其中从所述多个分区中的所述召用分区调用的所述非租户感知进程是复合应用的一部分,所述复合应用还包括在所述多个分区中的所述召用分区的上下文中运行的租户感知应用。
36.一种非暂态计算机可读存储介质,包括存储在其上的指令,所述指令用于支持对从多租户中间件应用调用的非租户感知进程进行租户范围被限定的执行,其中所述指令在由一个或多个计算机读取和执行时,使所述一个或多个计算机执行步骤,所述步骤包括:
在包括在其上执行的应用服务器环境的一个或多个计算机处提供:
多个分区,其中每个分区提供域的管理性和运行时细分,以及
多个租户感知程序,其中所述多个租户感知程序中的每一个租户感知程序与所述多个分区中的分区相关联;
将所述多个分区中的每一个分区以及所述多个租户感知程序中的每一个租户感知程序与多个租户中的租户相关联,以用于由该租户使用;
从所述多个分区中的召用分区调用所述非租户感知进程,所述召用分区与所述多个租户中的召用租户相关联;
收集关于所述召用租户的租赁信息;
基于所收集的租赁信息,通过建立进程执行环境和资源来将所述非租户感知进程的执行的范围限定到所述召用租户,其中将所述非租户感知进程的执行的范围限定到所述召用租户包括:
将所述非租户感知进程启动作为容器化的进程,所述容器化的进程包括与所述非租户感知进程相关联的库和可执行文件;
其中容器化的进程是独立的进程,所述独立的进程能够将针对所述召用租户的对所述非租户感知进程的执行与多租户中间件环境的其他租户隔离。
37.如权利要求36所述的非暂态计算机可读存储介质,所述步骤还包括:
基于所收集的关于所述召用租户的租赁信息,创建特定于租户的虚拟文件系统,其中所述特定于租户的虚拟文件系统包括输入子目录、输出子目录、数据库子目录和错误子目录。
38.如权利要求36或37所述的非暂态计算机可读存储介质,所述步骤还包括:
在所述非租户感知进程完成之后,由所述非租户感知进程访问特定于租户的数据库;
其中所述非租户感知进程使用钱包访问所述特定于租户的数据库。
39.如权利要求37所述的非暂态计算机可读存储介质,其中将所述非租户感知进程启动作为容器化的进程包括:
通过容器守护进程访问应用映像,所述应用映像与所述非租户感知进程相关联;
创建与租户相关联的容器;以及
在所述容器中启动所述应用映像;
其中被访问的应用映像存储在应用映像仓库中。
40.如权利要求39所述的非暂态计算机可读存储介质,其中所述应用映像的流被重定向到所述特定于租户的虚拟文件系统,其中所述应用映像的流包括输入流、输出流和错误流中的至少一个。
41.如权利要求36-37和40中任一项所述的非暂态计算机可读存储介质,其中从所述多个分区中的所述召用分区调用的所述非租户感知进程是复合应用的一部分,所述复合应用还包括在所述多个分区的所述召用分区的上下文中运行的租户感知应用。
42.一种包括用于执行如权利要求1至7和22至28中任一项所述的方法的单元的装置。
43.一种用于支持对从多租户中间件应用调用的非租户感知进程进行租户范围被限定的执行的系统,包括:
一个或多个计算机系统;以及
包括程序指令的非暂态计算机存储介质,所述指令在由所述一个或多个计算机系统执行时,使所述一个或多个计算机执行如权利要求1至7以及权利要求22至28中任一项所述的方法。
CN201680024093.9A 2015-10-23 2016-09-09 用于对从多租户中间件应用调用的os程序进行多租户执行的系统和方法 Active CN107533485B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562245611P 2015-10-23 2015-10-23
US62/245,611 2015-10-23
US15/059,193 2016-03-02
US15/059,193 US9811386B2 (en) 2015-10-23 2016-03-02 System and method for multitenant execution of OS programs invoked from a multitenant middleware application
US15/059,872 2016-03-03
US15/059,872 US9819609B2 (en) 2015-10-23 2016-03-03 System and method for multitenant execution of OS programs invoked from a multitenant middleware application
PCT/US2016/051099 WO2017069864A1 (en) 2015-10-23 2016-09-09 System and method for multitenant execution of os programs invoked from a multitenant middleware application

Publications (2)

Publication Number Publication Date
CN107533485A CN107533485A (zh) 2018-01-02
CN107533485B true CN107533485B (zh) 2021-01-12

Family

ID=60765562

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680024093.9A Active CN107533485B (zh) 2015-10-23 2016-09-09 用于对从多租户中间件应用调用的os程序进行多租户执行的系统和方法

Country Status (4)

Country Link
EP (1) EP3365779A1 (zh)
JP (1) JP6866307B2 (zh)
KR (1) KR102559507B1 (zh)
CN (1) CN107533485B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113448593A (zh) * 2020-07-31 2021-09-28 心医国际数字医疗系统(大连)有限公司 诊疗系统平台应用的自动部署方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102333115A (zh) * 2011-09-01 2012-01-25 杭州湾云计算技术有限公司 一种将已有Web应用转化为SaaS多租户应用的方法和装置
CN103229450A (zh) * 2010-08-11 2013-07-31 安全第一公司 用于安全多租户数据存储的系统和方法
CN104050201A (zh) * 2013-03-15 2014-09-17 伊姆西公司 用于多租户分布式环境中的数据管理的方法和设备
CN104104513A (zh) * 2014-07-22 2014-10-15 浪潮电子信息产业股份有限公司 一种云端多租户数据存储安全隔离方法
CN104598249A (zh) * 2015-02-05 2015-05-06 浙江天正信息科技有限公司 多租户感知的软件个性化定制与部署方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012063301A1 (ja) 2010-11-08 2012-05-18 株式会社日立製作所 計算機システム、マルチテナント制御方法及びマルチテナント制御プログラム
US9460169B2 (en) * 2011-01-12 2016-10-04 International Business Machines Corporation Multi-tenant audit awareness in support of cloud environments
US9003477B2 (en) * 2012-06-27 2015-04-07 Microsoft Technology Licensing, Llc Model for managing hosted resources using logical scopes
US20150296030A1 (en) 2012-07-03 2015-10-15 Stephane Maes Managing a multitenant cloud service
US9509553B2 (en) * 2012-08-13 2016-11-29 Intigua, Inc. System and methods for management virtualization
US9276942B2 (en) 2012-09-07 2016-03-01 Oracle International Corporation Multi-tenancy identity management system
JP2014096675A (ja) 2012-11-08 2014-05-22 Hitachi Ltd 通信装置、及び、設定方法
US10216758B2 (en) * 2013-10-24 2019-02-26 Vmware, Inc. Multi-tenant production and test deployments of Hadoop
US10642800B2 (en) * 2013-10-25 2020-05-05 Vmware, Inc. Multi-tenant distributed computing and database
WO2015112614A1 (en) * 2014-01-21 2015-07-30 Oracle International Corporation System and method for supporting multi-tenancy in an application server, cloud, or other environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103229450A (zh) * 2010-08-11 2013-07-31 安全第一公司 用于安全多租户数据存储的系统和方法
CN102333115A (zh) * 2011-09-01 2012-01-25 杭州湾云计算技术有限公司 一种将已有Web应用转化为SaaS多租户应用的方法和装置
CN104050201A (zh) * 2013-03-15 2014-09-17 伊姆西公司 用于多租户分布式环境中的数据管理的方法和设备
CN104104513A (zh) * 2014-07-22 2014-10-15 浪潮电子信息产业股份有限公司 一种云端多租户数据存储安全隔离方法
CN104598249A (zh) * 2015-02-05 2015-05-06 浙江天正信息科技有限公司 多租户感知的软件个性化定制与部署方法

Also Published As

Publication number Publication date
KR20180072593A (ko) 2018-06-29
JP6866307B2 (ja) 2021-04-28
CN107533485A (zh) 2018-01-02
EP3365779A1 (en) 2018-08-29
KR102559507B1 (ko) 2023-07-25
JP2018536206A (ja) 2018-12-06

Similar Documents

Publication Publication Date Title
US9819609B2 (en) System and method for multitenant execution of OS programs invoked from a multitenant middleware application
US9811386B2 (en) System and method for multitenant execution of OS programs invoked from a multitenant middleware application
CN106575242B (zh) 用于在多租户应用服务器环境中支持命名空间的系统和方法
CN107077383B (zh) 用于在多租户应用服务器环境中确定分区标识符的系统和方法
US10356161B2 (en) System and method for classloading in a multitenant application server environment
JP6599448B2 (ja) マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルを提供するためのシステムおよび方法
JP6611798B2 (ja) マルチテナントアプリケーションサーバ環境においてグローバルランタイムを使用するためのシステムおよび方法
CN106471471B (zh) 用于在多租户应用服务器环境中支持分区的系统和方法
US9973384B2 (en) System and method for enterprise java bean support in a multitenant application server environment
JP6461167B2 (ja) アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムおよび方法
US10467061B2 (en) System and method for resource overriding in a multitenant application server environment
US10009225B2 (en) System and method for supporting multiple partition edit sessions in a multitenant application server environment
US6714949B1 (en) Dynamic file system configurations
US20160014191A1 (en) System and method for web container partitions in a multitenant application server environment
JP6574794B2 (ja) マルチテナントアプリケーションサーバ環境におけるポータブルパーティションのためのシステムおよび方法
CN107533485B (zh) 用于对从多租户中间件应用调用的os程序进行多租户执行的系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant