CN111279314A - 利用微服务容器在多租户api网关中提供租户隔离 - Google Patents

利用微服务容器在多租户api网关中提供租户隔离 Download PDF

Info

Publication number
CN111279314A
CN111279314A CN201880068977.3A CN201880068977A CN111279314A CN 111279314 A CN111279314 A CN 111279314A CN 201880068977 A CN201880068977 A CN 201880068977A CN 111279314 A CN111279314 A CN 111279314A
Authority
CN
China
Prior art keywords
container
tenant
service
request
configuration
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.)
Granted
Application number
CN201880068977.3A
Other languages
English (en)
Other versions
CN111279314B (zh
Inventor
G·费奇泰恩霍特茨
S·P·苏拉瓦拉普
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
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN111279314A publication Critical patent/CN111279314A/zh
Application granted granted Critical
Publication of CN111279314B publication Critical patent/CN111279314B/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

系统可以托管用于多个不同租户的API,并从许多不同的客户端设备接收请求。当接收到请求时,可以识别相关联的租户,并且路由器可以确定容器实例是否可用于服务请求。容器实例可以是包括内部端点、Web服务器和运行时环境的空容器实例。空容器实例可以与特定租户无关。为了将容器实例与租户相关联,数据存储库(诸如键值数据存储库)可以检索配置文件,这些配置文件将不可知的容器实例转换成与特定租户相关联的容器实例,并包括要执行必需的API函数的配置代码。空容器和填充的容器的池可以被高效地管理。

Description

利用微服务容器在多租户API网关中提供租户隔离
相关申请的交叉引用
本申请要求2017年9月30日提交的美国临时专利申请No.62/566,422、2017年9月30日提交的美国专利申请No.62/566,431和2017年9月30日提交的美国专利申请No.62/566,435的权益。美国专利申请62/566,422、62/566,431和62/566,435的全部公开内容通过引用并入本文,包括附录。
背景技术
应用编程接口(API)网关是一种完全受管理的服务,其允许开发人员创建、发布、维护、监视和保护用于公众使用的API。租户可以定义API并将其发布到这些公共API网关,诸如云平台,然后可以将其提供给客户端设备使用。在大规模API网关中,环境可以包括多租户环境,其中多个不同的租户托管可使得通过同一托管服务可用的API。
发明内容
在一些实施例中,一种使用容器隔离租户以在多租户环境中服务请求的方法可以包括:接收对由第一租户提供的第一服务的第一请求;在多租户环境中选择空容器;将实现第一服务的第一配置加载到容器中;从容器服务第一请求;接收对由第二租户提供的第二服务的第二请求;从容器中冲洗第一配置;以及从容器服务第二请求。
在一些实施例中,一种非暂态计算机可读介质包括指令,该指令在由一个或多个处理器执行时,使一个或多个处理器执行操作,包括:接收对由第一租户提供的第一服务的第一请求;在多租户环境中选择空容器;将实现第一服务的第一配置加载到容器中;从容器服务第一请求;接收对由第二租户提供的第二服务的第二请求;从容器中冲洗第一配置;以及从容器服务第二请求。
在一些实施例中,一种系统可以包括一个或多个处理器和一个或多个存储器设备,该存储器设备包括指令,该指令在由一个或多个处理器执行时,使一个或多个处理器执行操作,包括:接收对由第一租户提供的第一服务的第一请求;在多租户环境中选择空容器;将实现第一服务的第一配置加载到容器中;从容器服务第一请求;接收对由第二租户提供的第二服务的第二请求;从容器中冲洗第一配置;以及从容器服务第二请求。
在任何实施例中,以下特征中的任何一个或全部可以以任何组合被包括并且没有限制。容器可以是多租户环境中的多个容器之一,该多个容器被实例化以服务来自客户端设备的请求。第一配置可以包括第一服务可以使用的存储器中的堆的大小。在从容器中冲洗第一配置之后,容器可以包括带有嵌入式服务器和内部端点(endpoint)的运行时进程。内部端点可以由多租户环境中的路由器调用,以服务第二请求。第一配置可以包括被链接在一起以服务请求的多个动作。多租户环境可以阻止容器同时服务与不同租户相关联的请求。多租户环境可以允许容器同时服务与单个租户相关联的请求。该方法/操作还可以包括:接收对由第二租户提供的第二服务的第三请求;以及从容器服务第三请求,而无需从容器中冲洗第二配置。第一服务可以包括使得通过多租户环境可用的公共API。
附图说明
通过参考本说明书的其余部分和附图,可以实现对本发明的本质和优点的进一步理解,其中,贯穿若干附图使用了相似的附图标记指代相似的部件。在一些情况下,子标签与附图标记相关联以表示多个相似部件中的一个部件。当在没有指定现有子标签的情况下参考附图标记时,意在指代所有这样的多个相似部件。
图1图示了根据一些实施例的用于在多租户环境中处理请求的系统的简化框图。
图2图示了根据一些实施例的容器实例108的示意图,该容器实例108准备服务租户的请求。
图3图示了根据一些实施例的如何用来自数据存储库的文件填充空容器实例的框图。
图4图示了根据一些实施例的填充的容器如何可以服务请求。
图5图示了根据一些实施例的容器被放回到可用容器池中的简化框图。
图6A图示了根据一些实施例的在多租户环境中的容器的生命周期的状态图。
图6B图示了根据一些实施例的在多租户环境中的容器的生命周期的替代状态图。
图7图示了在多租户环境中使用容器隔离租户以服务请求的方法的流程图。
图8图示了根据一些实施例的在多租户环境中管理容器的运行时状态和服务配置的方法的流程图。
图9图示了根据一些实施例的高效地分配容器池以服务多租户环境中的请求的方法的流程图。
图10图示了用于实现一些实施例的分布式系统的简化框图。
图11图示了系统环境的部件的简化框图,通过该系统环境,由实施例系统的部件提供的服务可以作为云服务提供。
图12图示了其中可以实现各种实施例的示例性计算机系统。
具体实施方式
本文描述的是用于管理API网关的实施例。云系统可以托管用于多个不同的租户的API,并从许多不同的客户端设备接收请求。当接收到请求时,可以识别相关联的租户,并且路由器可以确定容器实例是否可用于服务请求。容器实例可以是包括内部端点、Web服务器和运行时环境的空容器实例。空容器实例可以与特定租户无关。为了将容器实例与租户相关联,数据存储库(诸如键值数据存储库)可以检索配置文件,这些配置文件将不可知的容器实例转换成与特定租户相关联的容器实例,并包括要执行必需的API函数的配置代码。当容器中的API完成服务请求(或单个租户的多个请求)时,可以将运行时状态信息保存回数据存储库,并且可以冲洗容器实例的内容。这保证了在多租户环境中租户数据之间的隔离,同时仍允许容器重用和池化资源的高效管理。数据存储库可以维护服务注册表,以使系统中的路由器能够在需要时分配新的容器实例,并在不使用它们时取消分配容器实例。数据存储库还可以存储可以按需分发给任何容器的租户API的运行时状态信息、配置和应用。
图1图示了根据一些实施例的用于在多租户环境中处理请求的系统的简化框图。在整个本公开中,可以使用API网关的示例。但是,本文描述的实施例不限于此。替代地,为处理针对API网关的请求而描述的功能可以在具有用于接收请求的接口的任何系统中实现。
多个客户端设备102(例如,智能电话、膝上型电脑、平板计算机、工作站、服务器等)可以将请求发送到公共接口104,该公共接口104可以包括负载均衡器即服务(LBaaS)接口。这些请求可以与多租户环境的特定租户相关联,并且可以引用由租户提供的特定服务,诸如API函数。例如,从客户端设备102之一接收的请求可以包括诸如“Tenant:ACME,API:ProcessInvoice”之类的信息。公共接口104可以将请求集中到一个或多个路由器106。
路由器106可以周期性地和实时地与数据存储库112通信,以确定分配给租户并能够处理特定请求的一个或多个容器。在图1的示例中,针对租户2的请求将具有路由器106可以从中选择的三个不同的容器实例。在分配给租户2的一组容器实例中,路由器106可以选择一个或多个容器实例,这些容器实例加载有服务请求的配置和/或应用。例如,路由器106可以选择分配给“Tenant:ACME”的三个容器实例之一,该容器实例加载有用于处理“API:ProcessInvoice”的配置。如果没有实例已经用该配置加载,那么路由器106可以选择现有的空容器或实例化新的空容器。然后,路由器106可以使数据存储库112将特定于“API:ProcessInvoice”的配置传送到现有/新的空容器中,以创建可以处理对“Tenant:ACME”的特定请求的容器化服务。
一旦容器化服务处理了请求并且(如果需要)将响应返回给客户端设备,那么或者可以重新使用容器化服务来服务该特定租户/服务组合的附加请求,或者可以从容器中冲洗其内容,以便使得可用于其它租户。当容器被冲洗并被重新分配给不同租户时,需要保存在容器中的运行时信息可以被发送回数据存储库112。这确保下次在空容器中实例化特定应用或API时,运行时信息可以被传送并由新容器使用,以从其离开处继续执行。
注册服务114可以用于将新的租户注册到多租户环境中。新的租户可以使用注册服务114的界面在数据存储库112中生成新的租户条目,并定义其使用多租户环境的参数。这些参数可以包括该特定租户可用的容器实例的最大、最小、平均和预期数量。此外,新的租户可以选择用于服务请求的路由器的数量和类型、可用的不同配置服务、运行时容器池的不同配置,以及注册处理的其它方面。
配置服务110可以提供基于Web的用户界面,该界面允许租户定义配置并选择可以使得通过公共界面可用的应用。例如,一些实施例可以提供一系列web表单和下拉框,其允许租户从多个不同的微服务、应用、功能等中进行选择以构建API。一些实施例还可以允许租户选择可以运行的应用,诸如限制在预定时限内可以调用API的次数的应用。在通过配置服务110选择/定义配置和应用之后,可以将它们存储在数据中心112中,用于放置到系统中的空容器中。
注意的是,给定网关可以同时满足一个以上的租户。在一些实施例中,可以存在完全隔离并在不同可用性域或数据中心上运行的多个网关。例如,可能存在用于Chicago的网关和用于Phoenix的网关。但是,这两个网关仍然可能服务同一租户。最终用户仍然可以使用唯一网关ID将API部署到多个网关中的一个或任意组合。在一些实施例中,每个网关可以具有其自己的唯一键值数据存储库,用于存储配置、应用等。
以下各图遍历系统如何可以处理请求的一个示例。这些示例并不意味着是限制性的。图2图示了根据一些实施例的容器实例108的示图,该容器实例108准备服务租户的请求。在这个阶段,路由器106已经接收到要服务的请求。首先,路由器106可以与数据存储库112结合工作,以确定可用的容器实例是否正在操作并且可用于服务请求。数据存储库112可以包括服务注册表214,其对系统中的每个可用实例编目录。服务注册表214还可以跟踪哪些API和租户被分配给每个实例化的容器。当新容器被实例化或现有容器被移除时,数据存储库112可以实时更新服务注册表214。路由器106可以保持服务注册表214的至少一部分的本地副本。数据存储库112可以用对服务注册表214的改变的列表来间歇地更新路由器106。在一些实施例中,数据存储库112可以用可以接收请求的可用容器实例的列表来更新路由器106。在一些实施例中,因为系统中实例的总列表可能非常大,因此仅服务注册表214的改变或部分被传输到路由器106。
如图1所示,一些实施例可以包括多个路由器106。路由器之一106-2可以被指定为主路由器。主路由器106-2可以被指定为路由器106中被允许在需要时实例化新容器实例的唯一一个路由器。因此,如果图2中的路由器106被指定为主路由器,那么在需要服务针对特定租户的请求时,它可以自由地实例化新的容器实例。主路由器106-2可以在注册过程中分析租户提供的设置,以确保池中分配给租户的容器实例的数量在该特定租户的最小/最大数量之内。如果路由器106之一正在处理需要实例化新容器的请求,那么路由器106-1可以将请求转发到主路由器106-2,并且主路由器106-2可以确定是否实例化新的容器。通过仅允许主容器106-2实例化新容器,这有助于确保高效地管理容器池的大小。例如,如果六个不同的路由器都接收到同时的针对特定租户针对特定服务的请求,那么即使单个实例化容器可能足够,这些路由器中的每个路由器也都可能独立地决定实例化新容器。将这些请求中的每一个集中于主路由器106-2确保了仅实例化最少数量的新容器。
相反,如果路由器106和/或数据存储库112确定租户被分配了许多未被正在使用的容器实例,或者在容器池中有许多未分配的容器可用,那么可以确定可以从系统中消除这些未使用的容器中的一个或多个,从而释放存储器和处理能力,以使现有容器能够操作。这提供了可以服务请求的容器实例的动态池。该池可以基于在任何给定时间接收到的请求流量有多大而动态地增长/缩小。如下所述,冲洗容器内容允许容器在不同租户之间进行重用,同时仍确保租户彼此隔离。
通过这些实施例实现的一个技术优势是对容器池大小的高效管理。运行时池可以是所有共享公共属性的运行时实例的集合。容器池中的运行时实例可以从索引0开始顺序编号,使得给定的运行时实例由一对值唯一识别:{池名称,实例索引}。池管理可以取决于每个实施例使用的特定容器环境。例如,可以使用Java类使用Docker守护程序REST API来实现池功能,以根据需要创建/启动/停止运行时容器。该类可以允许环境设置池的名称、(一个或多个)端口的编号、调试端口的编号、容器状态转换的超时值(在下面详细描述)等等。一些实施例还可以允许该类指定“minSize”值,其表示未绑定到任何租户的将可用于服务请求的多个正在运行的容器实例。此外,“maxSize”值可以指定容器池中运行时容器实例的最大数量。
一旦服务被分配给网关中的容器,该服务就可以执行周期性的“心跳”,作为向其它服务表明其仍然存活并且正确工作的指示。例如,当服务被加载到容器中时,它可以执行心跳以使(一个或多个)路由器知道它可用于服务请求。执行心跳可以包括更新数据存储库112的服务注册表中的对应条目。这些心跳传输可以用于确定网关中容器的生命周期。例如,一些实施例可以使用生存时间(TTL)间隔,在此之后可以认为服务是不活动的。替代地,一些实施例可以指定在服务被认为是不活动的之前被允许跳过/错过的心跳的数量。心跳可以定期发生,诸如每10秒、20秒、30秒、60秒等发生。
在图2的示例中,路由器106可以识别当前未分配给特定租户,或者分配给请求的租户但未填充运行请求的特定API的配置的空容器108-3。注意的是,容器108-1和容器108-2填充有配置并分配给特定的租户。因为它们在与容器108-3分开的容器中操作,因此这三个容器的数据和操作可以严格地彼此隔离。
图3图示了根据一些实施例的如何用来自数据存储库112的文件填充空容器实例的框图。继续图2的示例,可以分配空容器108-3以处理针对特定租户的请求304。首先,可以将容器108-3分配给该租户,使得不能通过容器108-3来服务其它租户的请求。接下来,可以使用来自请求304的租户和API信息在数据存储库112中查找配置、应用和运行时信息。在一些实施例中,数据存储库112可以是键值数据存储库。一些实施例还可以允许将数据存储库112分布到多租户环境中的不同系统上或跨不同的平台。例如,来自请求304的租户和/或API可以用作在数据存储库112中查找返回配置202、应用204和/或任何运行时状态信息的值的关键字。
在一些实施例中,键值数据存储库112可以用于将特定于租户的配置持久化到盘中。此外,键值数据存储库可以提供中央服务注册表214,使得所有运行的微服务都“注册”自己,以便其它服务可以定位和调用它们。例如,诸如
Figure BDA0002462780550000081
的分布式键值数据存储库可以用于存储状态信息,诸如:从管理服务获取的配置(例如,策略、API、应用、计划元数据等);服务注册表214中的运行时容器状态;容器池配置(例如,最小值、最大值、策略、超时间隔等);租户注册状态(例如,租户、租户池绑定等);限速配置、实时状态等。
配置202可以包括已经在图1的配置服务110中定义的动作206的管道。这些动作206可以被链接在一起以形成用于处理数据的API或其它服务。每个动作206可以包括诸如以下之类的事情:接收请求、解析请求中的有效载荷、处理有效载荷中的数据、改变有效载荷中的数据、调用另一个服务以获取信息、将信息写入到文件或数据库,和/或生成响应。在一些实施例中,配置202可以同时处理多个请求。因此,填充有配置202的单个容器可以处理该特定API和该特定租户的多个请求。一般而言,配置是无状态的(例如,RESTful),并且在处理信息和快速生成响应方面非常高效。
除了返回配置202之外,数据存储库112还可以返回一个或多个应用204,这些应用也可以与API配置202一起在容器中运行。例如,应用204可以是带宽限制应用,其限制在预定时间间隔内可以调用特定API的次数(例如,每小时仅可以服务100个请求)。与配置202相比,应用204可能需要在应用的执行之间保存运行时状态信息。在图3中,应用204可能过去没有运行过,因此有可能在数据存储库112中没有为应用204保存状态运行时信息。容器108-3现在可以表示被分配给单个租户以用于处理特定的API请求的微服务。一旦容器108-3绑定到租户,该实例就可以从数据存储库112中按需加载所有新配置信息,诸如API定义、应用、计划、订阅。
空容器可以是软件容器,诸如
Figure BDA0002462780550000091
容器,并且多租户环境可以包括编排的容器平台,诸如
Figure BDA0002462780550000092
实例化新的空容器可以包括从容器映像生成空容器,并用最少数量的软件进程填充它,这对于系统中使用的任何配置将是共同的。例如,一些实施例可以将空容器指定为
Figure BDA0002462780550000093
容器,该容器包括运行时环境212,诸如Java Runtime
Figure BDA0002462780550000094
(JRE)、web服务器210(诸如HTTP服务器),以及内部端点208。内部端点208可以暴露给路由器106,并且可以被路由器106用来向容器108-3发送请求。在一些实施例中,可以使用除
Figure BDA0002462780550000101
容器以外的其它容器环境。例如,一些实施例可以使用UNIX进程来启动/停止运行时容器。
当填充空容器时,数据存储库112可以将配置202和应用204传送到容器108-3。如果运行时状态数据302在数据存储库112中可用,那么在这种情况下它也将被传送到容器108-3,运行时状态数据302由应用在应用运行时生成,并被存储在容器108-3中。例如,应用204可以记录在给定时间间隔内接收到的请求的数量。该信息可以保存在运行时状态302中,并在冲洗该容器108-3时传送回数据存储库112。一般而言,将配置202、应用204和/或运行时状态302传送到空但实例化的容器108-3是相对轻量级的处理,其可以非常快速高效地完成以处理请求而没有明显的延迟。
图4图示了根据一些实施例的填充的容器108-3如何可以服务请求。容器108-3可以对由配置202定义的API服务针对该租户的任何请求。在一些情况下,这可以包括仅处理导致配置202传送到容器108-3的单个请求。在其它情况下,这可以包括处理针对相同租户而发送到路由器106的多个相似请求。在已经处理所有请求并且已经将响应(如果有的话)发送回发出请求的客户端设备之后,容器108-3可以变得空闲或被动。虽然容器108-3仍被分配或绑定到特定租户,但它当前未用于处理任何请求。在预定时间间隔之后,可以取消向该特定租户分配容器108-3,并将其放回到可用容器108-3的池中,等待分配给具有新配置的新租户。
在冲洗容器108-3并将其重新分配给不同租户之前,可以将由在容器108-3上运行的应用204生成或更新的任何运行时状态信息302保存在数据存储库112中。然后,当配置202和/或应用204被重新分配给新容器以服务将来的请求时,运行时状态信息302可以被传输到不同的容器。
图5图示了根据一些实施例的容器108-3被放回到可用容器池中的简化框图。在运行时状态信息302被传送回数据存储库112之后,可以冲洗容器108-3的配置202、应用204和/或运行时状态302。现在,路由器106可以将空容器108-3重新分配给不同的租户,以服务不同的API调用。虽然在图5中仅容器108-3被示出为空的,但是实际部署通常可以包括多个空容器。路由器106可以使用不同的策略来将请求分配给多个可用的空容器之一,诸如循环(round-robin)策略。如上所述,如果在预定时间间隔内未将容器108-3分配给新的租户/API,那么可以将容器108-3从多租户环境中移除以节省存储器和/或计算资源。
如上所述,数据存储库112通过将配置、应用和运行时状态分配给在多租户环境中运行的各种容器来促进这些操作。数据存储库112还可以在初始注册时甚至在运行时从租户接收配置信息。数据存储库112还维护服务注册表214,该服务注册表214随时监视容器池的状态。数据存储库112使用该服务注册表214来与路由器106通信以确定可用容器池何时应当增长和/或缩小。
图6A图示了根据一些实施例的在多租户环境中的容器的生命周期的状态图。在初始状态602,容器不存在。在状态604,容器已经用上述处理集(例如,web服务器、端点等)进行实例化,但是该容器未绑定或未分配给特定的租户并且为空。在服务请求时,容器可以进入状态606,在该状态下它被绑定或分配给特定租户并且用配置、应用和/或运行时状态信息填充。状态606被称为活动状态,因为容器可能正在主动服务从路由器106接收到的请求。在状态608中,容器仍可以绑定或分配给特定的租户,但是是被动的,因为它没有使用其内部存储的配置主动处理任何请求。在闲置预定时间间隔之后,可以在状态610中取消分配或取消绑定容器。当容器不再绑定到特定租户时,可以冲洗内部配置、应用和/或运行时状态。在一些实施例中,未绑定的容器不需要冲洗其内部内容,直到它被重新分配给新的租户。如果容器未分配给新租户,那么容器可以在状态612中被移除。
图6B图示了根据一些实施例的图6A的状态图的另一个视图,其图示了多租户环境中的容器的生命周期。在初始状态602,容器尚不存在或已从容器环境中删除。在创建容器实例后,它可以在状态604中解除绑定。如果容器闲置达预定时间间隔(称为“未绑定超时”),那么可以将容器从环境中删除,然后返回到状态602。替代地,在状态606中,可以将容器分配给租户并加载配置、应用、状态信息等。从绑定状态和活动状态606中,如果路由器缩小容器池的大小,那么容器可以从环境中移除,并因此转变回状态602。容器也可以从租户释放、冲洗其特定于租户的内容,并在状态604中返回到未绑定的容器池。此外,如果在状态606中的绑定的活动容器处于空闲而没有服务任何客户端请求达被称为“空闲租户超时”的预定时间间隔,那么它可以在状态608中变为被动。从绑定和被动状态608开始,“被动超时”间隔可能到期,并使容器从绑定和被动容器状态608转变为状态604中的未绑定容器池。只要容器存在,该容器生命周期就可以在状态之间转变。
图7图示了在多租户环境中使用容器隔离租户以服务请求的方法的流程图。该方法可以包括接收对由第一租户提供的第一服务的第一请求(702)。该方法还可以包括在多租户环境中选择空容器(704)。该方法可以附加地包括将实现第一服务的第一配置加载到容器中(706)。该方法还可以包括从容器服务第一请求(708)。该方法还可以包括接收对由第二租户提供的第二服务的第二请求(710)。该方法可以附加地包括从容器中冲洗第一配置(712)。该方法还可以包括从容器服务第二请求(714)。一些实施例可以包括一种系统,该系统包括执行这些方法步骤的一个或多个处理器和一个或多个存储器。其它实施例可以包括存储指令的非暂态计算机可读介质,该指令使一个或多个处理器执行这些方法步骤。
在任何实施例中,以下特征中的一个或多个可以以任何组合被包括并且没有限制。容器可以是多租户环境中的多个容器之一,该多个容器被实例化以服务来自客户端设备的请求。在从容器中冲洗第一配置之后,容器可以包括带有嵌入式服务器和内部端点的运行时进程。内部端点可以由多租户环境中的路由器调用,以服务第二请求。第一配置可以包括被链接在一起以服务请求的多个动作。多租户环境可以阻止容器同时服务与不同租户相关联的请求。多租户环境可以允许容器同时服务与单个租户相关联的请求。该方法还可以包括:接收对由第二租户提供的第二服务的第三请求;以及从容器服务第三请求,而无需从容器中冲洗第二配置。第一服务可以包括使得通过多租户环境可用的公共API。
应该认识到的是,图7中所示的特定步骤提供了根据本发明的各个实施例的使用容器隔离租户以在多租户环境中服务请求的特定方法。根据替代实施例,也可以执行其它步骤顺序。例如,本发明的替代实施例可以以不同的顺序执行上面概述的步骤。此外,图7所示的各个步骤可以包括多个子步骤,这些子步骤可以按照适合于个别步骤的各种顺序来执行。此外,取决于特定应用,可以添加或移除附加步骤。本领域普通技术人员将认识到许多变型、修改和替代。
图8图示了根据一些实施例的在多租户环境中管理容器的运行时状态和服务配置的方法的流程图。该方法可以包括接收已经接收到针对在多租户环境中提供的服务的请求的指示(802)。该方法可以附加地包括识别实现该服务的配置,其中该配置被存储在数据存储库中(804)。该方法还可以包括将配置发送到多租户环境中的容器以服务请求(806)。该方法还可以包括从容器接收运行时状态(808)。该方法还可以包括将运行时状态存储在数据存储库中,其中从容器中冲洗配置(810)。一些实施例可以包括一种系统,该系统包括执行这些方法步骤的一个或多个处理器和一个或多个存储器。其它实施例可以包括存储指令的非暂态计算机可读介质,该指令使一个或多个处理器执行这些方法步骤。
在任何实施例中,以下特征中的一个或多个可以以任何组合被包括并且没有限制。配置可以在运行时之前由多租户环境的租户提供。数据存储库可以包括键值数据存储库。键值数据存储库可以包括分布式键值数据存储库。与服务相关联的租户的身份可以是键值数据存储库中的键,并且配置和运行时状态可以是键值数据存储库中的值。数据存储库还可以存储在多租户环境中可用的容器的注册表。当基于容器的注册表新容器在多租户环境中可用时,数据存储库可以更新多租户环境中的一个或多个路由器。
应该认识到的是,图8所示的特定步骤提供了根据各种实施例的管理多租户环境中的容器的运行时状态和服务配置的特定方法。根据替代实施例,也可以执行其它步骤顺序。例如,本发明的替代实施例可以以不同的顺序执行上面概述的步骤。此外,图8所示的各个步骤可以包括多个子步骤,这些子步骤可以按照适合于个别步骤的各种顺序来执行。此外,取决于特定应用,可以添加或移除附加步骤。本领域普通技术人员将认识到许多变型、修改和替代。
图9图示了根据一些实施例的高效地分配容器池以服务多租户环境中的请求的方法的流程图。该方法可以包括在多租户环境中向第一租户分配多个容器(902)。该方法还可以包括识别多个容器中分配给第一租户但未正被第一租户使用的一个或多个容器(904)。该方法可以附加地包括冲洗一个或多个容器的内容(906)。该方法还可以包括将一个或多个容器重新分配给多租户环境中的第二租户(908)。一些实施例可以包括一种系统,该系统包括执行这些方法步骤的一个或多个处理器和一个或多个存储器。其它实施例可以包括存储指令的非暂态计算机可读介质,该指令使一个或多个处理器执行这些方法步骤。
在任何实施例中,以下特征中的一个或多个可以以任何组合被包括并且没有限制。在冲洗一个或多个容器的内容之后,该一个或多个容器在重新分配给第二租户之前,无需在第一时间间隔内分配给任何租户。该方法还可以包括:识别多个容器中分配给第一租户但未正被第一租户使用的第二一个或多个容器;确定没有其它租户需要第二一个或多个容器;以及从多租户环境中移除第二一个或多个容器。该方法可以附加地包括:确定第一租户正在接收比该多个容器能够服务的请求更多的请求。该方法还可以包括实例化新的多个容器;以及将新的多个容器分配给第一租户。该方法还可以包括将先前分配给另一个租户的容器分配给第一租户。多租户环境的网关可以在多租户环境中将这一个或多个容器重新分配给第二租户。
应该认识到的是,图9所示的特定步骤提供了根据各种实施例的高效地分配容器池以服务多租户环境中的请求的特定方法。根据替代实施例,也可以执行其它步骤顺序。例如,本发明的替代实施例可以以不同的顺序执行上面概述的步骤。此外,图9所示的各个步骤可以包括多个子步骤,这些子步骤可以按照适合于个别步骤的各种顺序来执行。此外,取决于特定应用,可以添加或移除附加步骤。本领域普通技术人员将认识到许多变型、修改和替代。
本文描述的每个方法可以由计算机系统实现。这些方法的每个步骤可以由计算机系统自动执行,和/或可以提供有涉及用户的输入/输出。例如,用户可以为方法中的每个步骤提供输入,并且这些输入中的每一个可以响应于请求这种输入的具体输出,其中输出由计算机系统生成。每个输入可以响应于对应的请求输出而被接收。此外,可以从用户、作为数据流从另一个计算机系统、从存储器位置检索、通过网络检索、从web服务请求等来接收输入。同样,输出可以提供给用户、作为数据流提供给另一个计算机系统、保存在存储器位置中、通过网络发送、提供给web服务等。简而言之,本文描述的方法的每个步骤可以由计算机系统执行,并且可以涉及到计算机系统和来自计算机系统的任何数量的输入、输出和/或请求,这些可以涉及或可以不涉及用户。可以说不涉及用户的那些步骤是由计算机系统自动执行的而无需人为干预。因此,根据本公开将理解的是,可以更改本文描述的每个方法的每个步骤以包括到用户和来自用户的输入和输出,或者可以由计算机系统自动完成而无需人为干预,其中任何确定由处理器产生。此外,本文描述的每个方法的一些实施例可以被实现为存储在有形的非瞬态存储介质上的指令集合,以形成有形的软件产品。
图10描绘了用于实现实施例之一的分布式系统1000的简化图。在所示实施例中,分布式系统1000包括一个或多个客户端计算设备1002、1004、1006和1008,每个客户端计算设备可以被配置为通过一个或多个网络1010执行和操作客户端应用,诸如web浏览器、专有客户端(例如,Oracle Forms)等。服务器1012可以经由网络1010与远程客户端计算设备1002、1004、1006和1008通信地耦合。
在各种实施例中,服务器1012可以适于运行由系统的一个或多个部件提供的一个或多个服务或软件应用。在一些实施例中,这些服务可以作为基于web的服务或云服务被提供,或者在软件即服务(SaaS)模型下被提供给客户端计算设备1002、1004、1006和/或1008的用户。操作客户端计算设备1002、1004、1006和/或1008的用户又可以利用一个或多个客户端应用来与服务器1012交互以利用由这些部件提供的服务。
在图中绘出的配置中,系统1000的软件部件1018、1020和1022被示出为在服务器1012上实现。在其它实施例中,系统1000的一个或多个部件和/或由这些部件提供的服务也可以由客户端计算设备1002、1004、1006和/或1008中的一个或多个来实现。然后,操作客户端计算设备的用户可以利用一个或多个客户端应用来使用由这些部件提供的服务。这些部件可以用硬件、固件、软件或其组合来实现。应该认识到的是,各种不同的系统配置是可能的,其可能与分布式系统1000不同。图中所示的实施例因此是用于实现实施例系统的分布式系统的一个示例,而不是要进行限制。
客户端计算设备1002、1004、1006和/或1008可以是便携式手持设备(例如,
Figure BDA0002462780550000161
蜂窝电话、
Figure BDA0002462780550000162
计算平板电脑、个人数字助理(PDA))或可穿戴设备(例如,Google
Figure BDA0002462780550000163
头戴式显示器),运行诸如Microsoft Windows
Figure BDA0002462780550000171
和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS等)的软件,并且启用互联网、电子邮件、短消息服务(SMS)、
Figure BDA0002462780550000172
或其它通信协议。客户端计算设备可以是通用个人计算机,作为示例,包括运行各种版本的Microsoft
Figure BDA0002462780550000173
Apple
Figure BDA0002462780550000174
和/或Linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行任何各种可商业获得的
Figure BDA0002462780550000175
或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统,诸如例如Google Chrome OS)的工作站计算机。替代地或附加地,客户端计算设备1002、1004、1006和1008可以是能够通过(一个或多个)网络1010通信的任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏系统(例如,具有或不具有
Figure BDA0002462780550000176
手势输入设备的微软Xbox游戏控制台)和/或个人消息传送设备。
虽然示例性分布式系统1000被示出为具有四个客户端计算设备,但是可以支持任何数量的客户端计算设备。其它设备(诸如具有传感器的设备等)可以与服务器1012交互。
分布式系统1000中的(一个或多个)网络1010可以是本领域技术人员熟悉的、可以利用任何各种可商业获得的协议支持数据通信的任何类型的网络,其中协议包括但不限于TCP/IP(传输控制协议/网际协议)、SNA(系统网络体系架构)、IPX(互联网报文交换)、AppleTalk,等等。仅仅作为示例,(一个或多个)网络1010可以是局域网(LAN),诸如基于以太网、令牌环等的LAN。(一个或多个)网络1010可以是广域网和互联网。它可以包括虚拟网络,包括但不限于虚拟专用网(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外网络、无线网络(例如,依据电子电气学会(IEEE)802.11协议套件、
Figure BDA0002462780550000177
和/或任何其它无线协议当中任意一种操作的网络);和/或这些和/或其它网络的任意组合。
服务器1012可以由一个或多个通用计算机、专用服务器计算机(作为示例,包括PC(个人计算机)服务器、
Figure BDA0002462780550000181
服务器、中档服务器、大型计算机、机架安装的服务器等)、服务器场、服务器集群或任何其它适当的布置和/或组合组成。在各种实施例中,服务器1012可以适于运行在前述公开中所描述的一个或多个服务或软件应用。例如,服务器1012可以与用于执行以上根据本公开的实施例描述的处理的服务器对应。
服务器1012可以运行包括以上讨论的操作系统当中任意一种的操作系统,以及任何可商业获得的服务器操作系统。服务器1012还可以运行任何各种附加的服务器应用和/或中间层应用,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、
Figure BDA0002462780550000182
服务器、数据库服务器,等等。示例性数据库服务器包括但不限于从Oracle、Microsoft、Sybase、IBM(国际商业机器)等可商业获得的那些数据库服务器。
在一些实现方案中,服务器1012可以包括一个或多个应用,以分析和整合从客户端计算设备1002、1004、1006和1008的用户接收到的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括,但不限于,
Figure BDA0002462780550000183
馈送、
Figure BDA0002462780550000184
更新或者从一个或多个第三方信息源接收到的实时更新和连续数据流,其可以包括与传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车交通监视等相关的实时事件。服务器1012还可以包括一个或多个应用,以经由客户端计算设备1002、1004、1006和1008的一个或多个显示设备显示数据馈送和/或实时事件。
分布式系统1000还可以包括一个或多个数据库1014和1016。数据库1014和1016可以驻留在各种位置中。作为示例,数据库1014和1016中的一个或多个可以驻留在服务器1012本地的(和/或驻留在服务器1012中的)非瞬态存储介质上。替代地,数据库1014和1016可以远离服务器1012,并且经由基于网络的连接或专用的连接与服务器1012通信。在一组实施例中,数据库1014和1016可以驻留在本领域技术人员熟悉的存储区域网络(SAN)中。类似地,用于执行服务器1012所具有的功能的任何必要的文件都可以适当地本地存储在服务器1012上和/或远程存储。在一组实施例中,数据库1014和1016可以包括适于响应于SQL格式的命令而存储、更新和检索数据的关系数据库,诸如由Oracle提供的数据库。
图11是根据本公开的实施例的系统环境1100的一个或多个部件的简化框图,通过该系统环境1100,由实施例系统的一个或多个部件提供的服务可以作为云服务提供。在所示实施例中,系统环境1100包括可以由用户使用以与提供云服务的云基础设施系统1102交互的一个或多个客户端计算设备1104、1106和1108。客户端计算设备可以被配置为操作客户端应用,诸如web浏览器、专有客户端应用(例如,Oracle Forms)或某种其它应用,这些应用可以由客户端计算设备的用户用来与云基础设施系统1102交互以使用由云基础设施系统1102提供的服务。
应该认识到的是,图中描绘的云基础设施系统1102可以具有除了所描绘的那些之外的其它部件。另外,图中所示的实施例仅是可以结合本发明的实施例的云基础设施系统的一个示例。在一些其它实施例中,云基础设施系统1102可以具有比图中所示更多或更少的部件、可以组合两个或更多个部件、或者可以具有不同的部件配置或布置。
客户端计算设备1104、1106和1108可以是与上面针对1002、1004、1006和1008所描述的设备类似的设备。
虽然示例性系统环境1100被示出具有三个客户端计算设备,但是任何数量的客户端计算设备可以被支持。诸如具有传感器的设备等的其它设备可以与云基础设施系统1102交互。
(一个或多个)网络1110可以促进客户端1104、1106和1108与云基础设施系统1102之间的数据通信和交换。每个网络可以是本领域技术人员所熟悉的可以使用各种商业上可获得的协议(包括上面针对(一个或多个)网络1010所描述的那些协议)中的任何一种支持数据通信的任何类型的网络。
云基础设施系统1102可以包括一个或多个计算机和/或服务器,其可以包括上面针对服务器1012所描述的那些计算机和/或服务器。
在某些实施例中,由云基础设施系统提供的服务可以包括按需对云基础设施系统的用户可用的许多服务,诸如在线数据存储和备份解决方案、基于Web的电子邮件服务、被托管的办公室(office)套件和文档协作服务、数据库处理、受管理的技术支持服务等。由云基础设施系统提供的服务可以动态扩展以满足云基础设施系统的用户的需要。由云基础设施系统提供的服务的具体实例化在本文中被称为“服务实例”。一般而言,从云服务提供商的系统经由通信网络(诸如互联网)对用户可用的任何服务被称为“云服务”。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自己的本地服务器和系统不同。例如,云服务提供商的系统可以托管应用,并且用户可以经由诸如互联网的通信网络按需订购和使用应用。
在一些示例中,计算机网络云基础设施中的服务可以包括对存储装置、被托管的数据库、被托管的Web服务器、软件应用或由云供应商向用户提供的其它服务的受保护的计算机网络访问,或者如本领域中另外已知的那样。例如,服务可以包括通过互联网对云上的远程存储装置进行密码保护的访问。作为另一个示例,服务可以包括基于Web服务的被托管的关系数据库和脚本语言中间件引擎,以供联网的开发人员私有使用。作为另一个示例,服务可以包括对在云供应商的网站上托管的电子邮件软件应用的访问。
在某些实施例中,云基础设施系统1102可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式递送给客户的应用、中间件和数据库服务产品的套件。这种云基础设施系统的示例是由本受让人提供的Oracle公共云。
在各种实施例中,云基础设施系统1102可以适于自动供应、管理和跟踪客户对由云基础设施系统1102供给的服务的订阅。云基础设施系统1102可以经由不同的部署模型来提供云服务。例如,可以依据公共云模型提供服务,其中云基础设施系统1102被销售云服务的组织拥有(例如,被Oracle拥有),并且服务对一般公众或不同行业的企业可用。作为另一个示例,可以依据私有云模型来提供服务,其中云基础设施系统1102仅针对单个组织操作,并且可以为该组织内的一个或多个实体提供服务。还可以依据社区云模型来提供云服务,其中云基础设施系统1102和由云基础设施系统1102提供的服务由相关社区中的若干组织共享。云服务还可以依据混合云模型被提供,该混合云模型是两个或更多个不同模型的组合。
在一些实施例中,由云基础设施系统1102提供的服务可以包括在软件即服务(SaaS)类别、平台即服务(PaaS)类别、基础设施即服务(IaaS)类别或包括混合服务的其它服务类别下提供的一个或多个服务。客户经由订阅订单可以订购由云基础设施系统1102提供的一个或多个服务。云基础设施系统1102然后执行处理以提供客户的订阅订单中的服务。
在一些实施例中,由云基础设施系统1102提供的服务可以包括但不限于应用服务、平台服务和基础设施服务。在一些示例中,应用服务可以由云基础设施系统经由SaaS平台提供。SaaS平台可以被配置为提供落入SaaS类别的云服务。例如,SaaS平台可以提供在集成开发和部署平台上构建和递送按需应用套件的能力。SaaS平台可以管理和控制用于提供SaaS服务的底层软件和基础设施。通过利用由SaaS平台提供的服务,客户可以利用在云基础设施系统上执行的应用。客户可以获取应用服务,而无需客户购买单独的许可和支持。可以提供各种不同的SaaS服务。示例包括但不限于为大型组织提供销售绩效管理、企业集成和业务灵活性的解决方案的服务。
在一些实施例中,平台服务可以由云基础设施系统经由PaaS平台提供。PaaS平台可以被配置为提供落入PaaS类别的云服务。平台服务的示例可以包括但不限于使组织(诸如Oracle)能够在共享的公共体系架构上整合现有应用以及充分利用平台提供的共享服务来构建新应用的能力的服务。PaaS平台可以管理和控制用于提供PaaS服务的底层软件和基础设施。客户可以获取由云基础架构系统提供的PaaS服务,而无需客户购买单独的许可和支持。平台服务的示例包括但不限于Oracle Java云服务(JCS)、Oracle数据库云服务(DBCS)等。
通过利用由PaaS平台提供的服务,客户可以采用由云基础设施系统支持的编程语言和工具,并且还控制所部署的服务。在一些实施例中,由云基础设施系统提供的平台服务可以包括数据库云服务、中间件云服务(例如,Oracle融合中间件服务)和Java云服务。在一个实施例中,数据库云服务可以支持共享服务部署模型,该模型使得组织能够汇集数据库资源并且以数据库云的形式向客户供应数据库即服务。在云基础设施系统中,中间件云服务可以为客户提供开发和部署各种业务应用的平台,并且Java云服务可以为客户提供部署Java应用的平台。
各种不同的基础设施服务可以由云基础设施系统中的IaaS平台提供。基础设施服务促进底层计算资源(诸如存储装置、网络和其它基础计算资源)的管理和控制,以供客户利用由SaaS平台和PaaS平台提供的服务。
在某些实施例中,云基础设施系统1102还可以包括基础设施资源1130,用于向云基础设施系统的客户提供用于提供各种服务的资源。在一个实施例中,基础设施资源1130可以包括预先集成和优化的硬件(诸如服务器、存储装置和联网资源)的组合,以执行由PaaS平台和SaaS平台提供的服务。
在一些实施例中,云基础设施系统1102中的资源可以由多个用户共享并且根据需要动态重新分配。此外,可以将资源分配给在不同时区的用户。例如,云基础设施系统1130可以使在第一时区中的第一组用户能够在指定的小时数内利用云基础设施系统的资源,并且然后使相同资源能够被重新分配给位于不同时区的另一组用户,从而使资源的利用率最大化。
在某些实施例中,可以提供由云基础设施系统1102的不同部件或模块以及由云基础设施系统1102提供的服务共享的多个内部共享服务1132。这些内部共享服务可以包括但不限于:安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。
在某些实施例中,云基础设施系统1102可以提供云基础设施系统中的云服务(例如,SaaS、PaaS和IaaS服务)的综合管理。在一个实施例中,云管理功能可以包括用于供应、管理和跟踪由云基础设施系统1102接收到的客户订阅等的能力。
在一个实施例中,如图中所绘出的,云管理功能可以由一个或多个模块提供,诸如订单管理模块1120、订单编排模块1122、订单供应模块1124、订单管理和监视模块1126,以及身份管理模块1128。这些模块可以包括一个或多个计算机和/或服务器或者使用一个或多个计算机和/或服务器来提供,这些计算机和/或服务器可以是通用计算机、专用服务器计算机、服务器场、服务器集群或任何其它适当的布置和/或组合。
在示例性操作1134中,使用客户端设备(诸如客户端设备1104、1106或1108)的客户可以通过请求由云基础设施系统1102提供的一个或多个服务并且下订阅由云基础设施系统1102供应的一个或多个服务来的订单来与云基础设施系统1102交互。在某些实施例中,客户可以访问云用户界面(UI)(云UI 1112、云UI 1114和/或云UI1116)并经由这些UI下订阅订单。云基础设施系统1102响应于客户下订单而接收到的订单信息可以包括识别客户以及客户想要订阅的云基础设施系统1102供应的一个或多个服务的信息。
在客户下订单之后,经由云UI 1112、1114和/或1116接收订单信息。
在操作1136处,订单存储在订单数据库1118中。订单数据库1118可以是由云基础设施系统1118操作和与其它系统元件一起操作的若干数据库之一。
在操作1138处,订单信息被转发到订单管理模块1120。在一些情况下,订单管理模块1120可以被配置为执行与订单相关的计费和记账功能,诸如验证订单、以及在验证后预订订单。
在操作1140处,将关于订单的信息传送到订单编排模块1122。订单编排模块1122可以利用订单信息为客户下的订单编排服务和资源的供应。在一些情况下,订单编排模块1122可以使用订单供应模块1124的服务来编排资源的供应以支持所订阅的服务。
在某些实施例中,订单编排模块1122使得能够管理与每个订单相关联的业务过程并应用业务逻辑来确定订单是否应该进行到供应。在操作1142处,在接收到新订阅的订单时,订单编排模块1122向订单供应模块1124发送分配资源并配置履行订阅订单所需的那些资源的请求。订单供应模块1124使得能够为客户订购的服务分配资源。订单供应模块1124提供在由云基础设施系统1100提供的云服务和用于供应用于提供所请求的服务的资源的物理实现层之间的抽象层。因此,订单编排模块1122可以与实现细节(诸如服务和资源是否实际上即时供应或预先供应并仅在请求后才分配/指派)隔离。
在操作1144处,一旦供应了服务和资源,就可以通过云基础设施系统1102的订单供应模块1124向客户端设备1104、1106和/或1108上的客户发送所提供的服务的通知。
在操作1146处,订单管理和监视模块1126可以管理和跟踪客户的订阅订单。在一些情况下,订单管理和监视模块1126可以被配置为收集订阅订单中的服务的使用统计信息,诸如,所使用的存储量、传输的数据量、用户的数量,以及系统运行时间量和系统停机时间量。
在某些实施例中,云基础设施系统1100可以包括身份管理模块1128。身份管理模块1128可以被配置为提供身份服务,诸如云基础设施系统1100中的访问管理和授权服务。在一些实施例中,身份管理模块1128可以控制关于希望利用由云基础设施系统1102提供的服务的客户的信息。这样的信息可以包括认证这些客户的身份的信息以及描述这些客户被授权相对于各种系统资源(例如,文件、目录、应用、通信端口、存储器段等)执行哪些动作的信息。身份管理模块1128还可以包括对关于每个客户的描述性信息以及关于可以如何和由谁来访问和修改这些描述性信息的管理。
图12示出了其中可以实现本发明的各种实施例的示例性计算机系统1200。系统1200可以用于实现上述任何计算机系统。如图所示,计算机系统1200包括经由总线子系统1202与多个外围子系统通信的处理单元1204。这些外围子系统可以包括处理加速单元1206、I/O子系统1208、存储子系统1218和通信子系统1224。存储子系统1218包括有形计算机可读存储介质1222和系统存储器1210。
总线子系统1202提供用于让计算机系统1200的各种部件和子系统按意图彼此通信的机制。虽然总线子系统1202被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统1202可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围部件互连(PCI)总线,其可以被实现为按IEEE P1386.1标准制造的Mezzanine总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元1204控制计算机系统1200的操作。一个或多个处理器可以被包括在处理单元1204中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元1204可以被实现为一个或多个独立的处理单元1232和/或1234,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元1204也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例中,处理单元1204可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器1204中和/或存储子系统1218中。通过适当的编程,(一个或多个)处理器1204可以提供上述各种功能。计算机系统1200可以附加地包括处理加速单元1206,其可以包括数字信号处理器(DSP)、专用处理器,等等。
I/O子系统1208可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或手势识别设备,诸如的Microsoft
Figure BDA0002462780550000261
运动传感器,其使得用户能够使用手势和语音命令通过自然用户接口来控制诸如的Microsoft
Figure BDA0002462780550000262
360游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为到输入设备(例如,Google
Figure BDA0002462780550000263
)中的输入的Google
Figure BDA0002462780550000264
眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,
Figure BDA0002462780550000265
导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括但不限于三维(3D)鼠标、操纵杆或指向棒、游戏面板和绘图板,以及音频/视频设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括,例如,医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括,例如,诸如MIDI键盘、数字乐器等的音频输入设备。
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器,等等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏,等等。一般而言,术语“输出设备”的使用意在包括用于从计算机系统1200向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括,但不限于,可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备,以及调制解调器。
计算机系统1200可以包括包含软件元件、被示为当前位于系统存储器1210中的存储子系统1218。系统存储器1210可以存储可加载并且可在处理单元1204上执行的程序指令,以及在这些程序的执行期间所产生的数据。
取决于计算机系统1200的配置和类型,系统存储器1210可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常包含可被处理单元1204立即访问和/或目前正被处理单元1204操作和执行的数据和/或程序模块。在一些实现方案中,系统存储器1210可以包括多种不同类型的存储器,例如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实现方案中,诸如包含有助于在启动期间在计算机系统1200的元件之间传送信息的基本例程的基本输入/输出系统(BIOS),通常可以被存储在ROM中。作为示例,但不是限制,系统存储器1210也示出了可以包括客户端应用、web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序1212,程序数据1214,以及操作系统1216。作为示例,操作系统1216可以包括各种版本的Microsoft
Figure BDA0002462780550000281
Apple
Figure BDA0002462780550000282
和/或Linux操作系统、各种可商业获得的
Figure BDA0002462780550000283
或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google
Figure BDA0002462780550000284
OS操作系统等)和/或诸如iOS、
Figure BDA0002462780550000285
Phone、
Figure BDA0002462780550000286
OS、
Figure BDA0002462780550000287
10OS和
Figure BDA0002462780550000288
OS操作系统的移动操作系统。
存储子系统1218也可以提供用于存储提供一些实施例的功能的基本编程和数据结构的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统1218中。这些软件模块或指令可以被处理单元1204执行。存储子系统1218也可以提供用于存储根据本发明被使用的数据的储存库。
存储子系统1200也可以包括可被进一步连接到计算机可读存储介质1222的计算机可读存储介质读取器1220。与系统存储器1210一起并且,可选地,与其相结合,计算机可读存储介质1222可以全面地表示用于临时和/或更持久地包含、存储、发送和检索计算机可读信息的远程、本地、固定和/或可移除存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质1222也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于,以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学储存器、磁带盒、磁带、磁盘储存器或其它磁存储设备,或者其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输,或者可以被用来发送期望信息并且可以被计算系统1200访问的任何其它介质。
作为示例,计算机可读存储介质1222可以包括从不可移除的非易失性磁介质读取或写到其的硬盘驱动器、从可移除的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移除的非易失性光盘(诸如CD ROM、DVD和
Figure BDA0002462780550000291
盘或其它光学介质)读取或写到其的光盘驱动器。计算机可读存储介质1222可以包括,但不限于,
Figure BDA0002462780550000292
驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带,等等。计算机可读存储介质1222也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM)、基于DRAM的SSD,磁阻RAM(MRAM)SSD,以及使用基于DRAM和闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统1200提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
通信子系统1224提供到其它计算机系统和网络的接口。通信子系统1224用作用于从其它系统接收数据和从计算机系统1200向其它系统发送数据的接口。例如,通信子系统1224可以使计算机系统1200能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统1224可以包括用于访问无线语音和/或数据网络的射频(RF)收发器部件(例如,使用蜂窝电话技术,诸如3G、4G或EDGE(用于全球演进的增强型数据速率)的先进数据网络技术,WiFi(IEEE 802.11系列标准),或其它移动通信技术,或其任意组合)、全球定位系统(GPS)接收器部件和/或其它部件。在一些实施例中,作为无线接口的附加或者替代,通信子系统1224可以提供有线网络连接(例如,以太网)。
在一些实施例中,通信子系统1224也可以代表可以使用计算机系统1200的一个或多个用户接收结构化和/或非结构化数据馈送1226、事件流1228、事件更新1230等形式的输入通信。
作为示例,通信子系统1224可被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送1226,诸如
Figure BDA0002462780550000293
馈送、
Figure BDA0002462780550000301
更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统1224也可被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流1228和/或事件更新1230。产生连续数据的应用的示例可以包括,例如,传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视,等等。
通信子系统1224也可被配置为向一个或多个数据库输出结构化和/或非结构化数据馈送1226、事件流1228、事件更新1230,等等,这一个或多个数据库可以与耦合到计算机系统1200的一个或多个流式数据源计算机通信。
计算机系统1200可以是各种类型之一,包括手持便携式设备(例如,
Figure BDA0002462780550000302
蜂窝电话、
Figure BDA0002462780550000303
计算平板电脑、PDA)、可穿戴设备(例如,Google
Figure BDA0002462780550000304
头戴式显示器)、PC、工作站、大型机、信息站、服务器机架、或任何其它数据处理系统。
由于计算机和网络的不断变化的本质,在图中绘出的计算机系统2000的描述仅仅要作为具体的示例。具有比图中绘出的系统更多或更少部件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元素可以用硬件、固件、软件(包括applets)或其组合来实现。另外,也可以采用到诸如网络输入/输出设备之类的其它计算设备的连接。基于本文提供的公开内容和示教,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
在前面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的各种实施例的透彻理解。然而,对于本领域技术人员清楚的是,可以在没有这些具体细节中的一些的情况下实践本发明的实施例。在其它情况下,以框图形式示出了众所周知的结构和设备。
以上描述仅提供示例性实施例,并且不旨在限制本公开的范围、适用性或配置。更确切地说,示例性实施例的前述描述将为本领域技术人员提供用于实现示例性实施例的使能描述。应当理解的是,在不脱离所附权利要求中阐述的本发明的精神和范围的情况下,可以对元件的功能和布置进行各种改变。
在前面的描述中给出了具体细节以提供对实施例的透彻理解。然而,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实践这些实施例。例如,电路、系统、网络、处理和其它部件可能已经以框图形式示出为部件,以免用不必要的细节模糊实施例。在其它情况下,可能已经示出了众所周知的电路、处理、算法、结构和技术而没有不必要的细节,以避免模糊实施例。
而且,要注意的是,各个实施例可能已被描述为处理,该处理被描绘为流程图、数据流程图、结构图或框图。虽然流程图可能已将操作描述为顺序处理,但许多操作可以并行或同时执行。此外,可以重新布置操作的次序。处理在其操作完成时终止,但可以有其它未包含在图中的步骤。处理可以与方法、函数、过程、子例程、子程序等对应。当处理与函数对应时,其终止可以与函数返回到调用函数或主函数对应。
术语“计算机可读介质”包括但不限于便携式或固定存储设备、光学存储设备、无线信道以及能够存储、包含或携带(一个或多个)指令和/或数据的各种其它介质。代码段或机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类或指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的手段传递、转发或发送,包括存储器共享、消息传递、令牌传递、网络传输等。
此外,实施例可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当在软件、固件、中间件或微代码中实现时,用于执行必要任务的程序代码或代码段可以存储在机器可读介质中。处理器可以执行必要的任务。
在前述说明书中,参考其具体实施例对本发明的各方面进行了描述,但是本领域技术人员将认识到的是,本发明不限于此。上述公开的各个特征和方面可以被单独使用或联合使用。另外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的那些环境和应用之外的任何数目的环境和应用中被使用。相应地,本说明书和附图应当被认为是说明性的而不是限制性的。
此外,出于说明的目的,以特定顺序描述了方法。应该认识到的是,在替代实施例中,可以以与所描述的顺序不同的顺序执行方法。还应该认识到的是,上述方法可以由硬件部件执行,或者可以以机器可执行指令的序列被实施,机器可执行指令可以用于使机器(诸如编程有指令的通用或专用处理器或逻辑电路)执行方法。这些机器可执行指令可以被存储在一个或多个机器可读介质上,诸如CD-ROM或其它类型的光盘、软盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡、闪存、或适合于存储电子指令的其它类型的机器可读介质。替代地,可以通过硬件和软件的组合来执行方法。

