CN114930788A - 安全地处理多租户容器中的集成消息流 - Google Patents
安全地处理多租户容器中的集成消息流 Download PDFInfo
- Publication number
- CN114930788A CN114930788A CN202080091385.0A CN202080091385A CN114930788A CN 114930788 A CN114930788 A CN 114930788A CN 202080091385 A CN202080091385 A CN 202080091385A CN 114930788 A CN114930788 A CN 114930788A
- Authority
- CN
- China
- Prior art keywords
- message
- tenant container
- application
- processed
- container
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 93
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000004590 computer program Methods 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims description 13
- 238000012544 monitoring process Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 8
- 238000013515 script Methods 0.000 claims description 3
- 230000010354 integration Effects 0.000 description 76
- 238000010586 diagram Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 16
- 238000007726 management method Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/301—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种用于安全地处理多租户容器中的集成消息流的计算机实现的方法、系统和计算机程序产品。监视要由多租户容器中的应用程序处理的消息流中的每一步。如果确定被监视步骤运行以通用编程语言的定制逻辑,并且如果在容器中存在由其他应用程序处理的其他消息流,则暂停运行这种定制逻辑的消息流,使其不被容器中的应用程序处理。此外,防止新的消息流被容器中的应用程序处理。在由容器中的其他应用程序处理其他消息流之后,暂停的消息流现在由容器中的应用程序处理。以此方式,避免了干扰容器中的其他消息流的风险。
Description
技术领域
本发明的实施例总体上涉及多租户环境,并且更具体地涉及安全地处理多租户容器中的集成消息流。
背景技术
多租户环境涉及由在服务器上运行的软件的单个实例服务的多个租户(例如,多组用户)。租户是共享具有对软件实例的特定特权的公共访问的一组用户。利用多租户架构,软件应用程序被设计成向每租户提供实例的专用共享——包括其数据、配置、用户管理、租户个体功能和非功能属性。因此,租户所使用的资源可跨租户共享。例如,多个不同的租户可以利用相同的资源,这通常被称为“多租户配置”。即,“多租户配置”是指要在不同租户之间共享的资源的分配。
发明内容
在本发明的一个实施例中,一种用于安全处理多租户容器中的集成消息流的计算机实现的方法,包括监视要由所述多租户容器中的多个应用程序处理的多个消息流中的每个步骤,其中,所述多租户容器存储用于多个租户的处理消息流的应用程序。该方法还包括确定多个消息流中的每个步骤是否运行以通用编程语言的定制逻辑。该方法还包括:响应于检测到运行以所述通用编程语言的定制逻辑的所述消息流,以及响应于由所述多租户容器中的其他应用程序处理的其他消息流,暂停所述消息流使其不被所述多租户容器中的应用程序处理。此外,该方法包括响应于暂停消息流使其不被所述多租户容器中的应用程序处理,防止新消息流由多租户容器中的应用程序处理。此外,该方法包括在多租户容器中的其他应用程序对其他消息流的处理已经完成之后,由多租户容器中的应用程序处理暂停的消息流。
上述方法的实施例的其他形式是在系统和计算机程序产品中。
前述内容已经相当概括地概述了本发明的一个或多个实施例的特征和技术优点,以便可以更好地理解下文对本发明的详细描述。下面将描述本发明的实施例的附加特征和优点,这些特征和优点可以形成本发明的权利要求的主题。
附图说明
当结合以下附图考虑以下详细描述时可以获得对本发明的实施例的更好理解,在附图中:
图1示出了根据本发明实施例的多租户环境;
图2示出代表用于实施本发明的硬件环境的服务器的硬件配置的本发明的实施例;
图3是根据本发明实施例的用于在多租户环境中安全地处理集成消息流的服务器的软件组件的示图;
图4是根据本发明实施例的用于安全地处理多租户容器中的集成消息流的方法的流程图;
图5是根据本发明实施例的用于处理运行通用编程语言中的定制逻辑的多个集成消息流的方法的流程图;
图6是根据本发明实施例的用于基于在消息流中检测到的模式将消息流引导到容器的方法的流程图;
图7描绘了云计算环境的一个实施例,它可以实现本发明的一个或多个方面或与其结合使用;以及
图8根据本发明的一个或多个方面描绘了提取模型层的一个实例,其可以促进或实现映射过程。
具体实施方式
如背景技术部分所述,多租户环境涉及由在服务器上运行的软件的单个实例服务的多个租户(例如,用户组)。租户是共享具有对软件实例的特定特权的公共访问的一组用户。利用多租户架构,软件应用程序被设计成向每租户提供实例的专用共享——包括其数据、配置、用户管理、租户个体功能和非功能属性。因此,租户所使用的资源可跨租户共享。例如,多个不同的租户可以利用相同的资源,这通常被称为“多租户配置”。即,“多租户配置”是指要在不同租户之间共享的资源的分配。
结合多租户配置,代表不同租户待处理的消息流可以由同一容器内的应用程序处理。这样的消息流被称为“集成”,因为它们将由同一容器内的应用程序处理。
如本文使用的,“容器”是指隔离的用户空间实例。例如,操作系统级虚拟化是操作系统范例,其中内核允许存在多个隔离的用户空间实例,其中这样的实例被称为“容器”。从运行在这些容器中的程序的角度来看,这些容器可看起来像是真实的计算机。在普通操作系统上运行的计算机程序可以看到计算机的所有资源(例如,连接的设备、文件和文件夹、网络共享、CPU功率、可量化的硬件能力)。然而,在容器内部运行的计算机程序仅可以看到容器的内容和分配给容器的装置。
通过代表同一容器内的不同租户处理不同消息流,可能对不同租户的另一消息流的处理产生不利影响。
例如,在多租户环境中,可能需要复杂的逻辑来处理涉及通用编程语言(例如,以编写的代码)中的定制逻辑的情况,如错误处理。例如,在错误处理中,定制补偿或恢复逻辑通常需要通用编程语言支持。如本文使用的,通用编程语言(也称为“通用应用程序编程语言”)是指在计算机编程中通常使用的编程语言,如不幸的是,这样的通用编程语言可能被误用来窥探或以其他方式影响涉及不同租户的不相关的集成消息流。
当前,可以通过针对每个租户使用不同的容器来避免此类情况。然而,尽管这样的结构是安全的,但它不允许跨一大群租户共享资源,并且因此实现起来是昂贵的。
可替代地,一些多租户环境防止使用通用编程语言来解决上述情况。然而,通过防止使用此类通用编程语言,多租户环境可能不满足许多租户的功能要求。
因此,当前不存在用于使得能够对允许跨多个租户共享资源(如容器)的消息流进行集成同时还是安全的手段,如通过不影响来自其他租户的其他集成消息流。
本发明的实施例提供了一种用于在多租户环境中安全地处理集成消息流的装置,如下文进一步讨论的。
在一些实施例中,本发明包括一种用于安全地处理多租户容器中的集成消息流的计算机实现的方法、系统和计算机程序产品。在本发明的一个实施例中,监视多租户容器中的应用程序要处理的消息流中的每个步骤,其中,多租户容器存储用于为多个租户处理消息流的应用程序。监视消息流中的每个步骤以确定该步骤是否运行以通用编程语言的定制逻辑。如果确定监视步骤运行以通用编程语言的定制逻辑,如果存在其他消息流正在被多租户容器中的其他应用程序处理,则暂停以通用编程语言的定制逻辑运行的消息流,使其不被多租户容器中的应用程序处理。此外,防止新的消息流被多租户容器中的应用程序处理。在由多租户容器中的其他应用程序处理其他消息流之后,暂停的消息流现在由多租户容器中的应用程序处理。以此方式,来自不同租户的消息流被集成以允许资源(诸如容器)的共享,同时也是安全的,诸如通过不影响来自其他租户的其他集成消息流。
在以下描述中,阐述了许多具体细节以便提供对本发明的实施例的透彻理解。然而,对于本领域技术人员显而易见的是,本发明可以在没有这些具体细节的情况下实施。在其他实例中,公知的电路以框图形式示出,以便不以不必要的细节模糊本发明。对于大部分,已经省略了考虑定时考虑等的细节,因为这样的细节对于获得对本发明的完整理解不是必需的,并且在相关领域的普通技术人员的技能之内。
现在详细参照附图,图1示出了根据本发明的实施例的多租户环境100。环境100包括经由网络103连接到服务器102的租户101A-101C(分别被标识为“租户A”、“租户B”和“租户C”)。租户101A-101C可被共同地或单独地分别称为租户101。如本文中所使用的租户101是指由用户组利用的计算设备,包括在实体(诸如公司)处采用的与处理租户101所发出的请求的服务器102交互的那些计算设备。
如本文所使用的,服务器102被配置成用于主控处理租户101所提供的消息(例如,请求)的资源(如应用程序)。这样的消息可对应于租户101从其客户接收的要由服务器102托管的应用程序之一处理的请求。在一个实施例中,此类应用程序的单个实例可服务于多个租户101,从而有效地利用资源。下面结合图2提供对服务器102的硬件配置的描述。
网络103可以是例如局域网、广域网、无线广域网、电路交换电话网、全球移动通信系统(GSM)网络、无线应用协议(WAP)网络、WiFi网络、IEEE 802.11标准网络、其各种组合等。在不脱离本发明的范围的情况下,其他网络(这里为了简洁而省略其描述)也可以与图1的环境100结合使用。
环境100在范围上不限于任何一种特定网络架构。环境100可包括任何数量的租户101、服务器102和网络103。例如,多租户环境100可以包括多个服务器102,诸如服务器群,其中负载平衡器(未示出)用于以避免使服务器102的资源过载的方式跨服务器102有效地分布工作负荷。
现在参见图2,图2示出了代表用于实施本发明的实施例的硬件环境的服务器102(图1)的硬件配置的本发明的实施例。服务器102可以具有通过系统总线202连接到不同其他部件的处理器201。操作系统203可以在处理器201上运行,并且提供控制和协调图2的不同组件的功能。根据本发明的原理的应用程序204可以结合操作系统203运行并且向操作系统203提供调用,其中调用实现要由应用程序204执行的不同功能或服务。应用程序204可包括例如用于安全地处理如以下结合图3-6所讨论的多租户容器中的集成消息流的程序。
再次参见图2,只读存储器(“ROM”)205可以连接至系统总线202并且包括控制服务器102的某些基本功能的基本输入/输出系统(“BIOS”)。随机存取存储器(“RAM”)206和盘适配器207还可以连接到系统总线202上。应当注意,包括操作系统203和应用程序204的软件组件可以被加载到RAM206中,RAM206可以是服务器102的主存储器以供执行。盘适配器207可以是与盘单元208(例如,盘驱动器)通信的集成驱动电子器件(“IDE”)适配器。注意,如下文结合图3-6所讨论的,用于安全地处理多租户容器中的集成消息流的程序的示例实施例可以驻留在盘单元208中或应用程序204中。
服务器102可以进一步包括连接到总线202上的通信适配器209。通信适配器209可将总线202与外部网络(例如,图1的网络103)互连,从而允许服务器102与租户101通信。
本发明的实施例可以是处于任何可能的集成技术细节水平的系统、方法、和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的实施例的方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载至相应的计算/处理装置或者下载至外部计算机或外部存储装置。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的实施例的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的实施例的方面。
本文参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的实施例的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以被提供给计算机的处理器、或其他可编程数据处理装置以便产生机器,这样使得经由计算机的处理器或其他可编程数据处理装置执行的这些指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。这些计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或其他设备上,以便使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而使得在该计算机、其他可编程装置、或其他设备上执行的指令实现流程图和/或框图的或多个框中所指定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个方框实际上可以作为一个步骤完成,同时、基本上同时、以部分或完全时间上重叠的方式执行,或者方框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
如上所述,实现允许跨多个租户共享资源(如容器)同时还是安全(如通过不影响来自其他租户的其他集成消息流)的消息流的集成当前具有挑战性。
本发明的实施例提供了一种用于在如下文结合图3-6所讨论的多租户环境中安全地处理集成消息流的装置。图3是用于在多租户环境100(图1)中安全地处理集成消息流的服务器102(图1和图2)的软件组件的示图。图4是用于安全地处理多租户容器中的集成消息流的方法的流程图。图5是用于处理以通用编程语言的定制逻辑运行的多个集成消息流的方法的流程图。图6是用于基于在消息流中检测到的模式将消息流引导到容器的方法的流程图。
如上所述,图3是根据本发明的实施例的用于在多租户环境100(图1)中安全地处理集成消息流的服务器102(图1和图2)的软件组件的图。在一个实施例中,这些软件组件可以驻留在服务器102的应用程序204(图2)中。在一个实施例中,这些软件组件可以驻留在用户空间(存储器区域)中。
以下提供这些软件组件的简要描述。下面结合图4-6提供这些软件组件(包括其功能)的更详细描述。
参见图3,结合图1-2,服务器102包括容器301A-301C(分别标识为“容器1”、“容器2”和“容器3”)。容器301A-301C可以共同地或单独地分别称为容器301。虽然图3示出了三个容器301,但是服务器102可以使用更多(或更少)的容器301。此外,虽然以下描述集中于描述容器301A的特征,但是这样的描述同样适用于其他容器301。例如,容器301B、301C的内容可以包括与图3所示的容器301A相同的组件。
如本文使用的,“容器301”是指用于存储应用程序以处理租户101所提供的消息流的隔离的用户空间实例。这样的容器301可以用于处理用于多租户(“多租户容器”)或用于指定的单租户(“单租户容器”)的消息流。结合存储应用程序,容器301(诸如容器301A)还可以存储“集成引擎”302(例如,应用程序连接企业(App ConnectEnterprise))。如本文所使用的,“集成引擎302”指用于通过容器301内的多个应用程序来处理来自多个租户101的集成消息流的单元。在一个实施例中,这样的处理包括多租户配置,其中这样的应用程序的单个实例可服务于多个租户101,从而有效地利用资源。
在一个实施例中,结合处理来自多个租户的集成消息流,集成引擎302确定消息流是否正在运行以通用编程语言的定制逻辑,并且如果是这样,如果在可应用程序容器301中存在由其他应用程序处理的其他消息流,则停止由可应用程序的应用处理这样的消息流。此外,如图3所示,集成引擎302包括软件组件(本文被称为“收听者”303),该软件组件被配置成用于路由有待由适当的应用程序(如应用程序304A、304B(分别标识为“应用程序1”和“应用程序2”))处理的消息流。虽然图3图示了存储两个应用程序304A、304B的容器301A,但是每个容器301可以存储更多(或更少)的应用程序304。如本文所使用的应用程序304指代用于处理由不同租户101提供的消息流的程序。
此外,集成引擎302被配置成用于监视有待由这些应用程序处理的消息流中的每个步骤。具体地,在一个实施例中,集成引擎302监视要由应用程序处理的消息流中的每个步骤以确定步骤是否运行以通用编程语言(例如,)的自定义逻辑。如本文使用的,通用编程语言(也称为“通用应用程序编程语言”)是指在计算机编程中通常使用的编程语言,如在一个实施例中,集成引擎302通过将消息拆单词成字来确定消息流中的步骤是否正在运行以通用编程语言的定制逻辑。集成引擎302然后将这些单词的出现与已知摘录进行比较,并计算以特定编程语言编写消息的概率。
在一个实施例中,集成引擎302对消息流中的步骤进行分析以便基于将单词(先前将消息拆分成单词)与如对应于定制逻辑的先前标识的单词进行匹配来标识定制逻辑,如定制规则和算法。
在一个实施例中,响应于集成引擎302检测到运行以通用编程语言的自定义逻辑的步骤,如果在容器301内存在由其他应用程序304处理的其他消息流,则集成引擎302停止该消息流由应用程序304处理。
例如,参见图3,集成引擎302可以检测处理包含不安全消息305的消息流的应用程序304。如在本文中使用的,“非安全消息”305是指包含以通用编程语言的定制逻辑的消息。即,集成引擎302检测以通用编程语言运行定制逻辑的步骤。如果在容器301(例如,容器301A)内存在由其他应用程序304(例如,应用程序304B)处理的其他消息流,则集成引擎302停止该消息流由应用程序304(例如,应用程序304A)处理。
一旦其他应用程序304在容器301(例如,容器301A)内处理了其他消息流,集成引擎302然后允许运行以通用编程语言的定制逻辑的消息流现在由适当的应用程序304处理。例如,一旦其他消息流已经被容器301内的应用程序304(例如,应用程序304B)处理,集成引擎302就允许运行以通用编程语言的定制逻辑的消息流现在被最初接收到要处理的消息流的应用程序304(例如,应用程序304A)处理。
如以上所讨论的,在检测到包含以通用编程语言的定制逻辑的消息流之后,如果在容器301内存在由其他应用程序304处理的其他消息流,则集成引擎302停止该消息流由应用程序304处理。此外,在这样的情况下,诸如互联网协议(IP)喷洒器306之类的组件防止新的消息流被具有停止的消息流的容器301(例如,容器301A)中的应用程序304处理。具体地,IP喷洒器306将流量(新的消息流)重定向到其他容器301(例如,容器301B、301C)。
以下将结合图4-6提供服务器102的这些和其他功能的进一步描述。
如以上所讨论的,图4是根据本发明实施例的用于安全地处理多租户容器301(图3)中的集成消息流的方法400的流程图。
现在参见图4,结合图1-3,在步骤401中,集成引擎302监视要由多租户容器301中的应用程序304处理的消息流中的每个步骤。在一个实施例中,这样的监视涉及将消息流中的每个步骤表征为由集成引擎302提供或运行以通用编程语言的定制逻辑。当步骤被表征为由集成引擎302提供时,则与此步骤相关联的消息被视为安全消息。然而,如果步骤被表征为运行以通用编程语言的定制逻辑,则与此步骤相关联的消息被视为不安全消息305。在一个实施例中,集成引擎302通过由应用程序304检测容器301中的不可信通用代码的运行,诸如检测计算节点的执行、嵌入式结构化查询语言(ESQL)扩展、利用通用代码的映射节点等,将步骤表征为运行以通用编程语言的定制逻辑。在步骤402中,针对每个监视步骤,集成引擎302确定该监视步骤是否运行以通用编程语言的定制逻辑。
如果集成引擎302确定所监视的步骤不运行以通用编程语言的定制逻辑(诸如将步骤表征为由集成引擎302提供),则在步骤401中,集成引擎302继续监视要由多租户容器301中的应用程序304处理的消息流中的每个步骤。
然而,如果集成引擎302确定所监视的步骤运行以通用编程语言的定制逻辑,那么,在步骤403中,集成引擎302确定是否存在由多租户容器301(例如,容器301A)中的其他应用程序304处理的其他消息流。
如果不存在由多租户容器301中的其他应用程序处理的其他消息流,则在步骤404中,接收运行以通用编程语言的定制逻辑的消息的适当的应用程序304(例如,应用程序304A)处理运行以通用编程语言的定制逻辑的消息的流。
进一步地,集成引擎302在步骤401中继续监视将由多租户容器301中的应用程序304处理的消息流中的每个步骤。
然而,如果在多租户容器301(例如,容器301A)中存在由其他应用程序(例如,应用程序304B)处理的其他消息流,则在步骤405中,集成引擎302暂停运行以通用编程语言的定制逻辑的消息流,使其不被应用程序304(例如,应用程序304A)处理。此外,集成引擎302可以允许消息的其他流由多租户容器301内的其他应用程序304处理。在一个实施例中,消息流被暂停,直到代表其他租户运行的消息流的处理已经完成。以此方式,避免了干扰其他消息流的风险。
此外,在步骤406中,集成引擎302防止新消息流被多租户容器301(其中应用程序304接收到要处理的不安全消息305的容器301)(例如,容器301A)中的应用程序304处理。以此方式,避免了干扰其他消息流的风险。在一个实施例中,通过使IP喷洒器306将流量(新消息流)重定向到其他容器301(例如,容器301B),防止多租户容器301(例如,容器301A)中的应用程序304处理新消息流。
例如,在一个实施例中,IP喷洒器306可以对应于负载平衡器。在这样的实施例中,通过使集成引擎302调用外部脚本以指示负载平衡器将流量远离容器301(例如,容器301A)重定向到不同的容器301(例如,容器301B),来防止新消息流由多租户容器301(例如,容器301A)中的应用程序304处理。例如,负载均衡器可以被配置来以避免使特定容器301(例如,容器301A)的资源过载的方式将工作负荷跨容器301有效地分布。因此,负载平衡器使用接收不安全消息305的应用程序304可重新定向流量远离容器301,以处理到不同容器301。
在另一个示例中,在一个实施例中,IP喷洒器306可以对应于入站连接器。在一个实施例中,通过切换诸如超文本传输协议(HTTP)入站连接器之类的入站连接器,防止多租户容器301中的应用程序304处理新的消息流。
在步骤407,集成引擎302确定多租户容器301(例如,容器301A)中的应用程序304对其他消息流的处理是否完成。
如果多租户容器301(例如,容器301A)中的应用程序304对其他消息流的处理尚未完成,则在步骤407中,集成引擎302继续确定多租户容器301(例如,容器301A)中的应用程序304对其他消息流的处理是否完成。
然而,如果多租户容器301(例如,容器301A)中的应用程序304已完成对其他消息流的处理,则在步骤408中,集成引擎302(应用程序304)处理运行以通用编程语言的定制逻辑的暂停的消息流。即,步骤405的暂停的消息流现在不被暂停并且由多租户容器301中的应用程序304处理。
在完成运行以通用编程语言定制逻辑的消息流的处理时,在步骤409中,集成引擎302在处理先前暂停的消息流之后回收多租户容器301(例如,容器301A)或指定多租户容器301(例如,容器301A)以存储单租户的应用程序304。以此方式,避免了影响后续流的持续线程或其他污染的风险。
此外,以此方式,绝大多数租户能够共享容器,直到一个消息流需要运行不安全代码为止,由此受益于多租户容器提供的规模的经济学,而在绝对需要时仅求助于更昂贵的每租户模型。
虽然前述讨论集中在单个消息流正在多租户容器301中尝试不安全操作的实施例,但本发明的范围不限于这种实施例。例如,集成引擎302可能必须解决如下结合图5所讨论的多个消息流在同一容器301中尝试不安全操作的情况。
图5是根据本发明实施例的用于处理运行以通用编程语言的定制逻辑的多个集成消息流的方法500的流程图。
参见图5,结合图1-4,在步骤501中,集成引擎302确定其是否检测到运行以通用编程语言的定制逻辑的多个消息流。如前所述,消息流的每个步骤被表征为由集成引擎302提供或运行以通用编程语言的定制逻辑。当步骤被表征为由集成引擎302提供时,则与此步骤相关联的消息被视为安全消息。然而,如果步骤被表征为运行以通用编程语言的定制逻辑,则与此步骤相关联的消息被视为不安全消息305。在一个实施例中,集成引擎302通过由应用程序304检测容器301中的不可信通用代码的运行,诸如检测计算节点的执行、嵌入式结构化查询语言(ESQL)扩展、利用通用代码的映射节点等,将步骤表征为运行以通用编程语言的定制逻辑。
如果集成引擎302没有检测到运行以通用编程语言的定制逻辑的多个消息流,则集成引擎302在步骤501中继续确定其是否检测到运行以通用编程语言的定制逻辑的多个消息流。然而,如果集成引擎302检测到运行以通用编程语言的定制逻辑的多个消息流,那么,在步骤502中,集成引擎302允许最早检测到的运行以通用编程语言的定制逻辑的消息流由接收到具有不可信通用代码的那个消息流(例如,不安全消息305)的应用程序304处理。例如,如果集成引擎302将正由应用程序304A、304B处理的消息流检测为两者运行以通用编程语言的定制逻辑,且正由应用程序304A处理的消息流是较早检测到的运行以通用编程语言的定制逻辑的消息流,那么集成引擎302将允许由应用程序304A处理消息流且防止由应用程序304B处理消息流,如下文所论述。
此外,在步骤503中,集成引擎302通过使这些消息流失败来防止后面检测到的运行以通用编程语言的定制逻辑的消息流被处理。例如,在一个实施例中,集成引擎302返回错误以用于处理这种后面检测到的消息流。
在步骤504中,集成引擎302确定最早检测到的运行以通用编程语言的定制逻辑的消息流的处理是否完成。
如果最早检测到的运行以通用编程语言的定制逻辑的消息流的处理未完成,则在步骤504中,集成引擎302继续判定最早检测到的运行以通用编程语言的定制逻辑的消息流的处理是否完成。
然而,如果最早检测到的运行以通用编程语言的定制逻辑的消息流的处理完成了,则在步骤505中,如果失败的消息流尚未被处理,则集成引擎302重试要由另一应用程序304处理的失败的消息流。例如,如果运行以通用编程语言的定制逻辑的消息流先前失败,诸如由应用程序304B处理的消息流,则重试这样的消息流以由应用程序304B处理。
在一个实施例中,如果没有完成持久操作,则重试失败的消息流,如没有表述性状态转移(REST)应用程序编程接口(API)调用成功、没有数据库更新被进行等。
在一个实施例中,如果存在多个失败的消息流,则集成引擎302重试最早检测到的运行以通用编程语言的定制逻辑的消息流。
在步骤506中,集成引擎302确定失败的消息流的处理是否完成。
如果对失败的消息流的处理没有完成,则集成引擎302在步骤506中继续确定对失败的消息流的处理是否完成。
然而,如果对失败的消息流的处理完成,那么,在步骤507中,由集成引擎302判定是否存在尚未被处理的任何更多失败的消息流。
如果没有更多的失败的消息流尚未被处理,则在步骤508中完成对失败的消息流的处理。然而,如果存在更多尚未被处理的失败的消息流,则集成引擎302在步骤505中重试另一失败的消息流以由另一应用程序304处理。
除了检测运行以通用编程语言的定制逻辑的多个消息流之外,集成引擎302可以基于在消息流中检测到的模式来将消息流引导到容器301,如下文结合图6所讨论的。
图6是根据本发明实施例的用于基于在消息流中检测到的模式将消息流引导至容器301(图3)的方法600的流程图。
参见图6,结合图1-5,在步骤601中,集成引擎302判定是否检测到消息流中的模式。如本文所使用的,模式是指消息流场景。例如,每一模式具有值,通常称为模式参数值。例如,模式参数值可以是从其中读取消息的队列名称。其他实例包括在消息中利用的文件的名称、标题、属性、消息格式、变元的类型、函数等。在一个实施例中,这样的信息可以通过使用自然语言处理执行消息的文本分析从集成引擎302获得。然后使用分类器将这种经分析的文本分类到特定模式参数值,所述分类器可以被预先训练以将特定文本分类到相应的模式参数值。
在配置模式参数值之后,生成模式实例项目,其包含对工作空间中与该模式实例相关的所有其他项目的引用。在一个实施例中,模式实例项目还包含存储与每一个模式相关联的模式参数值的模式实例配置文件。此配置文件可存储配置的模式参数值。在一个实施例中,这样的配置文件被存储在服务器102的存储设备(例如,存储器205、盘单元208)中。在一个实施例中,在接收到要由容器301中的应用程序304处理的消息流时,集成引擎302可以基于识别模式参数值以及确定此类模式参数值是否与存储在配置文件中的模式相关联的模式参数值相匹配来确定是否检测到消息流中的模式。在一个实施例中,集成引擎302例如通过使用集成工具箱中的消息流调试器来分析消息的数据以确定其模式参数值。一旦获得此类模式参数值,集成引擎302就可以确定此类模式参数值是否与存储在配置文件中的模式相关联的模式参数值匹配,如以上所讨论的。
如果没有检测到该消息流中的模式,则在步骤601,集成引擎302继续确定该消息流中的模式是否被检测到。
然而,如果检测到消息流中的模式,则在步骤602,集成引擎302确定所识别的模式是否对应于要由单租户容器301中的应用程序304处理的消息流。在一个实施例中,存储在上述配置文件中的模式(包括其相关联的模式参数值)可以与容器301相关联,例如仅由单个租户使用的容器301。在一个实施例中,这样的信息被存储在配置文件中。被指定为仅由单租户使用的容器301在本文中被称为“单租户”容器301。
例如,如果集成引擎302检测到消息流中与存储在配置文件中的模式相匹配的模式,则集成引擎302从配置文件确定是否存在与这样的模式相关联的单租户容器301。如果存在与这样的模式相关联的单租户容器301,则集成引擎302引导要由这样的单租户容器301中的应用程序304处理的消息的流,如下面进一步讨论的。
如果所标识的模式不对应于要由在单租户容器301中的应用程序304处理的消息流,则集成引擎302在步骤601中继续确定该消息流中的模式是否被检测到。
然而,如果所识别的模式对应于要由在单租户容器301中的应用程序304处理的消息流,则在步骤603,集成引擎302将消息流引向由在单租户容器301中的应用程序304处理。以这种方式,要求单租户容器的消息流可以被引导到这样的容器,从而防止这样的消息流的干扰的风险。
可替代地,在一个实施例中,代替将消息流引向到单租户容器301,集成引擎302可以提醒租户对这种隔离的需要。
本发明的实施例可以改进涉及多租户供应的技术或技术领域。如上所述,多租户环境涉及由在服务器上运行的软件的单个实例服务的多个租户(例如,用户组)。利用多租户架构,软件应用程序被设计成向每租户提供实例的专用共享——包括其数据、配置、用户管理、租户个体功能和非功能属性。因此,租户所使用的资源可跨租户共享。例如,多个不同的租户可以利用相同的资源,这通常被称为“多租户配置”。即,“多租户配置”是指要在不同租户之间共享的资源的分配。结合多租户配置,要代表不同租户被处理的消息流可由同一容器内的应用程序来处理。这样的消息流被称为“集成”,因为它们将由同一容器内的应用程序处理。如本文中所使用的,“容器”是指隔离的用户空间实例。例如,操作系统级虚拟化是操作系统范例,其中内核允许存在多个隔离的用户空间实例,其中这样的实例被称为“容器”。通过代表同一容器内的不同租户处理不同消息流,可导致对不同租户的另一消息流的处理的不利影响。例如,在多租户环境中,可能需要复杂的逻辑来处理特殊情况,诸如错误处理,涉及以通用编程语言(例如,以编写的代码)的定制逻辑。例如,在错误处理中,定制补偿或恢复逻辑通常需要通用编程语言支持。不幸的是,这样的通用编程语言可能被误用来窥探或以其他方式影响涉及不同租户的不相关的集成消息流。当前,仅可以通过对每个租户使用不同的容器来避免这样的情形。然而,尽管这样的结构是安全的,但它不允许跨一大群租户共享资源,并且因此实现起来是昂贵的。可替代地,一些多租户环境防止使用通用编程语言来解决上述情形。然而,通过防止使用此类通用编程语言,多租户环境可能不满足许多租户的功能要求。因此,当前没有用于实现消息流的集成的装置,其允许跨多个租户共享资源(诸如容器),同时还是安全的,诸如通过不影响来自其他租户的其他集成消息流。
本发明实施例通过监控多租户容器中的应用程序需要处理的消息流中的各步骤来改进该技术,其中,多租户容器中存储有针对多个租户处理消息流的应用程序。监视消息流中的每个步骤以确定该步骤是否运行以通用编程语言的定制逻辑。如果确定被监视步骤运行以通用编程语言的定制逻辑,并且如果多租户容器中的其他应用程序正在处理其他消息流,则暂停运行以通用编程语言的定制逻辑的消息流,使其不被多租户容器中的应用程序处理。此外,防止新的消息流被多租户容器中的应用程序处理。在由多租户容器中的其他应用程序处理其他消息流之后,暂停的消息流由多租户容器中的应用程序处理。以此方式,来自不同租户的消息流被集成以允许资源(诸如容器)的共享,同时诸如通过不影响来自其他租户的其他集成消息流,也是安全的。此外,以此方式,在多租户供应的技术领域中存在改进。
应提前理解,尽管本公开包括关于云计算的详细描述,但本文陈述的传授内容的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知的或以后开发的任何其他类型的计算环境来实现。
云计算是一种服务交付模型,用于使得能够方便的、按需的网络访问可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用程序、虚拟机和服务)的共享池,所述可配置计算资源可以以最小的管理努力或与所述服务的提供者的交互被快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特点如下:
按需自助服务:云消费者可单方面根据需要自动提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供商进行人为交互。
广泛的网络接入:能力可通过网络获得并且通过标准机制接入,该标准机制促进异构瘦客户机平台或厚客户机平台(例如,移动电话、膝上型计算机和PDA)的使用。
资源池:供应商的计算资源被池化以使用多租户模型服务于多个消费者,其中根据需求动态地分配和重新分配不同的物理和虚拟资源。存在位置独立性的感觉,因为消费者通常不具有对所提供的资源的确切位置的控制或了解,但可能能够以较高抽象级别(例如,国家、州或数据中心)指定位置。
快速弹性:能够快速和弹性地提供能力,在一些情况下自动地快速缩小和快速释放以快速放大。对于消费者而言,可用于供应的能力通常显得不受限制并且可以在任何时间以任何数量购买。
可测量的服务:云系统通过在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某个抽象级别处利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用,为所利用的服务的提供者和消费者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用程序。可通过诸如网络浏览器(例如,基于web的电子邮件)之类的瘦客户端接口从不同客户端设备访问应用程序。消费者不管理或控制包括网络、服务器、操作系统、存储或甚至单独的应用程序能力的底层云基础设施,可能的例外是有限的用户特定应用程序配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建的或获取的使用由提供商支持的编程语言和工具创建的应用程序部署到云基础设施上。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但是对所部署的应用程序和可能的应用程序托管环境配置具有控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其他基本计算资源,所述软件可以包括操作系统和应用程序。消费者不管理或控制底层云基础设施,而是具有对操作系统、存储、所部署的应用程序的控制以及对所选联网组件(例如,主机防火墙)的可能受限的控制。
部署模型如下:
私有云:云基础架构仅为组织运作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
社区云:云基础架构被若干组织共享并支持共享了关注(例如,任务、安全要求、策略、和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公共云:使云基础架构对公众或大型行业组可用,并且由出售云服务的组织拥有。
混合云:云基础架构是两个或更多个云(私有、社区或公共)的组合,这些云保持唯一实体但通过使数据和应用程序能够移植的标准化或专有技术(例如,云突发以用于云之间的负载平衡)绑定在一起。
云计算环境是面向服务的,专注于状态性、低耦合、模块性和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
现在参见图7,描绘了说明性云计算环境700。如图所示,云计算环境700包括一个或多个云计算节点701,云消费者使用的本地计算设备(诸如例如个人数字助理(PDA)或蜂窝电话702A、台式计算机702B、膝上型计算机702C和/或汽车计算机系统702N)可与云计算节点701通信。节点701可以彼此通信。它们可以物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上所述的私有云、社区云、公共云或混合云、或其组合。这允许云计算环境700提供基础架构、平台和/或软件作为云消费者的服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图7中所示的计算设备702A-702N的类型仅旨在是说明性的,并且计算节点701和云计算环境700可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参见图8,示出了由云计算环境700(图7)提供的一组功能抽象层。应当事先理解,图8中所示的组件、层和功能仅旨在是说明性的,并且本发明的实施例不限于此。如所描述,提供以下层和对应功能:
硬件和软件层801包括硬件和软件组件。硬件组件的示例包括主机802;基于RISC(精简指令集计算机)架构的服务器803;服务器804;刀片服务器805;存储设备806;以及网络和网络组件807。在一些实施例中,软件组件包括网络应用服务器软件808和数据库软件809。
虚拟化层810提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器811;虚拟存储器812;虚拟网络813,包括虚拟专用网络;虚拟应用和操作系统814;以及虚拟客户端815。
在一个示例中,管理层816可提供以下所述的功能。资源供应817提供用于在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价818在云计算环境内利用资源时提供成本跟踪,并为这些资源的消费开账单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户819为消费者和系统管理员提供对云计算环境的访问。服务水平管理820提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(SLA)规划和履行821提供云计算资源的预安排和采购,根据该SLA预期该云计算资源的未来要求。
工作负载层822提供可以利用云计算环境的功能的示例。可以从该层提供的工作负荷和功能的示例包括:地图和导航823;软件开发和生命周期管理824;虚拟课堂教育交付825;数据分析处理826;事务处理827;以及在多租户容器828中处理消息的集成流。已经出于说明的目的呈现了本发明的各个实施例的描述,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。
Claims (20)
1.一种用于安全处理多租户容器中的集成消息流的计算机实现的方法,所述方法包括:
监视要由所述多租户容器中的多个应用程序处理的多个消息流中的每个步骤,其中,所述多租户容器存储用于多个租户的消息处理流的应用程序;
确定所述多个消息流中的每个步骤是否运行以通用编程语言的定制逻辑;
响应于检测到所述消息流运行以通用编程语言的定制逻辑并且响应于由所述多租户容器中的其他应用程序正处理其他消息流,暂停所述消息流使其不被所述多租户容器中的应用程序处理;
响应于暂停所述消息流使其不被所述多租户容器中的所述应用程序处理,防止新消息流被所述多租户容器中的应用程序处理;以及
在由所述多租户容器中的所述其他应用程序处理所述其他消息流完成之后,由所述多租户容器中的所述应用程序处理所述暂停的消息流。
2.根据权利要求1所述的方法,进一步包括:
在完成由所述多租户容器中的应用程序对所述暂停的消息流的所述处理之后,回收所述多租户容器。
3.根据权利要求1所述的方法,进一步包括:
在完成由所述多租户容器中的应用程序对所述暂停的消息流的所述处理之后,指定所述多租户容器来存储所述单租户的应用程序。
4.根据权利要求1所述的方法,进一步包括:
检测在所述多租户容器中运行以所述通用编程语言的定制逻辑的多个消息流;
由所述多租户容器中的第一应用程序来处理所述检测到的运行以所述通用编程语言的定制逻辑的消息流之一,其中所述检测到的被处理的消息流之一对应于最早检测到的运行以所述通用编程语言的定制逻辑的消息流;以及
通过使所述消息流失败,防止后面检测到的消息流由所述多租户容器中的其他应用程序来处理。
5.根据权利要求4所述的方法,进一步包括:
响应于完成由所述多租户容器中的所述第一应用程序处理所述检测到的以所述通用编程语言的定制逻辑的消息流中的所述一个,重试将由所述多租户容器中的第二应用程序处理的失败的消息流。
6.根据权利要求1所述的方法,进一步包括:
检测消息流中的模式;
将所述模式识别为对应于要由单租户容器中的应用程序处理的消息流;以及
引导所述消息流由所述单租户容器中的所述应用程序处理。
7.根据权利要求1所述的方法,其中,通过关闭绑定的连接器或调用外部脚本以指示负载均衡器将流量重新定向远离所述多租户容器,防止所述多租户容器中的应用程序处理所述新的消息流。
8.一种用于安全处理多租户容器中的集成消息流的计算机程序产品,所述计算机程序产品包括具有其中体现的程序代码的一个或多个计算机可读存储介质,所述程序代码包括用于以下操作的程序指令:
监视要由所述多租户容器中的多个应用程序处理的多个消息流中的每个步骤,其中,所述多租户容器存储用于多个租户的消息处理流的应用程序;
确定所述多个消息流中的每个步骤是否运行以通用编程语言的定制逻辑;
响应于检测到所述消息流运行以通用编程语言的定制逻辑并且响应于由所述多租户容器中的其他应用程序正处理其他消息流,暂停所述消息流使其不被所述多租户容器中的应用程序处理;
响应于暂停所述消息流使其不被所述多租户容器中的所述应用程序处理,防止新消息流被所述多租户容器中的应用程序处理;以及
在由所述多租户容器中的所述其他应用程序处理所述其他消息流完成之后,由所述多租户容器中的所述应用程序处理所述暂停的消息流。
9.根据权利要求8所述的计算机程序产品,其中,所述程序代码进一步包括用于以下操作的编程指令:
在完成由所述多租户容器中的应用程序对所述暂停的消息流的所述处理之后,回收所述多租户容器。
10.根据权利要求8所述的计算机程序产品,其中,所述程序代码进一步包括用于以下操作的编程指令:
在完成由所述多租户容器中的应用程序对所述暂停的消息流的所述处理之后,指定所述多租户容器来存储所述单租户的应用程序。
11.根据权利要求8所述的计算机程序产品,其中,所述程序代码进一步包括用于以下操作的编程指令:
检测在所述多租户容器中运行以所述通用编程语言的定制逻辑的多个消息流;
由所述多租户容器中的第一应用程序来处理所述检测到的运行以所述通用编程语言的定制逻辑的消息流之一,其中所述检测到的被处理的消息流之一对应于最早检测到的运行以所述通用编程语言的定制逻辑的消息流;以及
通过使所述消息流失败,防止后面检测到的消息流由所述多租户容器中的其他应用程序来处理。
12.根据权利要求11所述的计算机程序产品,其中,所述程序代码进一步包括用于以下操作的编程指令:
响应于完成由所述多租户容器中的所述第一应用程序处理所述检测到的以所述通用编程语言的定制逻辑的消息流中的所述一个,重试将由所述多租户容器中的第二应用程序处理的失败的消息流。
13.根据权利要求8所述的计算机程序产品,其中,所述程序代码进一步包括用于以下操作的编程指令:
检测消息流中的模式;
将所述模式识别为对应于要由单租户容器中的应用程序处理的消息流;以及
引导所述消息流由所述单租户容器中的所述应用程序处理。
14.根据权利要求8所述的计算机程序产品,其中,通过关闭绑定的连接器或调用外部脚本以指示负载均衡器将流量重新定向远离所述多租户容器,防止所述多租户容器中的应用程序处理所述新的消息流。
15.一种系统,包括:
存储器,用于存储计算机程序,所述计算机程序用于安全地处理多租户容器中的集成消息流;以及
处理器,连接至所述存储器,其中,所述处理器被配置为执行所述计算机程序的所述程序指令,所述程序指令包括:
监视要由所述多租户容器中的多个应用程序处理的多个消息流中的每个步骤,其中,所述多租户容器存储用于多个租户的消息处理流的应用程序;
确定所述多个消息流中的每个步骤是否运行以通用编程语言的定制逻辑;
响应于检测到所述消息流运行以通用编程语言的定制逻辑并且响应于由所述多租户容器中的其他应用程序正处理其他消息流,暂停所述消息流使其不被所述多租户容器中的应用程序处理;
响应于暂停所述消息流使其不被所述多租户容器中的所述应用程序处理,防止新消息流被所述多租户容器中的应用程序处理;以及
在由所述多租户容器中的所述其他应用程序处理所述其他消息流完成之后,由所述多租户容器中的所述应用程序处理所述暂停的消息流。
16.根据权利要求15所述的系统,其中,所述计算机程序的所述程序指令进一步包括:
在完成由所述多租户容器中的应用程序对所述暂停的消息流的所述处理之后,回收所述多租户容器。
17.根据权利要求15所述的系统,其中,所述计算机程序的所述程序指令进一步包括:
在完成由所述多租户容器中的应用程序对所述暂停的消息流的所述处理之后,指定所述多租户容器来存储所述单租户的应用程序。
18.根据权利要求15所述的系统,其中,所述计算机程序的所述程序指令进一步包括:
检测在所述多租户容器中运行以所述通用编程语言的定制逻辑的多个消息流;
由所述多租户容器中的第一应用程序来处理所述检测到的运行以所述通用编程语言的定制逻辑的消息流之一,其中所述检测到的被处理的消息流之一对应于最早检测到的运行以所述通用编程语言的定制逻辑的消息流;以及
通过使所述消息流失败,防止后面检测到的消息流由所述多租户容器中的其他应用程序来处理。
19.根据权利要求18所述的系统,其中,所述计算机程序的所述程序指令进一步包括:
响应于完成由所述多租户容器中的所述第一应用程序处理所述检测到的以所述通用编程语言的定制逻辑的消息流中的所述一个,重试将由所述多租户容器中的第二应用程序处理的失败的消息流。
20.根据权利要求15所述的系统,其中,所述计算机程序的所述程序指令进一步包括:
检测消息流中的模式;
将所述模式识别为对应于要由单租户容器中的应用程序处理的消息流;以及
引导所述消息流由所述单租户容器中的所述应用程序处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/738,760 US20210216343A1 (en) | 2020-01-09 | 2020-01-09 | Safely processing integrated flows of messages in a multi-tenant container |
US16/738,760 | 2020-01-09 | ||
PCT/IB2020/062284 WO2021140397A1 (en) | 2020-01-09 | 2020-12-21 | Safely processing integrated flows of messages in a multi-tenant container |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114930788A true CN114930788A (zh) | 2022-08-19 |
Family
ID=76763297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080091385.0A Pending CN114930788A (zh) | 2020-01-09 | 2020-12-21 | 安全地处理多租户容器中的集成消息流 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210216343A1 (zh) |
JP (1) | JP7501983B2 (zh) |
CN (1) | CN114930788A (zh) |
DE (1) | DE112020005362T5 (zh) |
GB (1) | GB2607480A (zh) |
WO (1) | WO2021140397A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11868206B2 (en) * | 2021-05-11 | 2024-01-09 | Sap Se | Automated mass message processing |
CN115328529B (zh) * | 2022-06-30 | 2023-08-18 | 北京亚控科技发展有限公司 | 应用管理方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105323282A (zh) * | 2014-07-28 | 2016-02-10 | 神州数码信息系统有限公司 | 一种面向多租户的企业应用部署与管理系统 |
US20180137296A1 (en) * | 2016-11-14 | 2018-05-17 | International Business Machines Corporation | Providing containers access to container daemon in multi-tenant environment |
US20190132220A1 (en) * | 2017-10-29 | 2019-05-02 | Nicira, Inc. | Service operation chaining |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9772835B1 (en) * | 2013-03-13 | 2017-09-26 | Amazon Technologies, Inc. | Modification of program code for execution in a multi-tenant or distributed computing environment |
US10148738B2 (en) * | 2014-11-12 | 2018-12-04 | Zuora, Inc. | System and method for equitable processing of asynchronous messages in a multi-tenant platform |
US10516733B2 (en) | 2014-11-25 | 2019-12-24 | Auth0, Inc. | Multi-tenancy via code encapsulated in server requests |
US10855725B2 (en) | 2016-06-02 | 2020-12-01 | Microsoft Technology Licensing, Llc | Hardware-based virtualized security isolation |
US10025924B1 (en) | 2016-08-26 | 2018-07-17 | Parallels IP Holdings GmbH | Taskless containers for enhanced isolation of users and multi-tenant applications |
JP7018437B2 (ja) * | 2016-09-16 | 2022-02-10 | オラクル・インターナショナル・コーポレイション | マルチテナントアイデンティティおよびデータセキュリティ管理クラウドサービスのためのテナントおよびサービス管理 |
US10904074B2 (en) * | 2016-09-17 | 2021-01-26 | Oracle International Corporation | Composite event handler for a multi-tenant identity cloud service |
US20190018953A1 (en) * | 2017-07-12 | 2019-01-17 | Open Text Corporation | Methods and systems for tenant aware behavior injection in content metadata service |
CN107689953B (zh) * | 2017-08-18 | 2020-10-27 | 中国科学院信息工程研究所 | 一种面向多租户云计算的容器安全监控方法及系统 |
US10715472B2 (en) * | 2017-08-22 | 2020-07-14 | Oracle International Corporation | System and method for unit-of-order routing |
US10868887B2 (en) * | 2019-02-08 | 2020-12-15 | Palantir Technologies Inc. | Systems and methods for isolating applications associated with multiple tenants within a computing platform |
JP2020154391A (ja) * | 2019-03-18 | 2020-09-24 | 富士ゼロックス株式会社 | 情報処理システムおよびプログラム |
US11146624B2 (en) * | 2019-10-03 | 2021-10-12 | Microsoft Technology Licensing, Llc | Real time multi-tenant workload tracking and auto throttling |
-
2020
- 2020-01-09 US US16/738,760 patent/US20210216343A1/en active Pending
- 2020-12-21 CN CN202080091385.0A patent/CN114930788A/zh active Pending
- 2020-12-21 WO PCT/IB2020/062284 patent/WO2021140397A1/en active Application Filing
- 2020-12-21 JP JP2022541664A patent/JP7501983B2/ja active Active
- 2020-12-21 GB GB2211292.4A patent/GB2607480A/en active Pending
- 2020-12-21 DE DE112020005362.8T patent/DE112020005362T5/de active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105323282A (zh) * | 2014-07-28 | 2016-02-10 | 神州数码信息系统有限公司 | 一种面向多租户的企业应用部署与管理系统 |
US20180137296A1 (en) * | 2016-11-14 | 2018-05-17 | International Business Machines Corporation | Providing containers access to container daemon in multi-tenant environment |
US20190132220A1 (en) * | 2017-10-29 | 2019-05-02 | Nicira, Inc. | Service operation chaining |
Also Published As
Publication number | Publication date |
---|---|
JP7501983B2 (ja) | 2024-06-18 |
GB2607480A (en) | 2022-12-07 |
US20210216343A1 (en) | 2021-07-15 |
GB202211292D0 (en) | 2022-09-14 |
JP2023510528A (ja) | 2023-03-14 |
WO2021140397A1 (en) | 2021-07-15 |
DE112020005362T5 (de) | 2022-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10721293B2 (en) | Hybrid cloud applications | |
US10841328B2 (en) | Intelligent container resource placement based on container image vulnerability assessment | |
US10972586B2 (en) | Reusable message flow between applications of a message broker integrated systems environment | |
US9912759B2 (en) | Dynamically generating solution stacks | |
US10996997B2 (en) | API-based service command invocation | |
US9094473B2 (en) | Installation of an asset from a cloud marketplace to a cloud server in a private network | |
US9338599B1 (en) | Location-based mobile object management in a distributed cloud for enhancing access and performance | |
WO2019135133A1 (en) | Dynamic delivery of software functions | |
US10999160B2 (en) | Monitoring dynamic quality of service based on changing user context | |
WO2023279869A1 (en) | Continuous liveness and integrity of applications during migration | |
US20180150365A1 (en) | Disaster Recover of Managed Systems | |
WO2023050956A1 (en) | Automatic selection of nodes on which to perform tasks | |
JP7501983B2 (ja) | マルチテナント・コンテナにおける統合されたメッセージのフローの安全な処理 | |
US10936385B2 (en) | Running kernel dependent applications inside a container | |
JP7369728B2 (ja) | ワークロード・プロビジョニングにおけるデータ・プライバシー・アウェアネス | |
US20170124513A1 (en) | Management of resources in view of business goals | |
US10255057B2 (en) | Locale object management | |
US10135728B2 (en) | Partial switching of network traffic | |
US20190182352A1 (en) | Multi-Geographical Processing of User Requests | |
US11875202B2 (en) | Visualizing API invocation flows in containerized environments | |
US9635084B1 (en) | Mission tuples in a streaming application environment |
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 |