Claims (20)

1.一种使用容器隔离租户以在多租户环境中服务请求的方法,所述方法包括:
接收对由第一租户提供的第一服务的第一请求;
在多租户环境中选择空容器;
将实现第一服务的第一配置加载到所述容器中;
从所述容器服务第一请求;
接收对由第二租户提供的第二服务的第二请求;
从所述容器中冲洗第一配置;以及
从所述容器服务第二请求。
2.如权利要求1所述的方法,其中所述容器是在多租户环境中被实例化以服务来自客户端设备的请求的多个容器之一。
3.如权利要求1所述的方法,其中所述第一配置包括存储器中能够由所述第一服务使用的堆的大小。
4.如权利要求1所述的方法,其中在从所述容器冲洗所述第一配置之后,所述容器包括具有嵌入式服务器和内部端点的运行时进程。
5.如权利要求4所述的方法,其中所述内部端点由所述多租户环境中的路由器调用以服务所述第二请求。
6.如权利要求1所述的方法,其中所述第一配置包括被链接在一起以服务请求的多个动作。
7.如权利要求1所述的方法,其中所述多租户环境阻止所述容器同时服务与不同租户相关联的请求。
8.如权利要求1所述的方法,其中所述多租户环境允许所述容器同时服务与单个租户相关联的请求。
9.如权利要求1所述的方法,还包括:
接收对由所述第二租户提供的所述第二服务的第三请求;
从所述容器服务所述第三请求,而无需从所述容器中冲洗所述第二配置。
10.如权利要求1所述的方法,其中所述第一服务包括使得通过所述多租户环境可用的公共API。
11.一种包括指令的非暂态计算机可读介质,所述指令在由一个或多个处理器执行时,使所述一个或多个处理器执行包括以下的操作:
接收对由第一租户提供的第一服务的第一请求;
在多租户环境中选择空容器;
将实现第一服务的第一配置加载到容器中;
从容器服务第一请求;
接收对由第二租户提供的第二服务的第二请求;
从容器中冲洗第一配置;以及
从容器服务第二请求。
12.如权利要求11所述的非暂态计算机可读媒体,其中所述第一配置包括存储器中能够由所述第一服务使用的堆的大小。
13.如权利要求11所述的非暂态计算机可读介质,其中在从所述容器冲洗所述第一配置之后,所述容器包括具有嵌入式服务器和内部端点的运行时进程。
14.如权利要求13所述的非暂态计算机可读媒体,其中所述内部端点由所述多租户环境中的路由器调用以服务所述第二请求。
15.如权利要求11所述的非暂态计算机可读介质,其中所述第一配置包括被链接在一起以服务请求的多个动作。
16.一种系统,包括:
一个或多个处理器;以及
包括指令的一个或多个存储器设备,所述指令在由一个或多个处理器执行时,使所述一个或多个处理器执行包括以下的操作:
接收对由第一租户提供的第一服务的第一请求;
在多租户环境中选择空容器;
将实现第一服务的第一配置加载到所述容器中;
从所述容器服务第一请求;
接收对由第二租户提供的第二服务的第二请求;
从所述容器中冲洗第一配置;以及
从所述容器服务第二请求。
17.如权利要求16所述的系统,其中所述第一配置包括存储器中能够由所述第一服务使用的堆的大小。
18.如权利要求16所述的系统,其中在从所述容器冲洗所述第一配置之后,所述容器包括具有嵌入式服务器和内部端点的运行时进程。
19.如权利要求18所述的系统,其中所述内部端点由所述多租户环境中的路由器调用以服务所述第二请求。
20.如权利要求16所述的系统,其中所述第一配置包括被链接在一起以服务请求的多个动作。
CN201880068977.3A 2017-09-30 2018-09-28 利用微服务容器在多租户api网关中提供租户隔离 Active CN111279314B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762566431P 2017-09-30 2017-09-30
US201762566422P 2017-09-30 2017-09-30
US201762566435P 2017-09-30 2017-09-30
US62/566,431 2017-09-30
US62/566,435 2017-09-30
US62/566,422 2017-09-30
PCT/US2018/053622 WO2019068033A1 (en) 2017-09-30 2018-09-28 OPERATION OF MICROSERVICE CONTAINERS TO PROVIDE TENANT INSULATION IN A MULTI-TENANT API BRIDGE

Publications (2)

Publication Number Publication Date
CN111279314A true CN111279314A (zh) 2020-06-12
CN111279314B CN111279314B (zh) 2024-10-01

Family

ID=64017447

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880068977.3A Active CN111279314B (zh) 2017-09-30 2018-09-28 利用微服务容器在多租户api网关中提供租户隔离

Country Status (5)

Country Link
US (3) US10740112B2 (zh)
EP (1) EP3688586B1 (zh)
JP (2) JP7202369B2 (zh)
CN (1) CN111279314B (zh)
WO (1) WO2019068033A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111708588A (zh) * 2020-06-15 2020-09-25 东莞中国科学院云计算产业技术创新与育成中心 云平台资源处理方法、装置、计算机设备和存储介质
CN112631739A (zh) * 2021-03-09 2021-04-09 北京世纪好未来教育科技有限公司 容器控制方法及装置、介质、计算机设备
CN112765678A (zh) * 2020-12-30 2021-05-07 南京南瑞继保工程技术有限公司 一种电力市场安全校核方法及系统
CN113282373A (zh) * 2021-06-03 2021-08-20 青岛海尔科技有限公司 用于分布式并发应用服务的方法、装置和设备
CN113489809A (zh) * 2021-09-08 2021-10-08 广州易方信息科技股份有限公司 微服务的数据传输方法、结构以及计算机设备
CN113612798A (zh) * 2021-08-24 2021-11-05 京东科技控股股份有限公司 服务数据处理方法、装置、设备和介质
CN113849273A (zh) * 2021-09-26 2021-12-28 北京百度网讯科技有限公司 接入处理的方法、设备、存储介质及程序产品
CN114390110A (zh) * 2021-12-31 2022-04-22 华南理工大学 一种带约束的可扩展资源供给的多租户系统、方法和设备
CN115866062A (zh) * 2023-02-07 2023-03-28 长沙市中智信息技术开发有限公司 用于多租户架构中大数据实时汇集存储方法及装置

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11581086B2 (en) 2017-09-12 2023-02-14 Get Together Inc System and method for delivering a digital therapeutic specific to a users EMS and profile
JP7202369B2 (ja) * 2017-09-30 2023-01-11 オラクル・インターナショナル・コーポレイション マルチテナントapiゲートウェイにおいてテナント分離を提供するためのマイクロサービスコンテナの活用
US10761875B1 (en) * 2018-12-13 2020-09-01 Amazon Technologies, Inc. Large scale compute instance launching
US10812619B2 (en) * 2019-02-19 2020-10-20 Ingram Micro Inc. System and method for bulk user service assignment using CSV
US11010149B2 (en) * 2019-04-03 2021-05-18 International Business Machines Corporation Shared middleware layer containers
CN111835805B (zh) * 2019-04-19 2022-09-16 厦门网宿有限公司 一种dpvs多租户的配置方法及系统
US10938691B1 (en) 2019-08-28 2021-03-02 Red Hat, Inc. Detection and cleanup of unused microservices
US11853806B2 (en) * 2019-09-27 2023-12-26 Cloudflare, Inc. Cloud computing platform that executes third-party code in a distributed cloud computing network and uses a distributed data store
US11188386B2 (en) * 2019-11-01 2021-11-30 Sap Portals Israel Ltd. Lightweight remote process execution
US11722356B2 (en) * 2020-01-09 2023-08-08 Vmware, Inc. Enabling integration of solutions with software-defined networking platform
US10949198B1 (en) * 2020-01-24 2021-03-16 Clarence Yandell Weston Online platform for facilitating the development of software applications based on an executable statechart
US11765235B2 (en) 2020-03-12 2023-09-19 Samsung Electronics Co., Ltd. System and method of disk sharing for cloud content storage
US11614957B1 (en) * 2020-05-07 2023-03-28 Amazon Technologies, Inc. Native-hypervisor based on-demand code execution system
CN113783712A (zh) * 2020-06-09 2021-12-10 中兴通讯股份有限公司 默认网关管理方法、网关管理器、服务器及存储介质
CN111782185B (zh) * 2020-06-30 2024-01-09 北京百度网讯科技有限公司 人工智能开发平台的管理方法及设备、介质
US11070621B1 (en) * 2020-07-21 2021-07-20 Cisco Technology, Inc. Reuse of execution environments while guaranteeing isolation in serverless computing
US11513875B2 (en) * 2020-08-28 2022-11-29 Ncr Corporation Multiplatform microservice connection techniques
US20220066765A1 (en) * 2020-09-03 2022-03-03 Banque Nationale Du Canada Systems and methods for executing dynamic code in a software container
CN112835571B (zh) * 2021-01-29 2022-05-17 宝宝巴士股份有限公司 一种基于Laravel框架的RESTful API代码的自动生成方法
US20220253342A1 (en) * 2021-02-09 2022-08-11 Red Hat, Inc. Dynamic containerized content delivery
US20220261270A1 (en) * 2021-02-17 2022-08-18 Connectify, Inc. Reusing software application containers
US11611453B2 (en) * 2021-02-25 2023-03-21 Red Hat, Inc. Network interface provisioning of containerized instances based on tenant policies
US11546307B2 (en) * 2021-04-20 2023-01-03 Sap Se Method to implement multi-tenant/shared Redis cluster using envoy
US11782767B2 (en) * 2021-04-26 2023-10-10 Oracle International Corporation Techniques for consistent multi-tenant behavior in microservices based applications
US20220385575A1 (en) 2021-05-27 2022-12-01 Cisco Technology, Inc. Encoding end-to-end tenant reachability information in border gateway protocol (bgp) communities
US11693766B2 (en) * 2021-06-15 2023-07-04 International Business Machines Corporation Resource allocation in microservice architectures
CN113535396B (zh) * 2021-07-14 2023-08-15 西藏宁算科技集团有限公司 一种云端应用无服务架构实现系统及方法
US11609702B2 (en) * 2021-08-19 2023-03-21 Dell Products L.P. Intelligent storage allocation based on workspace context in a ZFS environment
CN113852669B (zh) * 2021-09-03 2024-01-12 紫光云(南京)数字技术有限公司 一种适应多种网络环境的高效的容器集群部署方法
CN114385126B (zh) * 2022-03-24 2022-06-21 山东省计算中心(国家超级计算济南中心) 一种基于K8s的多租户深度学习模型研发系统及方法
CN114650279B (zh) * 2022-03-25 2023-10-03 阿里巴巴(中国)有限公司 实例处理方法及系统
US20240037147A1 (en) * 2022-08-01 2024-02-01 Kong Inc. Microservices application service hub

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150006609A1 (en) * 2013-06-27 2015-01-01 Microsoft Corporation Endpoint data centers of different tenancy sets
CN105323282A (zh) * 2014-07-28 2016-02-10 神州数码信息系统有限公司 一种面向多租户的企业应用部署与管理系统
US9672140B1 (en) * 2015-12-28 2017-06-06 Sap Se Processing special requests at dedicated application containers

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779389B2 (en) * 2005-12-30 2010-08-17 Sap Ag System and method for dynamic VM settings
US8661056B1 (en) * 2008-11-03 2014-02-25 Salesforce.Com, Inc. System, method and computer program product for publicly providing web content of a tenant using a multi-tenant on-demand database service
US8627426B2 (en) * 2010-04-26 2014-01-07 Vmware, Inc. Cloud platform architecture
US9104514B2 (en) * 2011-01-11 2015-08-11 International Business Machines Corporation Automated deployment of applications with tenant-isolation requirements
US8819210B2 (en) 2011-12-06 2014-08-26 Sap Portals Israel Ltd Multi-tenant infrastructure
JP5799787B2 (ja) 2011-12-09 2015-10-28 コニカミノルタ株式会社 分散アプリケーションプログラムおよび分散アプリケーションシステム
US9973566B2 (en) * 2013-11-17 2018-05-15 Nimbix, Inc. Dynamic creation and execution of containerized applications in cloud computing
US9104456B2 (en) 2013-03-14 2015-08-11 Joyent, Inc. Zone management of compute-centric object stores
US10193963B2 (en) * 2013-10-24 2019-01-29 Vmware, Inc. Container virtual machines for hadoop
US9471353B1 (en) 2014-03-21 2016-10-18 Amazon Technologies, Inc. Isolating tenants executing in multi-tenant software containers
US10073679B2 (en) * 2014-09-26 2018-09-11 Oracle International Corporation Efficient and intuitive databinding for mobile applications
US9256467B1 (en) 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US9954936B2 (en) 2015-03-02 2018-04-24 International Business Machines Corporation Migrating legacy applications to a multi-tenant computing environment
US9946573B2 (en) * 2015-05-20 2018-04-17 Oracle International Corporation Optimizing virtual machine memory sizing for cloud-scale application deployments
US9781124B2 (en) 2015-06-11 2017-10-03 International Business Machines Corporation Container-based system administration
US10261782B2 (en) * 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
US10892942B2 (en) * 2016-01-22 2021-01-12 Equinix, Inc. Container-based cloud exchange disaster recovery
US10089146B2 (en) * 2016-03-31 2018-10-02 International Business Machines Corporation Workload balancing for storlet infrastructure
CN109154849B (zh) * 2016-05-23 2023-05-12 W·特纳 包括核心层、用户接口和配备有基于容器的用户空间的服务层的超融合系统
KR20170139872A (ko) 2016-06-10 2017-12-20 삼성에스디에스 주식회사 멀티 테넌트 기반의 서비스 제공 시스템 및 방법
US11042450B2 (en) * 2016-07-28 2021-06-22 International Business Machines Corporation Mechanism for managing container runtime state
US10664320B2 (en) * 2017-08-03 2020-05-26 Red Hat, Inc. Host specific containerized application configuration generation
JP7202369B2 (ja) 2017-09-30 2023-01-11 オラクル・インターナショナル・コーポレイション マルチテナントapiゲートウェイにおいてテナント分離を提供するためのマイクロサービスコンテナの活用

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150006609A1 (en) * 2013-06-27 2015-01-01 Microsoft Corporation Endpoint data centers of different tenancy sets
CN105323282A (zh) * 2014-07-28 2016-02-10 神州数码信息系统有限公司 一种面向多租户的企业应用部署与管理系统
US9672140B1 (en) * 2015-12-28 2017-06-06 Sap Se Processing special requests at dedicated application containers

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111708588A (zh) * 2020-06-15 2020-09-25 东莞中国科学院云计算产业技术创新与育成中心 云平台资源处理方法、装置、计算机设备和存储介质
CN111708588B (zh) * 2020-06-15 2023-03-21 东莞中国科学院云计算产业技术创新与育成中心 云平台资源处理方法、装置、计算机设备和存储介质
CN112765678A (zh) * 2020-12-30 2021-05-07 南京南瑞继保工程技术有限公司 一种电力市场安全校核方法及系统
CN112631739A (zh) * 2021-03-09 2021-04-09 北京世纪好未来教育科技有限公司 容器控制方法及装置、介质、计算机设备
CN113282373A (zh) * 2021-06-03 2021-08-20 青岛海尔科技有限公司 用于分布式并发应用服务的方法、装置和设备
CN113612798A (zh) * 2021-08-24 2021-11-05 京东科技控股股份有限公司 服务数据处理方法、装置、设备和介质
CN113489809A (zh) * 2021-09-08 2021-10-08 广州易方信息科技股份有限公司 微服务的数据传输方法、结构以及计算机设备
CN113849273A (zh) * 2021-09-26 2021-12-28 北京百度网讯科技有限公司 接入处理的方法、设备、存储介质及程序产品
CN113849273B (zh) * 2021-09-26 2024-06-28 北京百度网讯科技有限公司 接入处理的方法、设备、存储介质及程序产品
CN114390110A (zh) * 2021-12-31 2022-04-22 华南理工大学 一种带约束的可扩展资源供给的多租户系统、方法和设备
CN114390110B (zh) * 2021-12-31 2023-08-22 华南理工大学 一种带约束的可扩展资源供给的多租户系统、方法和设备
CN115866062A (zh) * 2023-02-07 2023-03-28 长沙市中智信息技术开发有限公司 用于多租户架构中大数据实时汇集存储方法及装置

Also Published As

Publication number Publication date
WO2019068033A1 (en) 2019-04-04
US20220164197A1 (en) 2022-05-26
CN111279314B (zh) 2024-10-01
US20190102206A1 (en) 2019-04-04
JP7566000B2 (ja) 2024-10-11
JP2020536312A (ja) 2020-12-10
US11275593B2 (en) 2022-03-15
JP2023036828A (ja) 2023-03-14
JP7202369B2 (ja) 2023-01-11
EP3688586A1 (en) 2020-08-05
US10740112B2 (en) 2020-08-11
US11907732B2 (en) 2024-02-20
US20210026703A1 (en) 2021-01-28
EP3688586B1 (en) 2024-08-21

Similar Documents

Publication Publication Date Title
US11907732B2 (en) Leveraging microservice containers to provide tenant isolation in a multi-tenant API gateway
CN109478266B (zh) 对于数据库供应的资源分配
US10142174B2 (en) Service deployment infrastructure request provisioning
US10979318B2 (en) Enhancing resource allocation for application deployment
US9912609B2 (en) Placement policy-based allocation of computing resources
EP3177997B1 (en) Policy based resource management and allocation system
US10909186B2 (en) Multi-tenant customizable composites
US10244070B2 (en) In-memory message sequencing
US10223024B2 (en) Storage controller for provisioning storage services for an application based upon application-specific requirements
KR102313789B1 (ko) 이종 전자 디바이스들에 대한 애플리케이션 배포물의 구분
US20150161547A1 (en) Methods and systems to define and execute customer declarative business rules to extend business applications
US12007957B2 (en) Database connection refresh for server instances and live database updates
WO2016022925A2 (en) Policy based resource management and allocation system
US11921726B2 (en) Logical partitions via header-based partition filtering
US20220114157A1 (en) Lock management for distributed application pods
US9430319B2 (en) Traffic capacity based optimization of SOA fault recovery using linear programming model

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