CN112585919B - 利用基于云的应用管理技术来管理应用配置状态的方法 - Google Patents
利用基于云的应用管理技术来管理应用配置状态的方法 Download PDFInfo
- Publication number
- CN112585919B CN112585919B CN201980023518.8A CN201980023518A CN112585919B CN 112585919 B CN112585919 B CN 112585919B CN 201980023518 A CN201980023518 A CN 201980023518A CN 112585919 B CN112585919 B CN 112585919B
- Authority
- CN
- China
- Prior art keywords
- application
- deployed
- model
- cloud
- solution
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000005516 engineering process Methods 0.000 title description 9
- 230000004044 response Effects 0.000 claims abstract description 20
- 230000008859 change Effects 0.000 claims abstract description 19
- 230000015654 memory Effects 0.000 claims description 50
- 238000012545 processing Methods 0.000 claims description 12
- 230000006399 behavior Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 67
- 238000007726 management method Methods 0.000 description 43
- 238000004891 communication Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 29
- 230000006855 networking Effects 0.000 description 21
- 239000002184 metal Substances 0.000 description 18
- 229910052751 metal Inorganic materials 0.000 description 18
- 238000012360 testing method Methods 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 13
- 230000003287 optical effect Effects 0.000 description 9
- 238000011161 development Methods 0.000 description 8
- 239000007787 solid Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 5
- 230000001413 cellular effect Effects 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000013439 planning Methods 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000001105 regulatory effect Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 239000004984 smart glass Substances 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000007723 transport mechanism Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000004187 Spiramycin Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 238000011867 re-evaluation Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W36/00—Hand-off or reselection arrangements
- H04W36/0005—Control or signalling for completing the hand-off
- H04W36/0011—Control or signalling for completing the hand-off for data sessions of end-to-end connection
- H04W36/0033—Control or signalling for completing the hand-off for data sessions of end-to-end connection with transfer of context information
- H04W36/0038—Control or signalling for completing the hand-off for data sessions of end-to-end connection with transfer of context information of security context information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- 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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0209—Architectural arrangements, e.g. perimeter networks or demilitarized zones
- H04L63/0218—Distributed architectures, e.g. distributed firewalls
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/02—Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/04—Key management, e.g. using generic bootstrapping architecture [GBA]
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/02—Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
- H04W84/10—Small scale networks; Flat hierarchical networks
- H04W84/12—WLAN [Wireless Local Area Networks]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
在一个实施例中,提出了一种用于更新计算环境中的已部署应用的配置的计算机实现的方法,该已部署应用包括多个实例,每个实例包括一个或多个物理计算机或一个或多个虚拟计算设备,该方法包括:接收更新被托管在数据库中的应用简档模型的请求,该请求指定已部署应用的第一应用配置参数集到第二应用配置参数集的改变,第一应用配置参数集指示已部署应用的当前配置状态,第二应用配置参数集指示已部署应用的目标配置状态;响应于请求,使用第二应用配置参数集来更新数据库的应用简档模型,并且基于经更新的应用简档模型,生成包括第一应用配置参数集和第二应用配置参数集的描述的解决方案描述符;以及基于解决方案描述符更新已部署应用。
Description
技术领域
本公开的技术领域一般地涉及虚拟计算中心或云计算环境中的改进方法、计算机软件、和/或计算机硬件。另一技术领域是用于管理云应用和云应用配置的计算机实现的技术。
背景技术
本部分描述的方法是可以执行的方法,但不一定是先前已经想到或执行的方法。因此,除非另外指示,否则不应该认为本部分描述的任何方法仅因为包括在本部分中而成为现有技术。
许多计算环境或基础设施通过通信网络提供对可配置资源(诸如,计算服务、存储装置、应用、联网设备等)池的共享访问。这样的计算环境的一种类型可以被称为云计算环境。云计算环境允许具有各种计算能力的用户和企业在私有云中或者在公共可用云中存储并处理数据,以便使数据访问机制更高效、可靠。通过云环境,可以改善软件应用或服务对于云环境的用户的可访问性和使用的方式,横跨各种云资源分发这些应用或服务。
云计算环境的运营商通常托管来自许多不同租户或客户的许多不同的应用。例如,第一租户可以将云环境和底层资源和/或设备用于数据托管,而另一客户可以将云资源用于联网功能。通常,每个客户可以针对其具体的应用需要配置云环境。分布式应用的部署可以通过应用或云编排器进行。因此,编排器可以接收规范或其他应用信息并且可以确定哪些云服务和/或组件被接收到的应用利用。如何分发应用的决策过程可以利用对于编排器可用的任意数量的进程和/或资源。
对于已部署的分布式应用,可以将更新应用的单个实例作为手动任务来管理,然而,一致地维护庞大的应用配置参数集是一个挑战。例如,考虑部署有许多不同策略规则的分布式防火墙。为了横跨已部署的防火墙的所有实例一致地更新这些规则,重要的是触及分布式防火墙的每一个实例,以(a)撤销已被弃用的规则,(b)更新已被改变的规则,并且(c)在需要时安装新规则。随着这些改变被实现,网络分区和应用和/或其他***故障可能会破坏这些更新。对于其他应用,存在类似的挑战。
因此,需要可以提供对于云环境中的分布式应用的高效配置管理的改进技术。
发明内容
所附权利要求可以用作本发明的概要。
附图说明
在附图中通过示例而非限制示出了本发明,并且附图中的相似附图标记指代类似的元素,其中:
图1示出了可以使用实施例的示例云计算架构。
图2描绘了在计算环境上部署分布式应用的编排***的***示意图。
图3A和图3B示出了应用配置管理的示例。
图4描绘了利用基于云的应用管理技术来管理应用配置状态的方法或算法。
图5描绘了可以实现本发明的实施例的计算机***。
具体实施方式
在以下描述中,出于说明的目的,阐述了许多具体细节以提供对本发明的透彻理解。然而,将明白的是,可以在没有这些具体细节的情况下实施本发明。在其他实例中,以框图形式示出公知结构和设备,以避免不必要地混淆本发明。
这里,根据以下提纲在各部分中描述实施例:
1.0一般概述
2.0结构概述
3.0过程概述
4.0硬件概述
5.0扩展和替代方案
1.0一般概述
公开了一种利用基于云的应用管理技术来管理分布式应用配置状态的***和方法。
在一个实施例中,提出了一种用于更新计算环境中的已部署应用的配置的计算机实现的方法,该已部署应用包括多个实例,每个实例包括一个或多个物理计算机或一个或多个虚拟计算设备,该方法包括:接收更新被托管在数据库中的应用简档模型的请求,该请求指定已部署应用的第一应用配置参数集到第二应用配置参数集的改变,该第一应用配置参数集指示已部署应用的当前配置状态,该第二应用配置参数集指示已部署应用的目标配置状态;响应于请求,使用第二应用配置参数集来更新数据库中的应用简档模型,并且基于经更新的应用简档模型,生成包括第一应用配置参数集和第二应用配置参数集的描述的解决方案描述符;以及基于解决方案描述符更新已部署应用。
在一些实施例中,应用配置参数在已部署应用中是可配置的,但是不能作为用于实例化应用的变元的一部分配置。已部署应用包括分布式防火墙应用的多个单独执行的实例,每个实例部署有多个不同策略规则的副本。在其他实施例中,基于解决方案描述符更新已部署应用包括:通过确定第一应用配置参数集与第二应用配置参数集之间的差异来确定增量参数集;基于增量参数集更新已部署应用。
在各种实施例中,响应于更新应用简档模型,更新与应用简档模型相关联的应用解决方案模型;响应于更新应用解决方案模型,编译应用解决方案模型以创建解决方案描述符。
在各种实施例中,更新已部署应用包括:重启已部署应用的一个或多个应用组件并且将第二应用参数集包括在经重启的一个或多个应用组件中,其中,更新已部署应用包括:更新已部署应用以包括第二应用参数集。在一个实施例中,应用简档模型和解决方案描述符中的每一者均包括标记语言文件。在另一实施例中,更新应用涉及简单地将第二参数集提供给运行的应用。
2.0结构概述
图1示出了可以使用实施例的示例云计算架构。
在一个特定实施例中,云计算基础设施环境102包括一个或多个私用云、公用云、和/或混合云。每个云包括联网计算机、诸如交换机和路由器的互联设备、以及诸如存储装置的***设备的集合,这些设备互操作以提供可以实现为虚拟计算中心的可重配置的、灵活分布的多计算机***。云环境102可以包括任何数量和类型的服务器计算机104、虚拟机(VM)106、一个或多个软件平台108、应用或服务110、软件容器112、和基础设施节点114。基础设施节点114可以包括各种类型的节点,例如,计算节点、存储节点、网络节点、管理***等。
云环境102可以经由云元件104-114向云环境的一个或多个客户端点116提供各种云计算服务。例如,云环境102可以提供软件即服务(SaaS)(例如,协作服务、电子邮件服务、企业资源规划服务、内容服务、通信服务等)、基础设施即服务(IaaS)(例如,安全服务、联网服务、***管理服务等)、平台即服务(PaaS)(例如,万维网(web)服务、流传输服务、应用开发服务等)、功能即服务(FaaS)、和其他类型的服务(诸如,桌面即服务(DaaS)、信息技术管理即服务(ITaaS)、受管理软件即服务(MSaaS)、移动后端即服务(MBaaS)等)。
客户端点116是与云环境102连接以从云环境102获取一项或多项特定服务的计算机或***设备。例如,客户端点116经由一个或多个公用网络(例如,因特网)、专用网络、和/或混合网络(例如,虚拟专用网络)与云元件104-114通信。客户端点116可以包括具有联网能力的任何设备,诸如,膝上型计算机、平板计算机、服务器、台式计算机、智能电话、网络设备(例如,接入点、路由器、交换机等)、智能电视、智能汽车、传感器、全球定位***(GPS)设备、游戏***、智能可穿戴对象(例如,智能手表等)、消费对象(例如,因特网冰箱、智能照明***等)、城市或交通***(例如,交通控制、收费***等)、物联网(IoT)设备、相机、网络打印机、交通***(例如,飞机、火车、摩托车、轮船等)、或任何智能或连接对象(例如,智能家庭、智能建筑、智能零售、智能眼镜等)等。
为了在云环境102上实例化应用、服务、虚拟机等,一些环境可以利用编排***来管理这些应用或服务的部署。例如,图2是用于在计算环境(例如,像图1的云环境一样的云环境102)上部署分布式应用的编排***200的***示意图。通常,编排器***200基于在编排器接收到的请求,自动选择用于应用的部署的服务、资源、和环境。一旦进行了选择,编排器***200就可以与云环境102进行通信以预留一个或多个资源并在云上部署应用。
在一种实施方式中,编排器***200可以包括用户接口202、编排器数据库204、和运行时应用或运行时***206。例如,与企业网络或该网络的管理员相关联的管理***可以利用计算设备来访问用户接口202。通过用户接口202,可以接收和/或显示有关一个或多个分布式应用或服务的信息。例如,网络管理员可以访问用户接口202以提供在计算环境214上安装、实例化、或配置应用或服务的规范或其他指令。用户接口202还可以用于将描述分布式应用和服务的解决方案模型(例如,云和云管理***)发布到计算环境214中。用户接口202进一步可以通过表示由数据库管理的应用状态来提供主动的应用/服务反馈。
用户接口202通过由用户接口执行的数据库客户端208来与编排器数据库204通信。通常,编排器数据库204存储由编排器***200利用的任何数量和种类的数据,诸如,服务模型218、解决方案模型216、功能模型224、解决方案描述符222、和服务记录220。在本文中进一步讨论这些模型和描述符。在一个实施例中,编排器数据库204作为编排器***200的各种组件之间的服务总线操作,使得用户接口202和运行时***206两者都与编排器数据库204通信以提供信息和提取所存储的信息。
多云元编排***(诸如,编排器***200)可以使得分布式应用的架构师能够通过应用的抽象元素或规范对其应用进行建模。通常,架构师从可用抽象元素或功能模型224的库中选择功能组件,定义这些功能模型224如何交互,并且指定用于支持分布式应用的实例化功能模型或功能或基础设施服务。功能模型224可以包括应用编程接口(API)、对功能的一个或多个实例的引用、以及对实例的变元的描述。功能可以是容器、虚拟机、物理计算机、无服务器功能、云服务、分解应用等。因此,架构师可以精巧地制作由一系列功能模型224和功能组成的端到端分布式应用,在本文中将功能模型224和功能的组合称为解决方案模型216。服务模型218可以包括API的强类型定义以帮助支持诸如,功能模型224和解决方案模型216的其他模型。
在一个实施例中,建模基于诸如YAML不是标记语言(YAML)的标记语言,YAML是人类可读的数据串行化语言。诸如可扩展标记语言(XML)或Yang的其他标记语言也可以用于描述这种模型。应用、服务、甚至策略通过这种模型来描述。
编排器中的操作通常是基于意图或承诺的,使得模型描述应该发生什么,而不一定描述如何利用容器、VM等来实现模型。这意味着当应用架构师定义描述解决方案模型216的应用的功能模型224的模型系列时,编排器***200及其适配器212将解决方案模型216转换或实例化成底层(云和/或数据中心)服务上的动作。因此,当将高级解决方案模型216发布到编排器数据库204中时,编排器侦听器、策略、和编译器210可以首先将解决方案模型翻译成较低级且可执行的解决方案描述符----描述横跨一系列云服务发生了什么以实现分布式应用的一系列数据结构。因此,编译器210的作用是将解决方案模型216消除歧义成模型的描述符。
为了通过编排器***200支持应用配置管理,应用服务模型作为服务模型218的子集被包括。应用服务模型与编排器***200中的任何其他服务模型218类似,并且具体描述配置方法,诸如,用于执行诸如REST、Netconf、Restconf等的应用配置管理的API及相关功能和方法。当这些配置服务被包括在应用功能模型中时,API方法与特定应用相关联。附加地,应用简档模型作为功能模型224的子集被包括。应用简档模型对应用配置状态进行模拟并使用来自应用功能的实例的新定义的配置服务。例如,应用简档模型接受来自用户接口202的输入。如在下面所讨论的,输入可以包括第N天(day-N)配置参数。应用服务模型和应用简档模型的这种组合使得已部署应用能够成为类似于编排器***200中的其他服务的可配置服务。
解决方案描述符222可以包括第N天配置参数(在本文中也称为“应用配置参数”)。第N天配置参数包括需要在活动应用中设置的所有配置参数,而不是启动或实例化应用所需要的变元的一部分。第N天配置参数定义已部署应用的状态。第N天配置状态的示例包括:专业媒体工作室中使用的应用可能需要告诉它如何对媒体流进行转码的配置,基于云的防火墙可能需要配置其防火墙行为并允许和拒绝某些流的策略规则,路由器需要描述向哪里发送IP分组的路由规则,并且诸如移动分组核心的线路终端功能可能需要加载计费规则的参数。对应用的第N天配置参数的更新导致应用的配置状态的改变或第N天配置状态的改变。例如,当需要在不同模式下启动防火墙应用时或者当媒体应用的命令行参数改变时,对第N天配置参数的更新可以执行。
编排器的操作员可以激活解决方案描述符222。当这样做时,如通过其描述符描述的功能模型224被激活到底层功能或云服务上并且适配器212将该描述符翻译成物理或虚拟云服务上的动作。服务类型按其功能通过适配器212或适配器模型链接到编排器***200。以这种方式,可以通过与以上针对解决方案模型所描述的类似方式编译适配器模型(在本文中也称为“适配器”)。作为一个示例,为了在某个具体云,例如foo云上启动通用程序bar,foo适配器212或适配器模型取出引述foo的描述符中所写的内容并针对foo API对描述符进行翻译。作为另一示例,如果程序bar是多云应用,例如foo和bletch云,则foo和bletch适配器212两者都被用于将应用部署到这两个云上。
适配器212还用于将已部署应用从一个状态适配到下一个状态。当用于活动描述符的模型被重新编译时,由适配器212将应用空间改变为所预期的下一个状态。这可以包括重启应用组件、完全取消组件、或启动现有应用组件的新版本。这还可以包括通过重启已部署应用的一个或多个应用组件并且将经更新的应用参数集包括在经重启的一个或多个应用组件中来更新已部署应用。换句话说,描述符按照基于意图的操作描述所期望的结束状态,该结束状态激活适配器212以使服务部署适用于此状态。
用于云服务的适配器212也可以将信息发布回编排器数据库204中,供编排器***200使用。具体地,编排器***200可以在反馈循环中使用编排器数据库204中的这种信息和/或用图形表示编排器管理的应用的状态。这种反馈可以包括CPU利用率、存储器利用率、带宽利用率、对物理元件的分配、等待时间、以及基于推送到应用中的配置的应用特定性能细节(如果知道的话)。这个反馈被捕获在服务记录中。出于相关目的,也可以在解决方案描述符中引述记录。编排器***200随后可以使用记录信息来动态地更新已部署应用,以防它不满足所需要的性能目标。
在2018年2月19日提交的美国专利申请15/899,179中进一步讨论了在上述***的背景下部署和管理分布式应用和服务,该申请的全部内容通过引用如同在本文中充分阐述一样并入本申请用于所有目的。
如以上引用的申请中所讨论的,以上讨论的建模捕获到针对以下功能的操作界面,该功能作为由解决方案描述符222所捕获的数据结构。进一步地,编排***提供了使解决方案描述符222适用于与该功能对接所需要的底层方法的适配器框架。例如,为了与诸如DOCKER或KUBERNETES的容器化管理***对接,适配器使用解决方案描述符22并且将该模型翻译为由容器化管理***提供的API。编排器针对其所有服务这样做,这些服务包括但不限于统计和分析引擎、本地部署和公用云产品、诸如媒体应用或防火墙的应用等。适配器212可以用任何编程语言编写;它们的唯一要求是这些适配器212对发布到企业消息总线的建模数据结构起作用并且这些适配器通过服务记录数据结构将部署的反馈提供到企业消息总线上。
3.0过程概述
图4描绘了利用基于云的应用管理技术来管理应用配置状态的方法或算法。图4被以与本领域或本公开所属领域技术人员通常使用的相同细节水平描述,以在本领域技术人员之间交流相同技术领域中的其他程序的算法、规划、或规范。虽然图4的算法或方法示出了在受管理***中提供认证、授权、和计费的多个步骤,但是除非另外指定,否则可以按照任何次序使用图4的一个或多个步骤的任何组合来执行本文描述的算法或方法。
出于示出清楚示例的目的,在本文中在图1和图2的背景中描述图4,但是图4的宽泛原理可以应用于具有不同于图1和图2所示的配置的其他***。进一步地,图4和这里的每个其他流程图示出了可以被用作使用被认为适合该任务的编程开发环境或编程语言来对图2的与该图中示出的功能有关的一个或多个功能模块进行编程的基础的算法或规划。因此,图4和这里的每个其他流程图旨在作为功能级的图示,本公开所属领域的技术人员在功能级相互交流以使用编程来描述并实现算法。流程图不用于示出对工作程序的每个方面进行编程所需要的每个指令、方法对象、或子步骤,而是以通常在本领域的高技术水平下用来传递开发工作程序的基础的高级功能图示提供的。
在一个实施例中,图4表示用于更新计算环境中的已部署应用的配置的计算机实现的方法。已部署应用包括多个实例,每个实例包括一个或多个物理计算机或一个或多个虚拟计算设备。在一个实施例中,已部署应用包括分布式应用。
在一个实施例中,已部署应用包括分布式防火墙应用的多个单独执行的实例,每个实例部署有多个不同策略规则的副本。
在步骤402处,接收更新被托管在数据库中的应用简档模型的请求。该请求指定已部署应用的第一应用配置参数集到第二应用配置参数集的改变。第一应用配置参数集指示已部署应用的当前配置状态,第二应用配置参数集指示已部署应用的目标配置状态。
例如,客户通过用户接口202发出更新应用简档模型的请求。可以用诸如YAML的标记语言来说明更新应用简档模型的请求。该请求可以包括应用配置参数,诸如,指示已部署应用的当前配置状态的第一应用配置参数集和指示已部署应用的目标配置状态的第二应用配置参数集。
在另一实施例中,该请求可以包括第二应用配置参数集。第二应用配置参数集本身可以指示第一应用配置参数集到第二应用配置参数集的改变。
在一个实施例中,应用配置参数在已部署应用中是可配置的,但是不能作为用于实例化应用的变元的一部分配置。
在步骤404处,响应于在步骤402中接收到的请求,使用第二应用配置参数集来更新数据库中的应用简档模型。基于经更新的应用简档模型生成解决方案描述符。解决方案描述符包括第一应用配置参数集和第二应用配置参数集的描述。例如,数据库客户端208更新编排器数据库204中的应用简档模型。应用简档模型可以作为功能模型224的子集被包括。
在一个实施例中,响应于更新应用简档模型,由编排器***200更新与应用简档模型相关联的应用解决方案模型。应用解决方案模型可以作为解决方案模型216的子集被包括在编排器数据库204中。响应于更新应用解决方案模型,运行时***206使用编译器210来编译应用解决方案模型以生成解决方案描述符。
在一个实施例中,解决方案描述符包括第一应用配置参数集和第二应用配置参数集。适配器212随后接收解决方案描述符并且通过确定第一应用配置参数集与第二应用配置参数集之间的差异来确定增量参数集。
在另一实施例中,解决方案描述符包括第二应用配置参数集,并且其他解决方案描述符包括第一应用参数集。
在步骤406处,基于解决方案描述符更新已部署应用。例如,适配器212通过将解决方案描述符翻译成物理或虚拟云服务上的动作来更新已部署应用。
在一个实施例中,基于在步骤404中讨论的增量参数集更新已部署应用。
在一个实施例中,更新已部署应用包括重启已部署应用的一个或多个应用组件并且将第二应用参数集包括在经重启的一个或多个应用组件中。在另一实施例中,更新已部署应用包括更新已部署应用以包括第二应用参数集。
如本文所描述的,一旦利用第二配置参数集更新了已部署应用,用于云服务的适配器212就可以将服务记录发布到编排器数据库204中供编排器***200用来描述已部署应用的状态。已部署应用的状态可以包括定义以下各项的至少一个度量:CPU利用率、存储器利用率、带宽利用率、对物理元件的分配、等待时间、或应用特定性能细节以及可能对应用实施的配置。可以将发布到编排器数据库204的服务记录与导致该服务记录的创建的解决方案描述符配对。然后,可以将这种服务记录更新用于反馈循环和策略执行。
图3A示出了应用配置管理的示例。考虑可以作为带有容器的Kubernetes(k8s)受管理荚果(managed pod)被部署并且能够接收视频信号作为输入、在这种信号上覆盖徽标、并且产生作为输出的结果的媒体应用。这种应用徽标***器306可以由功能模型模拟(如图2中的功能模型224所描绘的),该功能模型(1)使用与特定输入视频302的格式和传输机制相关联的服务模型的视频服务实例,(2)使用与k8s API相关联的k8s服务模型的k8s服务304实例,并且(3)提供与特定输出视频308的格式和传输机制相关联的服务模型的视频服务实例。
进一步假定媒体应用提供了配置徽标覆盖图的大小的能力。这种配置可以作为k8s服务消费的一部分的第0天配置参数(例如,作为容器环境变量)被提供,并且在相关联的消费者服务模型中被模拟。
然而,出于本示例的目的,应用可以提供第N天配置机制,诸如,基于Netconf/Yang的机制、代表性状态转移(REST)、或专有编程机制。可以使用相同的模拟机制来捕获这个应用,特别地:
定义了定义通用Yang配置的提供商和消费者服务模型。利用一对特定的“徽标***器”Netconf服务模型312、320对Yang模型进行扩展。这捕获了徽标***器应用接受的特定的第N天配置。在本示例中,它保存包括徽标的大小的Yang模型。通过添加新提供的服务类型“徽标***器Netconf”320来更新徽标***器318的功能模型。为徽标***器简档314定义另一功能,该另一功能使用“徽标***器Netconf”312并且保存实际应用配置(例如,具体徽标大小)。最后,两个功能被部署在单独的解决方案模型A 310和B 316中,并且如图3B中所示地连接。解决方案模型的连接确保了只有当徽标***功能(及其解决方案)“上线”时才将应用配置应用于徽标***功能。
当解决方案A 310被激活时,Netconf/Yang适配器读取在徽标***器简档314功能中指定的实际徽标大小并且经由Netconf将其推送给徽标***器318功能从而推送给应用。同一适配器可以提取徽标***器的Netconf/Yang操作状态并且使其可用在服务记录中。
对解决方案A 310中的徽标***器简档314实例的后续更新触发Netconf适配器利用经更新的配置重新配置徽标***器318。通过实施,对徽标***器简档314的更新导致解决方案模型被重新编译,解决方案描述符被更新,并且使得应用配置适配器更新已部署应用。
与所有建模和基于承诺/意图的操作一样,可以周期性地测试已部署应用集的有效性和一致性。考虑到应用简档是标准建模的一部分,周期性地测试配置参数。这意味着如果应用崩溃并被云***重启,则适当的应用简档被自动地推送到应用实例中。本文描述的技术适用于物理、虚拟、或云化应用。
本文描述的方法和算法有许多优点。通常,这些方法和算法有助于组织分布式应用部署的所有建模和实施。通过单个数据集和描述,可以通过这样的编排***来管理分布式应用的应用生命周期的所有部分。这导致对计算机硬件和软件的改进且更高效的使用,从而可以使用更少的计算能力和/或存储器,并且允许实现应用部署的更快管理。这是对计算机***的功能性的直接改进,并且是使得计算机***能够执行***先前不能执行的任务和/或更快且更高效地执行先前能够执行的任务的直接改进。
4.0实施方式示例—硬件概述
根据一个实施例,本文描述的技术由至少一个计算设备实现。这些技术可以全部或部分地使用通过诸如,分组数据网络的网络耦合的至少一个服务器计算机和/或其他计算设备的组合来实现。计算设备可以被硬连线以执行这些技术或者可以包括数字电子设备,例如,被永久编程以执行这些技术的至少一个专用集成电路(ASIC)或现场可编程门阵列(FPGA),或者可以包括被编程为按照固件、存储器、其他存储装置、或组合中的程序指令执行这些技术的至少一个通用硬件处理器。这种计算设备还可将自定义硬连线逻辑、ASIC、或FPGA与自定义编程组合在一起来实现所描述的技术。计算设备可以是服务器计算机、工作站、个人计算机、便携式计算机***、手持设备、移动计算设备、可穿戴设备、身体安装或可植入设备、智能电话、智能电器、互联设备、诸如机器人或无人驾驶地面或航空飞行器的自主或半自主设备、包括硬连线和/或程序逻辑以实现所描述的技术的任何其他电子设备、数据中心中的一个或多个虚拟计算机器或实例、和/或服务器计算机和/或个人计算机的网络。
图5是示出可以实现实施例的示例计算机***的框图。在图5的示例中,按照本公开所属领域的普通技术人员用于交流计算机架构和计算机***实施方式的相同细节水平,将计算机***500和硬件、软件、或硬件和软件的组合中用于实现所公开的技术的指令示意性地表示为例如,框和圆圈。
计算机***500包括输入/输出(I/O)子***502,该I/O子***可以包括用于通过电子信号路径在计算机***500的组件之间传送信息和/或指令的总线和/或其他通信机制。I/O子***502可以包括I/O控制器、存储器控制器、和至少一个I/O端口。电子信号路径在附图中被示意性地表示为例如,直线、单向箭头、或双向箭头。
至少一个硬件处理器504被耦合到I/O子***502,用于处理信息和指令。硬件处理器504可以包括例如,通用微处理器或微控制器和/或专用微处理器(诸如,嵌入式***或图形处理单元(GPU)或数字信号处理器或ARM处理器)。处理器504可以包括集成算术逻辑单元(ALU)或者可以耦合到单独的ALU。
计算机***500包括诸如主存储器的存储器506的一个或多个单元,该存储器被耦合到I/O子***502以用于电子地数字存储将由处理器504执行的数据和指令。存储器506可以包括易失性存储器,诸如,各种形式的随机存取存储器(RAM)或其他动态存储设备。存储器506还可以被用于在将由处理器504执行的指令的执行期间存储临时变量或其他中间信息。这种指令在被存储在处理器504可访问的非暂态计算机可读存储介质中时,可以使得计算机***500成为被定制为执行指令中指定的操作的专用机器。
计算机***500进一步包括非易失性存储器,诸如,只读存储器(ROM)508或耦合到I/O子***502以用于为处理器504存储信息和指令的其他静态存储设备。ROM 508可以包括各种形式的可编程ROM(PROM),诸如,可擦除PROM(EPROM)或电可擦除PROM(EEPROM)。永久性存储装置510的单元可以包括各种形式的非易失性RAM(NVRAM),诸如,闪速存储器或固态存储装置、磁盘或诸如CD-ROM或DVD-ROM的光盘,并且可以被耦合到I/O子***502以用于存储信息和指令。存储装置510是可以用于存储指令和数据的非暂态计算机可读介质的示例,这些指令和数据在由处理器504执行时,使得执行计算机实现的方法从而执行本文的技术。
存储器506、ROM 508、或存储装置510中的指令可以包括被组织为模块、方法、对象、函数、例程、或调用的一个或多个指令集。可以将指令组织为一个或多个计算机程序、操作***服务、或包括移动应用在内的应用程序。指令可以包括操作***和/或***软件;支持多媒体、编程、或其他功能的一个或多个库;实现TCP/IP、HTTP、或其他通信协议的数据协议指令或堆栈;解析或渲染使用HTML、XML、JPEG、MPEG、或PNG编码的文件的文件格式处理指令;渲染或解释用于图形用户接口(GUI)、命令行接口、或文本用户接口的命令的用户接口指令;诸如办公套件、互联网接入应用、设计和制造应用、图形应用、音频应用、软件工程应用、教育应用、游戏或混杂应用的应用软件。指令可以实现web服务器、web应用服务器、或web客户端。可以将指令组织为表示层、应用层、和数据存储层,诸如,使用结构化查询语言(SQL)或不使用SQL的关系数据库***、对象存储区、图形数据库、平面文件***、或其他数据存储装置。
计算机***500可以经由I/O子***502被耦合到至少一个输出设备512。在一个实施例中,输出设备512是数字计算机显示器。可以在各种实施例中使用的显示器的示例包括触摸屏显示器或发光二极管(LED)显示器或液晶显示器(LCD)或电子纸显示器。作为对显示设备的替代或补充,计算机***500可以包括其他类型的输出设备512。其他输出设备512的示例包括打印机、票证打印机、绘图仪、投影仪、声卡或视频卡、扬声器、蜂鸣器或压电设备或其他可听设备、灯或发光二极管(LED)或液晶显示器(LCD)指示器、触觉设备、致动器、或伺服器。
至少一个输入设备514被耦合到I/O子***502以用于向处理器504传送信号、数据、命令选择、或手势。输入设备514的示例包括触摸屏、麦克风、静止和视频数码相机、字母数字和其他按键、键区、键盘、图形平板、图像扫描仪、操纵杆、时钟、开关、按钮、拨号盘、滑块、和/或诸如力传感器、运动传感器、热传感器、加速度计、陀螺仪、和惯性测量单元(IMU)传感器的各种类型的传感器、和/或诸如无线(诸如,蜂窝或Wi-Fi)、射频(RF)、或红外(IR)收发器和全球定位***(GPS)收发器的各种类型的收发器。
另一类型的输入设备是控制设备516,可替代地或除了输入功能之外,该控制设备还可以执行光标控制或其他自动控制功能,诸如,在显示屏上的图形界面中导航。控制设备516可以是用于向处理器504传送方向信息和命令选择并且用于控制显示器512上的光标移动的触摸板、鼠标、轨迹球、或光标方向键。输入设备可以具有第一轴(例如,x)和第二轴(例如,y)这两个轴中的至少两个自由度轴,这使得设备能够指定平面中的位置。另一类型的输入设备是有线、无线、或光学控制设备,诸如,操纵杆、指挥棒(wand)、控制台、方向盘、踏板、变速机构、或其他类型的控制设备。输入设备514可以包括诸如,摄像机和深度传感器的多个不同输入设备的组合。
在另一实施例中,计算机***500可以包括物联网(IoT)设备,其中,省略了输出设备512、输入设备514、和控制设备516中的一者或多者。或者,在这样的实施例中,输入设备514可以包括一个或多个相机、运动检测器、温度计、麦克风、地震检测器、其他传感器或检测器、测量设备、或编码器,并且输出设备512可以包括专用显示器,诸如,单行LED或LCD显示屏、一个或多个指示器、显示面板、仪表、阀、螺线管、致动器、或伺服器。
当计算机***500是移动计算设备时,输入设备514可以包括耦合到GPS模块的全球定位***(GPS)接收器,该GPS模块能够对多个GPS卫星进行三角测量,确定并生成地理位置或方位数据(诸如,计算机***500的地球物理定位的纬度-经度值)。输出设备512可以包括用于单独或与其他应用特定数据相结合地生成被导向主机524或服务器530的位置报告分组、通知、脉冲或心跳信号、或指定计算机***500的位置的其他重复数据传输的硬件、软件、固件、和接口。
计算机***500可以使用自定义硬连线逻辑、至少一个ASIC或FPGA、固件和/或程序指令或逻辑来实现本文描述的技术,这些程序指令或逻辑在被与计算机***相结合地加载并使用或执行时,使得或将计算机***编程为作为专用机器操作。根据一个实施例,本文的技术由计算机***500响应于处理器504执行主存储器506中包含的至少一个指令的至少一个序列来执行。可以将这种指令从诸如,存储装置510的另一存储介质读取到主存储器506中。主存储器506中包含的指令序列的执行使得处理器504执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路代替软件指令或者与软件指令相结合地使用硬连线电路。
如本文所使用的术语“存储介质”是指存储促使机器以特定方式操作的数据和/或指令的任何非暂态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如,光盘或磁盘,诸如存储装置510。易失性介质包括动态存储器,诸如存储器506。存储介质的常见形式包括例如,硬盘、固态驱动器、闪存驱动器、磁性数据存储介质、任何光学或物理数据存储介质、存储器芯片等。
存储介质不同于传输介质但是可以与传输介质相结合地使用。传输介质参与在存储介质之间转移信息。例如,传输介质包括同轴电缆、铜线、和光纤,包括包含I/O子***502的总线的电线。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的声波或光波。
可以在将至少一个指令的至少一个序列承载到处理器504以供执行时用到各种形式的介质。例如,指令最初可以被承载在远程计算机的磁盘或固态驱动器上。远程计算机可将指令加载到其动态存储器中并且使用调制解调器通过诸如光纤或同轴电缆或电话线路的通信链路来发送指令。计算机***500本地的调制解调器或路由器可以在通信链路上接收数据并且将该数据转换为可由计算机***500读取的格式。例如,诸如射频天线或红外检测器的接收器可以接收无线或光信号中承载的数据并且适当电路可以将该数据提供给I/O子***502,诸如将该数据放置在总线上。I/O子***502将数据承载到存储器506,处理器504从存储器506提取并执行指令。由存储器506接收到的指令可以任选地在由处理器504执行之前或之后被存储在存储器510上。
计算机***500还包括耦合到总线502的通信接口518。通信接口518提供到网络链路520的双向数据通信耦合,这些网络链路被直接或间接连接到至少一个通信网络,诸如网络522或因特网上的公用或私用云。例如,通信接口518可以是以太网联网接口、综合服务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器、或提供到对应类型的通信线路(例如,以太网电缆或任何种类的金属电缆或光纤线路或电话线路)的数据通信连接的调制解调器。网络522广义上表示局域网(LAN)、广域网(WAN)、校园网、互联网、或它们的任何组合。通信接口518可以包括:LAN卡,用于提供到兼容LAN的数据通信连接;或蜂窝无线电话接口,其被布线以根据蜂窝无线电话无线联网标准来发送或接收蜂窝数据;或卫星无线电接口,其被布线以根据卫星无线联网标准来发送或接收数字数据。在任何这种实施方式中,通信接口518在信号路径上发送和接收电、电磁、或光信号,这些信号承载表示各种类型的信息的数字数据流。
网络链路520通常使用例如,卫星、蜂窝、Wi-Fi、或蓝牙技术来直接或通过至少一个网络向其他数据设备提供电、电磁、或光数据通信。例如,网络链路520可以提供通过网络522到主机计算机524的连接。
此外,网络链路520可以提供通过网络522或经由由因特网服务提供商(ISP)526运营的互联设备和/或计算机到其他计算设备的连接。ISP 526通过被表示为因特网528的全球分组数据通信网络来提供数据通信服务。服务器计算机530可以被耦合到因特网528。服务器530广义上表示具有或没有管理程序的任何计算机、数据中心、虚拟机、或虚拟计算实例或执行诸如VMWARE、DOCKER、或KUBERNETES的容器化程序***的计算机。服务器530可以表示使用一个以上计算机或实例来实现并且通过发送web服务请求、在HTTP净荷中具有参数的统一资源定位符(URL)字符串、API调用、应用服务调用、或其他服务调用来访问和使用的电子数字服务。计算机***500和服务器530可以形成分布式计算***的元件,该分布式计算***包括其他计算机、处理集群、服务器场、或合作执行任务或者执行应用或服务的计算机的其他组织。服务器530可以包括被组织为模块、方法、对象、函数、例程、或调用的一个或多个指令集。可以将指令组织为一个或多个计算机程序、操作***服务、或包括移动应用在内的应用程序。指令可以包括操作***和/或***软件;支持多媒体、编程、或其他功能的一个或多个库;实现TCP/IP、HTTP、或其他通信协议的数据协议指令或堆栈;解析或渲染使用HTML、XML、JPEG、MPEG、或PNG编码的文件的文件格式处理指令;渲染或解释图形用户接口(GUI)、命令行接口、或文本用户接口的命令的用户接口指令;诸如办公套件、互联网接入应用、设计和制造应用、图形应用、音频应用、软件工程应用、教育应用、游戏或混杂应用的应用软件。服务器530可以包括托管表示层、应用层、和数据存储层的web应用服务器,诸如使用结构化查询语言(SQL)或不使用SQL的关系数据库***、对象存储区、图形数据库、平面文件***、或其他数据存储装置。
计算机***500可以通过网络、网络链路520、和通信接口518来发送消息并接收数据和指令(包括程序代码)。在因特网示例中,服务器530可能通过因特网528、ISP 526、本地网络522、和通信接口518来发送应用程序的请求代码。接收到的代码可以在它被接收时由处理器504执行,和/或被存储在存储装置510或其他非易失性存储装置中供以后执行。
本部分描述的对指令的执行可以以正在被执行并且由程序代码及其当前活动构成的计算机程序的实例的形式实现进程。取决于操作***(OS),进程可能由同时执行指令的多个执行线程组成。在这种上下文中,计算机程序是指令的被动合集,而进程可以是对那些指令的实际执行。若干进程可以与同一程序相关联;例如,打开同一程序的若干实例常常意味着正在执行一个以上进程。可以实现多任务以允许多个进程共享处理器504。虽然每个处理器504或处理器的核心每次执行单个任务,但是计算机***500可以被编程为实现多任务处理以允许每个处理器在正在执行的任务之间切换,而不必等待每个任务完成。在一个实施例中,可以在任务执行输入/输出操作时、在任务指示它能够被切换时、或在硬件中断时执行切换。可以实现分时以通过快速执行上下文切换来对交互式用户应用进行快速响应,从而提供多个进程同时并发执行的表象。在一个实施例中,为了安全性和可靠性,操作***可以阻止独立进程之间的直接通信,从而提供严格介导且受控的进程间通信功能。
5.0扩展和替代方案
在前面的说明书中,已参考可以根据实施方式变化的许多具体细节描述了本发明的实施例。因此,应该认为本说明书和附图是说明性而不是限制性的。本发明的范围的唯一且排他的指示以及申请人想要作为本发明的范围的内容是以权利要求的具体形式从本申请公布的权利要求的集合的字面和等效范围,包括任何后续校正。
本公开包括由描述和附图构成的附件1、附件2、附件3、和附件4,这些附件通过引用并入到优先权文件中并且在本公开中明确地阐述相同的主题。
用于分布式应用的部署的策略驱动编排的***和方法
技术领域
本公开总地涉及计算领域,更具体地涉及对各种计算环境中的分布式应用的部署应用策略。
背景技术
许多计算环境或基础设施通过通信网络提供对可配置资源(诸如,计算服务、存储装置、应用、联网设备等)池的共享访问。这样的计算环境的一种类型可以被称为云计算环境。云计算环境允许具有各种计算能力的用户和企业在私有云中或者在公共可用云中存储并处理数据,以使数据访问机制更高效、可靠。通过云环境,可以改善软件应用或服务对于云环境的用户的可访问性和使用的方式,横跨各种云资源分发这些应用或服务。
当部署分布式应用时,这种应用的设计者和运营商时常需要做出许多运营决策:将应用部署到哪个云(诸如,公用云还是私用云),应该利用哪个云管理***来部署和管理应用,将应用作为容器还是虚拟机运行或执行,应用是否可作为无服务器功能操作。另外,运营商可能需要考虑用于执行应用的监管要求、将应用作为测试周期的一部分还是作为实地部署的一部分部署、和/或应用可能需要更多还是更少的资源来实现所期望的关键性能目标。这些考虑事项时常可以被称为在计算环境中部署分布式应用或服务的策略。
对于分布式应用的部署的各种策略的考虑可以是长期且复杂的过程,因为策略对应用和计算环境的影响需要被平衡以确保合理的部署。在一些实例中,针对分布式应用的各种策略的这种平衡可以由云环境、企业网络、或应用本身的供应商或管理员执行。在其他实例中,可以利用编排器***或其他管理***来基于请求自动选择用于部署应用的服务和环境。不管所利用的部署***如何,云计算环境(或其他分布式计算环境)中与分布式应用或服务相关联的策略的应用和连续监控可能需要网络的重要管理员或管理资源。进一步地,针对应用的许多策略都会在策略难以应用和管理员***费时方面存在冲突。
附图说明
通过参考附图中示出的本公开的具体实施例,本公开的上述及其他优点和特征将变得显而易见。在理解这些附图仅描绘了本公开的示例实施例并且因此不应被认为限制其范围后,通过使用附图以附加的详情和细节来描述并说明本文的原理,在附图中:
图1是示例云计算架构的***示意图;
图2是用于在计算环境上部署分布式应用的编排***的***示意图;
图3是示出用于对分布式应用解决方案模型应用策略的编译流水线的示意图;
图4是用于执行策略应用以对分布式应用模型应用策略的方法的流程图;
图5是示出用于在分布式应用模型上应用一系列策略的调用流的示意图;
图6是编排***利用一种或多种策略更新分布式应用的解决方案模型的方法的流程图;
图7是示出应用了不同策略的解决方案模型的合集的树形图;以及
图8示出了示例***实施方式。
具体实施方式
下面详细讨论本公开的各种实施例。虽然讨论了具体实施方式,但是应该理解的是,这仅为了说明的目的。相关领域技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其他组件和配置。
概述:
公开了一种用于在计算环境上部署分布式应用的***、网络设备、方法、和计算机可读存储介质。部署可以包括:从编排器***的数据库获取用于部署分布式应用的服务描述的初始解决方案模型,该初始解决方案模型包括多个部署策略标识符的列表,每个部署策略标识符与用于在计算环境上部署分布式应用的运营决策相对应;以及执行与多个部署策略标识符的列表中的第一部署策略标识符相对应的策略应用。通常,策略应用可以应用用于在计算环境上部署分布式应用的第一运营决策来生成用于在计算环境上部署分布式应用的新解决方案模型并且将用于部署分布式应用的新解决方案模型存储在数据库中,该新解决方案模型包括解决方案模型标识符,该解决方案模型标识符包括第一部署策略标识符。在执行策略应用之后,可以将新解决方案模型转换为包括用于在计算环境上运行分布式应用的服务组件的描述符。
示例实施例:
本公开的各方面涉及用于在一系列策略的控制下将抽象应用和关联服务模型编译为可部署描述符、维护并实施策略与应用/服务之间的依赖关系、以及将策略作为定期管理的策略应用本身来部署的***和方法。具体地,描述了一种编排***,该编排***包括一个或多个策略应用,该一个或多个策略应用被执行以对计算环境中的可部署应用或服务应用策略。通常,编排***进行操作来基于接收到的部署请求创建用于在一个或多个计算环境(诸如,一个或多个云计算环境)上执行应用的一个或多个解决方案模型。应用请求可以包括用于部署的一个或多个规范,包括一个或多个策略。这种策略可以包括但不限于资源消费考虑事项、安全考虑事项、监管策略、和网络考虑事项等。利用应用部署规范和策略,编排***创建一个或多个解决方案模型,该一个或多个解决方案模型在被执行时,将应用部署在各种选择的计算环境上。
具体地,由编排器生成的解决方案模型可以包括在被激活时被编译以指示一个或多个计算环境如何在云环境上部署应用的指令。为了应用策略考虑事项,编排器可以在分布式应用的解决方案模型的各种迭代上执行一个或多个策略应用。对于计算环境上的新创建的解决方案模型或现有的分布式应用,可以进行策略应用的这种执行。
在一种具体实施方式中,可以在流水线或策略链中对所希望的分布式应用或服务的解决方案模型应用策略以在流水线内产生中间解决方案模型,同时最后应用的策略应用的输出模型相当于可由编排器执行以用于在计算环境上分发应用的描述符。因此,通过由编排***执行的第一策略应用来对应用应用第一策略,然后通过第二策略应用来应用第二策略,依此类推直到应用的每个策略被执行为止。作为结果的应用描述符随后可以由编排器在云环境上执行以便实现分布式应用。以类似的方式,对策略的更新或其他改变(基于对现有分布式应用的监控)也可以被实现或应用于分布式应用。在针对分布式应用的模型解决方案完成各种策略应用时,可以将分布式应用部署在计算环境上。这样,一个或多个策略应用可以由编排器执行,以在云计算环境中的分布式应用或服务的解决方案模型上应用底层部署策略。
在又一种实施方式中,可以将在策略链期间生成的解决方案模型的各种迭代存储在编排器的模型解决方案的数据库中。解决方案模型的迭代可以包括在解决方案模型上执行策略应用时用于指导的已应用策略和待应用策略的列表。进一步地,因为存储了解决方案模型的迭代,所以一个或多个策略应用的执行可以在任意一个解决方案模型上进行,从而去除了对于应用策略的每个改变都要对模型解决方案进行完整的重新编译的需要。这样,可以响应于所确定的对计算环境的改变而更快、更高效地更改所部署的应用。另外,由于策略本身是由编排器执行的应用,所以可以对策略应用策略以进一步提高编排器***和底层计算环境的效率。
从图1的***开始,示出了示例云计算架构100的示意图。该架构可以包括云计算环境102。云102可以包括一个或多个私用云、公用云、和/或混合云。此外,云102可以包括任何数量和类型的云元件104-114,诸如,服务器104、虚拟机(VM)106、一个或多个软件平台108、应用或服务110、软件容器112、和基础设施节点114。基础设施节点114可以包括各种类型的节点,诸如,计算节点、存储节点、网络节点、管理***等。
云102可以经由云元件104-114向云环境的一个或多个客户端116提供各种云计算服务。例如,云环境102可以提供软件即服务(SaaS)(例如,协作服务、电子邮件服务、企业资源规划服务、内容服务、通信服务等)、基础设施即服务(IaaS)(例如,安全服务、联网服务、***管理服务等)、平台即服务(PaaS)(例如,万维网(web)服务、流传输服务、应用开发服务等)、功能即服务(FaaS)、和其他类型的服务(诸如,桌面即服务(DaaS)、信息技术管理即服务(ITaaS)、受管理软件即服务(MSaaS)、移动后端即服务(MBaaS)等)。
客户端点116与云102连接以从云102获取一个或多个特定服务。例如,客户端点116经由一个或多个公用网络(例如,因特网)、私用网络、和/或混合网络(例如,虚拟专用网络)与元件104-114通信。客户端点116可以包括具有联网能力的任何设备,诸如,膝上型计算机、平板计算机、服务器、台式计算机、智能电话、网络设备(例如,接入点、路由器、交换机等)、智能电视、智能汽车、传感器、GPS设备、游戏***、智能可穿戴对象(例如,智能手表等)、消费对象(例如,因特网冰箱、智能照明***等)、城市或交通***(例如,交通控制、收费***等)、物联网(IoT)设备、相机、网络打印机、交通***(例如,飞机、火车、摩托车、轮船等)、或任何智能或连接对象(例如,智能家庭、智能建筑、智能零售、智能眼镜等)等。
为了在云环境102上实例化应用、服务、虚拟机等,一些环境可以利用编排***来管理这种应用或服务的部署。例如,图2是用于在计算环境(诸如,像图1的云环境一样的云环境102)上部署分布式应用的编排***200的***示意图。通常,编排器200基于在编排器接收到的请求自动选择用于部署应用的服务、资源、和环境。一旦进行了选择,编排器200就可以与云环境100进行通信以预留一个或多个资源并在云上部署应用。
在一种实施方式中,编排器200可以包括用户接口202、数据库204、和运行时应用或***206。例如,与企业网络或该网络的管理员相关联的管理***可以利用计算设备来访问用户接口202。通过用户接口202,可以接收和/或显示有关一个或多个分布式应用或服务的信息。例如,网络管理员可以访问用户接口202以提供在云环境214上安装或实例化应用或服务的规范或其他指令。用户接口202还可以用于将描述分布式应用和服务的解决方案模型(例如,云和云管理***)发布到云环境214中。用户接口202进一步可以通过表示由数据库管理的应用状态来提供主动的应用/服务反馈。
用户接口202通过由用户接口执行的数据库客户端208来与数据库204进行通信。通常,数据库204存储由编排器200利用的任何数量和种类的数据,诸如,服务模型、解决方案模型、虚拟功能模型、解决方案描述符等。在一个实施例中,数据库204作为编排器200的各种组件之间的服务总线来操作,使得用户接口202和运行时***206两者都能与数据库204通信以既提供信息又提取存储的信息。
编排器运行时***206是通常对云环境214应用服务或应用解决方案描述符的已执行应用。例如,用户接口202可以存储用于在云环境214中部署应用的解决方案模型。可以从与用户接口202通信的管理***向用户接口提供解决方案模型,用于特定应用的部署。在将解决方案模型存储在数据库204中时,运行时***206被通知并且利用编译器应用210来将模型编译为准备好用于部署的描述符。运行时***206也可以并入一系列适配器212,该系列适配器使得解决方案描述符适用于底层(云)服务214和关联的管理***。更进一步地,运行时***206可以包括将状态存储在与分布式应用相关联的数据库204中的一个或多个侦听模块,如在下面更详细地说明的,这可以触发将一种或多种并入的策略重新应用到应用中。
通常,解决方案模型表示将由编排器200部署的分布式应用或组成服务的模板。这样的模板在高级别下描述作为应用和/或服务的一部分的功能以及这些功能如何相互连接。在一些实例中,解决方案模型包括将被用以帮助基于模型定义描述符的策略的有序列表。描述符通常是通过由运行时***206的适配器218进行解释来精确描述如何在云环境214中部署解决方案的数据结构。
在一种实施方式中,***200的每个解决方案模型可以包括唯一标识符(也称为解决方案标识符)、待应用以完成编译的策略的有序列表(其中的每个策略包括被称作策略标识符的唯一标识符)、已执行策略的有序列表、用信号通知需要编译、激活、还是单独留下解决方案的期望完成状态、以及对分布式应用(即,应用中的功能、它们的参数、及它们的互连)的描述。也可以在存储在数据库204中的解决方案模型中包括应用的更多或更少信息。
如以上所提及的,运行时***206对来自数据库204的解决方案模型的应用和关联描述符进行编译。描述符列举用于使应用在云环境214上成功运行的所有应用和关联服务组件。例如,描述符列举使用了什么云服务和管理***、什么输入参数被用于组件和关联服务、什么网络和网络参数被用于操作应用等。因此,在编译期间应用于解决方案模型的策略会影响在云上部署应用的若干方面。
在一种实施方式中,对解决方案模型的编译可以由运行时***206在一个或多个策略的控制下完成。具体地,运行时***206可以包括被配置为对存储在数据库204中的解决方案模型应用特定策略的一个或多个策略应用。策略可以包括但不限于诸如以下各项的考虑事项:
·工作负荷安排相关策略。这些策略评估什么资源在云环境214中可用、横跨各种云服务进行部署的成本(用于计算、联网、和存储)、以及应用及其组成部分的关键性能目标(可用性、可靠性、和性能),以基于所评估的参数来改进应用模型。如果应用已经是活动的或被部署,则这种策略可以使用所测量的性能数据来改进模型。
·生命周期管理相关策略。这些策略考虑了应用在编译期间的操作状态。如果应用处于开发中,则这些策略是可以将编译指向对公用或虚拟私用云资源的使用并且可以包括测试联网和存储环境的策略。另一方面,当将应用作为真正实况部署的一部分来部署时,生命周期管理策略加入用于此类实况部署的操作参数中且支持用于容量的实况升级、持续交付升级、二进制文件和可执行文件的更新(即,软件升级)等的功能。
·安全策略。取决于所期望的最终用途(例如,考虑地区约束),这些策略通过在应用模型中***密码密钥材料、在建模的端点之间部署防火墙和虚拟私用网络、将针孔提供到防火墙中、并且禁止将应用部署到某些托管设施上来为应用精巧地制作适当的联网和托管环境。
·监管策略。监管策略确定可以如何基于一个或多个监管来部署应用。例如,当管理对最终客户(财务)数据进行操作的财务应用时,很有可能约束这种数据的本地性-----可能存在禁止跨境导出这种数据的规则。类似地,如果受管理应用对地区封锁(媒体)数据进行寻址,则可以将这种数据的计算和存储托管在该地区内部。因此,这种策略假定(分布式)应用/服务模型并且被提供有一系列监管约束。
·网络策略。这些策略管理网络连接性并且生成虚拟私用网络,建立带宽/等待时间感知网络路径,对路由网络进行分段等。
·递归策略。这些策略适用于堆叠到其他云服务上的动态地实例化的云服务,其可以基于其他云服务。这种堆叠是通过递归的方式实现的,使得当模型被编译为其描述符时,策略可以动态地生成并发布反映堆叠云服务的新云服务模型。
·应用特定策略。这些策略是与被编译的应用具体关联的策略。这些策略可以用于生成或创建用于建立服务链的参数和功能、完全合格的域名和其他IP参数、和/或其他应用特定参数。
·存储策略。对于信息资源的本地性重要的应用(例如,因为这些应用巨大,所以不能离开特定位置,或者因为运送此类内容的代价过高),存储策略可以将应用放置得靠近内容。
·多层次用户/租户访问策略。这些策略是描述用户权限的策略(允许特定用户使用哪些云、资源、服务等,应该根据用户组实施什么安全策略和其他策略)。
除其他策略外,以上提及的策略的执行可以由运行时***206在编译存储在数据库204中的应用解决方案模块时执行。具体地,策略应用(与将应用于分布式应用的特定策略相关联的每个策略应用)侦听或以其他方式被告知存储在数据库204上的解决方案模型。当运行时***206的策略应用检测到它可以处理的模型时,从数据库204读取该模型,实施其策略并且将结果返回到数据库以供后续策略实施。以这种方式,可以由运行时***206在用于分布式应用的解决方案模型上执行策略链或流水线。通常,策略应用可以是用任何种类的编程语言编写并且使用任一种平台来托管该策略应用的任何种类的程序。可将示例性的策略应用构建为托管在平台即服务上的无服务器Python应用。
可以将由运行时***206执行的编译过程理解为流水线或策略链,其中,解决方案模型在被翻译成描述符的同时通过策略进行变换。例如,图3示出了用于对分布式应用解决方案模型应用策略的编译流水线300。对用于分布式应用的特定解决方案模型的编译从示意图300的左侧流向右侧,从第一解决方案模型302开始并且以可以由运行时***206执行以在云环境214上部署与模型解决方案相关联的应用的解决方案描述符318结尾。
在所示出的特定示例中,将在编译期间对解决方案模型应用三种策略。具体地,解决方案模型302包括待应用策略的列表320。如以上所讨论的,策略可以是编排器200在云环境214中部署应用或服务时承诺的任何考虑事项。在沿着策略链300的每个步骤,策略应用将解决方案模型作为输入并且产生不同的解决方案模型作为策略应用的结果。例如,策略应用A304接收解决方案模型302作为输入,将策略A应用于该模型,然后输出解决方案模型306。类似地,策略应用B 308接收解决方案模型304作为输入,将策略B应用于该模型,并且输出解决方案模型310。此过程继续到策略列表320中列举的所有策略都被应用于解决方案模型为止。当所有策略都被应用时,结束步骤316将作为结果的解决方案模型314翻译为解决方案描述符318。在一些实例中,可以将结束步骤316自身认为是策略。
在沿着策略链300的每个步骤,策略应用由运行时***206执行以对解决方案模型应用策略。图4示出了用于执行策略应用以对分布式应用解决方案模型应用一个或多个策略的方法400的流程图。换句话说,在策略链300中用于编译模型的每个策略应用都可以执行图4中描述的方法400的操作。在其他实施例中,操作可以由编排器200的运行时***206或任何其他组件执行。
在操作402开始,运行时***206或策略应用检测存储在编排器200的数据库204中的用于编译的解决方案模型。在一个实例中,解决方案模型可以是由编排器200的管理员或用户通过用户接口202存储在数据库204中的新解决方案模型。新解决方案模型可以描述将在云环境214上执行或实例化的分布式应用。在另一实例中,可以更改云214上现有或已经实例化的应用或者可能在环境内发生策略改变,使得需要应用的新部署。进一步地,对数据库204中经更新的或新解决方案模型的检测可以来自编排器200中的任何来源。例如,用户接口202或数据库204可以通知运行时***206新模型将被编译。在另一示例中,运行时***206的侦听器模块210可以检测特定应用的策略改变并且通知策略应用对作为编译策略链300的一部分的应用执行策略改变。
在检测到待编译的解决方案模型时,运行时***208或策略应用可以在操作404中访问数据库204来提取该解决方案模型。所提取的解决方案模型可以类似于编译链300的解决方案模型302。如图所示,解决方案模型302可以包括从第一策略开始的在编译期间应用于模型的策略的列表320。在操作406中,如果策略身份与策略应用的策略匹配,则策略应用将对应的策略应用于解决方案模型。例如,解决方案模型302包括以列举策略A开始的策略列表320。如以上所提及的,策略列表320包括待应用于解决方案模型的策略的列表。因此,运行时***206执行策略应用A(元素304)来将该特定策略应用于解决方案模型。
在解决方案模型上执行由策略应用定义的策略之后,策略应用或运行时应用206可以移动或更新待应用策略的列表320以指示已在操作408中发出特定策略。例如,图3的编译流水线300中示出的第一解决方案模型302包括待应用于解决方案模型的策略的列表320。在应用策略A 304之后,生成包括仍待应用的策略的列表322的新解决方案模型306。新解决方案模型306中的列表322不包括策略A 304,因为先前应用过该策略。在一些实例中,解决方案模型包括待应用策略的列表和已在流水线300中应用于解决方案的策略的列表两者。因此,在此操作中,编排器200可以将策略标识从“待办”列表移到“完成”列表。在其他实例中,编排器200可以简单地从策略的“待办”列表中去除策略标识。
在操作410中,运行时***206可以重命名解决方案模型以指示新解决方案模型是从策略应用输出的并且在操作412中将新解决方案模型存储在数据库中。例如,图3的流水线300指示策略应用B 308输入解决方案模型306以将策略B应用到该解决方案中。策略应用308的输出是包括仍待应用于解决方案模型的策略的更新列表324的新解决方案模型310。然后,可以将输出解决方案模型310存储在编排器***200的数据库204中供编排器进一步使用(诸如,作为策略应用C 312的输入)。在一个特定实施例中,可以将输出解决方案模型放在用于编排器***200的消息总线上供存储在数据库204中。
通过以上讨论的方法400,可以将一个或多个策略执行到一个或多个云计算环境中的分布式应用的解决方案模型中。当分布式应用要求若干策略时,可以执行策略应用的流水线300以将策略应用于存储在编排器200的数据库204中的解决方案模型。因此,可以通过独立的应用侦听并发布到消息总线来将策略应用于分布式解决方案,所有这些都通过跨消息总线交换消息合作来将进程模型执行成描述符来部署在计算环境中。
现在转向图5,示出了用于在分布式应用模型上应用一系列策略的调用流程的示意图500。通常,调用流程由以上讨论的编排器***200的组件执行。通过调用流程500,由编排器架构师创建的原始模型包含已应用策略的空列表(其中,待应用策略的列表由解决方案模型存储或维护)。在通过各种策略应用来处理模型的同时,所维护的数据结构(即,正被编译的模型)列举已应用了哪些策略以及仍需要应用哪些策略。当最后策略被应用时,输出模型包含待应用策略的空列表并且描述符被生成。
更具体地,运行时***206可以作为在图3中示出为流水线300的编译进程的整体管理器来操作。因此,运行时***206(在图5中也示出为框502)将解决方案模型存储到数据库204中的流水线300。这在图5中被示出为调用506,其中,模型X(具有策略:a、b、和c)被发送到数据库503并被存储在数据库503中。在一个实施例中,通过将解决方案模型X放在编排器200的消息总线上来存储该模型。可以将针对解决方案模型ID的特定命名方案用作X.Y,其中,X是输入解决方案模型的ID,Y是已应用策略ID。与为描述符的每个改变创建新模型相反,这种约定使得策略易于识别输出模型是否已经存在并更新它。
在将初始解决方案模型存储在数据库503中之后,运行时***502被激活以开始编译进程。具体地,运行时***502注意到解决方案模型将包括策略a、b、和c(如将作为模型的一部分完成存储的策略列表中所指出的)。作为响应,运行时***506执行策略应用A504。如上所述,策略应用可以执行若干操作以对模型应用策略。例如,策略应用A 504在调用510中从数据库503调用模型X并且将策略A应用于所提取的模型。一旦应用了策略,策略应用A504就更改待应用策略的列表(即,从待办列表中去除策略a),并且在一个实施例中,改变解决方案模型的名称以反映已应用策略。例如,策略应用A 504可以在应用策略A之后创建新解决方案模型并且将该模型作为模型X.a存储在数据库503中(调用514)。
一旦模型X.a被存储,运行时***502就可以分析所存储的模型以确定待应用的下一个策略是策略b(如待应用策略ID的列表中所指出的)。作为响应,运行时***502执行策略应用B 508,该策略应用B 508继而从数据库503获取模型X.a(调用518)并且将策略b应用于该模型。与上面类似,策略应用B 508更新模型中的策略ID列表以去除策略b(因为策略b现在已应用于解决方案模型)并且生成被重命名的新模型输出(诸如,模型X.a.b)。然后,在调用520中将此新模型存储在数据库503中。针对策略c执行类似的方法(执行策略应用C516,在调用522中获取模型X.a.b,应用策略c来生成新解决方案模型,并且在调用524中将新模型X.a.b.c存储在数据库503中)。
一旦模型中列举的所有策略被应用,运行时***516就从数据库503获取作为结果的模型(X.a.b.c)并且生成用于将解决方案部署到计算环境上的描述符(诸如,描述符X)。描述符包括所有已应用策略并且可以在调用528中被存储在数据库503中。一旦被存储,描述符就可以由运行时***206部署到计算环境214上以供编排***200的用户使用。
注意,编译调用流程或流水线的所有中间模型被保留在数据库503中并且可以被用于调试目的。这有助于在一些中间策略发生改变的情况下减少模型重新编译所需的时间。例如,如果策略b由用户或通过来自部署反馈的事件改变,则策略b仅需要查找并处理已经通过策略a预编译的中间模型。该方法提高了策略应用的整体时间效率。下面详细讨论对中间存储的解决方案模型的使用。
如图5的调用流程图500中所示,运行时***502可以执行一个或多个策略应用以对用于在诸如云的计算环境中部署分布式应用或服务的解决方案模型应用策略。图6是利用一个或多个策略来更新分布式应用的解决方案模型的方法600的流程图。通常,方法600的操作可以由编排***200的一个或多个组件执行。方法600的操作描述了以上讨论的调用流程图。
在操作602开始,编排器的运行时***502检测存储在数据库503中的解决方案模型的更新或创建。在一个实施例中,编排器的用户接口202(或其他组件)可以将分布式应用或服务的解决方案模型存储在数据库503中。在另一实施例中,运行时***206提供对已部署应用或服务的更新的指示。例如,应用描述符和帮助创建这些描述符的策略可以是相互关联的。因此,当取决于特定策略的应用和/或服务描述符得以更新时,可以利用特定策略的新版本来重新评估应用/服务。在重新评估时,可以触发并执行解决方案模型的重新编译。进一步地,由于编译调用流程或流水线的所有中间模型都被保留在数据库503中并且可以被用于调试目的,所以与***从基础解决方案模型开始时比,可以在更少的时间内完成此重新编译。
在操作604中,运行时***506可以确定哪些策略是意图用于解决方案模型的,并且在一些实例中,可以在操作606中为解决方案模型创建策略应用列表。例如,解决方案模型可以包括待应用策略的列表,作为解决方案模型的一部分。在另一示例中,运行时***502或其他编排组件可以获取应用的规范并且响应于这些规范来确定待应用于分布式应用或服务的策略。不管如何确定用于模型解决方案的策略的类型和数量,都创建策略ID的列表并将其存储在解决方案模型中,供用在特定模型的编译流水线中。
在操作608中,运行时***502从数据库503获取初始解决方案模型,包括待应用于模型的策略的列表。在操作610中,运行时***针对模型执行与策略ID列表中的第一策略相对应的策略应用。如以上所讨论的,对策略应用的执行包括从数据库503中提取模型、将策略应用到模型上、更新策略列表以去除已应用策略的策略ID、重命名输出模型以可能包括已应用策略的策略ID、以及将经更新的解决方案模型存储在数据库中。可以在策略应用的执行期间执行其他或更少的操作。
在操作612中,运行时***502可以确定在策略列表中是否剩下更多的策略。如果是,则方法600返回操作610以执行所描述的顶部列举的策略ID应用来对解决方案模型应用附加策略。如果在“待办”策略列表中未剩下策略,则运行时***506可以继续至操作614,其中,最终解决方案模型被存储在数据库503中以转换成用于在计算环境中部署应用或服务的描述符。
通过上述***和方法,可以实现在部署分布式应用或服务时的若干优点。例如,策略应用和编译流水线的使用可以允许在与分布式应用相关联的记录或策略改变时自动重新编译解决方案。具体地,一些策略可以使用来自相同或不同解决方案的服务记录(即,由列举应用或服务的状态的编排器200所创建的记录)的内容作为用于策略实施的输入。这种策略的示例是使用给定云服务的状态来确定安排的工作负荷安排策略、可以使用解决方案的应用到维度的某些方面的状态的负载均衡策略、或其他策略。服务记录可以是动态的,使得编排器200可以自由地更新它们,从而即使模型本身保持不变,也会在服务记录改变时将策略重新应用于数据库204的解决方案模型。
与服务记录的改变类似,策略和策略应用本身也可以改变。考虑到将策略实现为应用,在策略应用上应用的生命周期事件改变会可以导致策略应用的新版本被生成。当发生这种改变时,可以执行对从属解决方案模型的重新评估以将对策略或策略应用的改变应用于创建并存储在数据库204中的解决方案模型。
为了跟踪服务记录、策略、和模型之间的依赖关系,应用于解决方案模型的每个策略可以在经处理的模型中***已被用作输入的服务记录及其自己的标识的列表,该列表表现为如以上所讨论的已应用策略的列表。编排器运行时应用206可以监视服务记录和策略应用改变,并且在检测到改变时,选择存储在包括对经更新的服务记录和/或策略应用的依赖关系的数据库204中的所有解决方案模型。这可以触发对所提取的解决方案模型的触及范围的重新编译以将经改变的服务记录或策略应用应用于解决方案模型。进一步地,这保证了记录或策略应用改变激活所有受影响的编译流水线仅一次。考虑到策略应用本身可能取决于其他策略应用,可以在更新策略和/或策略应用时触发重新编译和重新配置的级联。
现在参考图4的调用流程图400针对图3的编译流水线300讨论经更新的服务记录或策略的一个示例。具体地,假定策略B 508和策略C 512使用服务记录Y作为输入。在编译期间,并且更具体地在由运行时***206执行策略B应用508和策略C应用512期间,对服务记录Y的引用被分别包括在模型X.a.b和X.a.b.c中。当服务记录Y由云计算环境更新时,运行时服务206可以检测到更新,确定模型X包括被更新的服务记录Y,从数据库204中提取原始模型X,并且更新解决方案模型修订,这继而会触发对解决方案模型X的完全重新编译。在一些实例中,通过仅提取并更新包括依赖于服务记录的策略的那些解决方案模型也可能进行部分重新编译。例如,由于X.a不受对服务记录Y的改变的影响,所以运行时服务206可以获取并更新模型X.a.b和模型X.a.b.c。
在又一种实施方式中,编排器200可以允许策略在输出解决方案模型中不仅指示它取决于的服务记录,而且还指示定义记录中的哪些改变应该触发重新编译的约束集。例如,策略可以指示它取决于服务记录Y并且只有当该服务记录中的特定操作值超过给定阈值时才需要重新编译。运行时***206随后评估约束并且在满足约束的情况下触发重新编译。
通过上述***和方法获得的另一优点包括应用定义与策略应用的分离。具体地,虽然解决方案模型描述了分布式应用看起来像什么,但是待应用策略的列表确定了如何在计算环境上部署这样的解决方案模型。可能在不同的环境(私用、公用等)中或在不同的阶段(测试、开发、生产等)中以不同的方式部署同一解决方案模型,使得可以单独地维护这些组件。在一种实施方式中,可以利用上述***和方法的模型继承来提供这种分离。
例如,***200的每个解决方案模型可以扩展为另一解决方案模型并且(尤其)可以添加待应用策略。一种方法是使基础解决方案模型仅包含应用描述而不包含待应用策略。也可以通过添加将在应用的部署中应用的具体策略来生成扩展第一解决方案模型的一组导出的解决方案模型。例如,解决方案模型A可以定义4k媒体处理流水线,而扩展解决方案模型B和C可以扩展A并且分别利用将在测试环境中部署分布式应用的策略和将在生产环境中部署分布式应用的策略来扩大A。虽然可以将解决方案模型A的期望状态视为“不活动的”,但是可以针对应用的部署根据需要独立地激活解决方案B和C。这样,我们具有这样的模型树,其中,每个叶子通过唯一的策略集合来表示。
图7示出了具有以上述方式应用的不同策略的解决方案模型的合集的树形图700。如图所示,该树形图包括解决方案模型A的根节点702。如所描述的,这个解决方案模型作为解决方案模型可以是惰性的或不活动的。然而,可以向模型A 702添加第一策略β以创建扩展模型B 704,并且可以向模型A添加第二策略γ以创建扩展模型C 706。在一种实施方式中,策略β可以表示测试环境中的应用部署并且策略γ可以表示生产环境中的应用部署。应该明白的是,树形图700中包括的策略可以是上述用于在计算环境中部署应用的任何策略。可以进一步扩展解决方案模型B 704以包括用于创建模型D 708的策略δ和用于创建模型E710的策略ε。在一个具体示例中,策略δ可以是安全策略,而策略ε可以是监管策略,但是可以在树形图700中表示任何策略。
通过基础和导出的解决方案模型,可以提高计算环境中的已部署应用的创建或更新的效率。具体地,不是响应于对策略的更新(或将新策略添加到分布式应用)而重新编译解决方案模型,而是编排器200可以获取包括未被更新或影响的其他要求的策略的中间解决方案模型并且利用经更新的策略重新编译该中间解决方案模型。换句话说,如果任意一个中间策略改变,则仅需要重新编译相应的子树而不是从基础模型解决方案开始重新编译。这样,相比先前的编译***,可以减少重新编译解决方案模型所花费的时间和资源。
另外,如上所述,可以在编排器200中将每个策略实例化为用于执行的应用本身。因此,每个策略应用本身就是应用并且因此由在解决方案模型中运行的功能来模拟。这样的功能可以定义策略的API,即这样的策略接受的配置元素。当模型调用待应用策略时,它在待应用策略的列表中指示策略身份。该策略身份是指实现对应的策略应用的模型和功能。当要编译模型时,编排器的责任是确保所有策略应用都是活动的。
通常,策略应用仅在应用编译过程期间是活动的。这些应用实例在它们暂时尚未被使用时可以被作为垃圾回收。此外,策略应用在理论上可以被实现为无服务器功能,但是可以被典型编排器200应用利用的部署形式也适用于策略应用。
图8示出了计算***800的示例,其中,该***的组件使用连接805来相互通信。连接805可以是经由总线的物理连接或进入处理器810的直接连接(诸如,在芯片组架构中)。连接805也可以是虚拟连接、联网连接、或逻辑连接。
在一些实施例中,计算***800是分布式***,其中,本公开中描述的功能可以分布在数据中心、多个数据中心、对等网络等内。在一些实施例中,所描述的***组件中的一个或多个表示许多这样的组件,每个组件执行对该组件进行描述所针对的功能中的一些或全部。在一些实施例中,组件可以是物理或虚拟设备。
示例***800包括至少一个处理单元(CPU或处理器)810和连接805,该连接805将包括诸如只读存储器(ROM)820和随机存取存储器(RAM)825的***存储器815在内的各种***组件耦合到处理器810。计算***800可以包括与处理器810直接连接、与处理器810极为接近或作为处理器810的一部分集成的高速存储器的高速缓存。
处理器810可以包括被配置为控制处理器810的任何通用处理器和硬件服务或软件服务(诸如,存储在存储设备830中的服务832、834、和836),以及软件指令被并入到实际处理器设计中的专用处理器。处理器810本质上可以是完全自包含的计算***,包含多个核心或处理器、总线、存储器控制器、高速缓存等。多核心处理器可以是对称的或不对称的。
为了实现用户交互,计算***800包括输入设备845,其可以表示任何数量的输入机制,诸如,用于语音的麦克风、用于姿势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等。计算***800也可以包括输出设备835,其可以是本领域技术人员已知的许多输出机制中的一种或多种。在一些实例中,多模态***可以使得用户能够提供多种类型的输入/输出来与计算***800进行通信。计算***800可以包括通信接口840,其通常可以控制并管理用户输入和***输出。对任何特定硬件设备上的操作没有限制,因此基本特征在这里可以随着它们被开发而很容易被改进的硬件或固件布置取代。
存储设备830可以是非易失性存储设备并且可以是硬盘或可存储可由计算机访问的数据的其他类型的计算机可读介质,诸如,磁带盒、闪速存储器卡、固态存储器设备、数字通用盘、盒、随机存取存储器(RAM)、只读存储器(ROM)、和/或这些设备的某种组合。
存储设备830可以包括软件服务、服务器、服务等,当定义这种软件的代码由处理器810执行时,其使得***执行功能。在一些实施例中,执行特定功能的硬件服务可以包括可连同必要的硬件组件(诸如,处理器810、连接805、输出设备835等)一起执行功能的、存储在计算机可读介质中的软件组件。
为了说明的清楚,在一些实例中,可以将本技术呈现为包括单独的功能块,这些功能块包括含有设备、设备组件、以软件实现的方法中的步骤或例程、或硬件和软件的组合的功能块。
可以单独地或与其他设备相结合地通过一个或多个硬件和软件服务的组合来执行或实现本文所述的步骤、操作、功能、或处理中的任一者。在一些实施例中,服务可以是驻留在内容管理***的一个或多个服务器和/或便携式设备的存储器中的软件,并且可以在处理器执行与该服务相关联的软件时执行一个或多个功能。在一些实施例中,服务是执行特定功能的程序或程序的合集。在一些实施例中,可以认为服务是服务器。存储器可以是非暂态计算机可读介质,
在一些实施例中,计算机可读存储设备、介质、和存储器可以包括包含比特流等的电缆或无线信号。然而,当被提及时,非暂态计算机可读存储介质明确地排除诸如,能量、载波信号、电磁波、和信号本身的介质。
可以使用被存储在计算机可读介质中或可以从计算机可读介质中获取的计算机可执行指令来实现根据上述实施例的方法。这种指令可以包括例如,使得或配置通用计算机、专用计算机、或专用处理设备执行某个功能或功能组的指令和数据。可通过网络访问所使用的计算机资源的各部分。计算机可执行指令可以是例如,二进制文件、诸如汇编语言的中间格式指令、固件、或源代码。可以用于存储指令、所使用的信息、和/或在根据描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、固态存储器设备、闪速存储器、具有非易失性存储器的USB设备、联网存储设备等。
实现根据这些公开的方法的设备可以包括硬件、固件、和/或软件,并且可采取各种形状因数中的任一种。这种形状因数的一般示例包括服务器、膝上型电脑、智能电话、小型个人计算机、个人数字助理等。也可在***设备或附加卡中实现本文所述的功能性。作为另外的实施例,也可以在不同芯片之中的电路板上或者在单个设备上执行的不同进程上实现这种功能性。
指令、用于传递这种指令的介质、用于执行它们的计算资源、以及用于支持这种计算资源的其他结构是用于提供这些公开中描述的功能的手段。
尽管使用各种示例和其他信息来说明所附权利要求的范围内的各方面,但是不应该基于这种示例中的特定特征或布置暗示对权利要求的限制,因为本领域的普通技术人员将能够使用这些示例来导出各式各样的实施方式。进一步地,尽管已经用特定于结构特征和/或方法步骤的示例的语言描述了某个主题,但是应当理解的是,所附权利要求书中限定的主题不一定局限于这些描述的特征或行为。例如,可在除本文标识的组件以外的组件中不同地分布或执行这种功能性。相反,所描述的特征和步骤作为在所附权利要求的范围内的***和方法的组件的示例被公开。
/>
/>
/>
/>
/>
/>
/>
/>
/>
/>
/>
用于在服务上实例化服务的***和方法
相关申请
本申请要求于2017年9月14日递交的标题为“SYSTEMS AND METHODS FORINSTANTIATING SERVICES ON TOP OF SERVICES(用于在服务上实例化服务的***和方法)”的美国临时申请No.62/558,668的35U.S.C§119下的优先权,该申请的全部内容通过引用完全并入本文以用于所有目的。
技术领域
本公开总地涉及计算领域,更具体地涉及一种用于横跨一个或多个云或其他计算***分发应用的编排器。
背景技术
许多计算环境或基础设施通过通信网络提供对可配置资源(诸如,计算服务、存储装置、应用、联网设备等)池的共享访问。这样的计算环境的一种类型可以被称为云计算环境。云计算环境允许具有各种计算能力的用户和企业在私有云中或者在公共可用云中存储并处理数据,以便使数据访问机制更高效、可靠。通过云环境,可以改善软件应用或服务对于云环境的用户的可访问性和使用的方式,横跨各种云资源分发这些应用或服务。
云计算环境的运营商常常托管来自许多不同租户或客户的许多不同的应用。例如,第一租户可以将云环境和底层资源和/或设备用于数据托管,而另一客户可以将云资源用于联网功能。通常,每个客户可以针对其具体的应用需求配置云环境。分布式应用的部署可以通过应用或云编排器进行。因此,编排器可以接收规范或其他应用信息并且可以确定哪些云服务和/或组件被接收到的应用利用。如何分发应用的决策过程可以利用对于编排器可用的任何数量的进程和/或资源。
通常,每个应用具有它自己的功能要求:一些在特定操作***上工作,一些作为容器来操作,一些被理想地部署为虚拟机,一些遵循无服务器操作范例,一些利用要精巧地制作的特殊网络,并且一些可能需要新颖的云原生部署。现今,常见做法是在提供所有应用规范的一个云环境中分发应用。然而,在许多实例中,应用工作负荷可以在来自各种云环境的大量(云)服务上更高效地操作。在其他实例中,当不同云环境可以更好地满足应用的需求时,应用规范可以请求特定操作***或云环境。提供在云环境中部署应用的灵活性可以改善云中的分布式应用的操作和功能。
附图说明
通过参考在附图中示出的本公开的具体实施例,本公开的上述及其他优点和特征将变得显而易见。在理解这些附图仅描绘了本公开的示例实施例并且因此不应被认为限制其范围后,通过使用附图以附加的详情和细节来描述并说明本文的原理,在附图中:
图1是示例云计算架构的***示意图;
图2是用于在计算环境上部署分布式应用的编排***的***示意图;
图3是示出通过编排器向云计算环境发起分布式应用的示意图;
图4是示出云计算环境中的分布式应用的数据结构之间的依赖关系的示意图;
图5是示出创建云服务以在云计算环境中实例化分布式应用的示意图;
图6是示出创建云适配器以在云计算环境中实例化分布式应用的示意图;
图7是示出改变云计算环境中的底层云资源的容量的示意图;
图8是示出做出动态部署决策以在计算环境上托管应用的示意图;
图9是示出编排器在计算环境中堆叠服务的主要操作的示意图;及
图10示出了示例***实施例。
具体实施方式
下面详细讨论本公开的各种实施例。虽然讨论了具体实施方式,但是应该理解的是,这仅用于说明的目的。相关领域技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其他组件和配置。
概述:
公开了一种用于在计算环境上部署分布式应用的***、网络设备、方法、和计算机可读存储介质。部署可以包括导出环境解决方案模型和环境描述符,该环境描述符包括用于运行计算环境的底层服务的服务组件,这些服务组件与用于部署分布式应用的初始解决方案模型有关。部署还可以包括实例化计算环境的多个服务组件,包括从接收到的环境解决方案模型导出环境解决方案描述符,该环境描述符包括由分布式应用利用的多个服务组件的描述。
实施例实施方式:
本公开的各方面涉及用于进行以下各项的***和方法:(a)对分布式应用进行建模以进行多云部署,(b)通过策略导出可执行编排器描述符,(c)将底层(云)服务(私用、公用、无服务器、和虚拟专用)建模为分布式应用本身,(d)在这些云服务对分布式应用不可用时动态地创建这些云服务,(e)通过相当于管理分布式应用的方式管理资源;并且(f)呈现这些技术如何可堆叠。由于应用可以被构建在云服务上,而云服务本身可以被构建在其他云服务(例如,公用云上的虚拟专用云等)上,所以甚至云服务本身可以被认为是应用本身,因此可以支持将云服务放置在其他云服务上。通过在云计算环境中的服务上实例化服务,实现了在云环境中分发应用时的附加灵活性,从而允许更高效地运行云。
从图1的***开始,示出了示例通用云计算架构100的示意图。在一个特定实施例中,该架构可以包括云环境102。云环境102可以包括一个或多个私用云、公用云、和/或混合云。此外,云环境102可以包括任何数量和类型的云元件104-114,诸如,服务器104、虚拟机(VM)106、一个或多个软件平台108、应用或服务110、软件容器112、和基础设施节点114。基础设施节点114可以包括各种类型的节点,诸如,计算节点、存储节点、网络节点、管理***等。
云环境102可以经由云元件104-114向云环境的一个或多个客户端点116提供各种云计算服务。例如,云环境102可以提供软件即服务(SaaS)(例如,协作服务、电子邮件服务、企业资源规划服务、内容服务、通信服务等)、基础设施即服务(IaaS)(例如,安全服务、联网服务、***管理服务等)、平台即服务(PaaS)(例如,万维网(web)服务、流传输服务、应用开发服务等)、功能即服务(FaaS)、和其他类型的服务(诸如,桌面即服务(DaaS)、信息技术管理即服务(ITaaS)、受管理软件即服务(MSaaS)、移动后端即服务(MBaaS)等)。
客户端点116与云环境102连接以从云环境102获取一个或多个特定服务。例如,客户端点116经由一个或多个公用网络(例如,因特网)、私用网络、和/或混合网络(例如,虚拟专用网络)与云元件104-114进行通信。客户端点116可以包括具有联网能力的任何设备,诸如,膝上型计算机、平板计算机、服务器、台式计算机、智能电话、网络设备(例如,接入点、路由器、交换机等)、智能电视、智能汽车、传感器、全球定位***(GPS)设备、游戏***、智能可穿戴对象(例如,智能手表等)、消费对象(例如,因特网冰箱、智能照明***等)、城市或交通***(例如,交通控制、收费***等)、物联网(IoT)设备、相机、网络打印机、交通***(例如,飞机、火车、摩托车、轮船等)、或任何智能或连接对象(例如,智能家庭、智能建筑、智能零售、智能眼镜等)等。
为了在云环境102上实例化应用、服务、虚拟机等,一些环境可以利用编排***来管理这种应用或服务的部署。例如,图2是用于在计算环境(诸如,像图1的云环境一样的云环境102)上部署分布式应用的编排***200的***示意图。通常,编排器***200基于在编排器接收到的请求自动选择用于部署应用的服务、资源、和环境。一旦进行了选择,编排器***200就可以与云环境102进行通信以预留一个或多个资源并在云上部署应用。
在一种实施方式中,编排器***200可以包括用户接口202、编排器数据库204、和运行时应用或运行时***206。例如,与企业网络或该网络的管理员相关联的管理***可以利用计算设备来访问用户接口202。通过用户接口202,可以接收和/或显示有关一个或多个分布式应用或服务的信息。例如,网络管理员可以访问用户接口202以提供在计算环境214上安装或实例化应用或服务的规范或其他指令。用户接口202也可以用于将描述分布式应用和服务的解决方案模型(例如,云和云管理***)发布到计算环境214中。用户接口202进一步可以通过表示由数据库管理的应用状态来提供主动的应用/服务反馈。
用户接口202通过由用户接口执行的数据库客户端208来与编排器数据库204进行通信。通常,编排器数据库204存储由编排器***200使用的任何数量和种类的数据,诸如,服务模型、解决方案模型、虚拟功能模型、解决方案描述符等。在一个实施例中,编排器数据库204作为编排器***200的各种组件之间的服务总线来操作,使得用户接口202和运行时***206两者都与编排器数据库204通信以既提供信息又提取存储的信息。
多云元编排***(诸如,编排器***200)可以使得分布式应用的架构师能够通过应用的抽象元素或规范对其应用进行建模。通常,架构师从可用的抽象元素或功能模型的库中选择功能组件,定义这些功能模型如何交互,并且使用基础设施服务,即实例化功能模型—功能—来支持分布式应用。功能模型可以包括应用编程接口(API)、对功能的一个或多个实例的引用、和对实例的变元的描述。功能可以是容器、虚拟机、(裸机)电器、无服务器功能、云服务、已分解应用等。因此,架构师可以精巧地制作由一系列功能模型和功能组成的端到端分布式应用,功能模型和功能的组合在本文中被称为“解决方案模型”。
编排器中的操作通常是基于意图或承诺的,使得模型描述应该发生什么而不一定描述“它”是如何发生的。这意味着当应用架构师定义描述解决方案模型的应用的功能模型的一系列模型时,编排器***200及其适配器212将解决方案模型转换或实例化为底层(云和/或数据中心)服务上的动作。因此,当高级解决方案模型被发布到编排器数据库204中时,编排器侦听器、策略、和编译器组件210(在下文中称为“编译器”)可以首先将解决方案模型翻译为较低级且可执行的解决方案描述符----描述横跨一系列云服务发生了什么以实现分布式应用的一系列数据结构。因此,编译器210的作用是将解决方案模型消除歧义成该模型的描述符。
将模型编译为描述符通常是基于策略的。这意味着当正在编译模型时,策略可以影响编译的结果:可以确定用于解决方案的联网参数,策略可以决定在哪里托管特定应用(工作负荷安排),什么新的或现有的(云)服务要折叠到解决方案中,并且基于解决方案的特定状态将解决方案部署在治理测试环境中或者作为应用的生命周期的一部分部署为实况部署。此外,当重新编译模型(即,在这些模型被激活时更新模型)时,策略可以将已经存在的模型的操作状态用于微调编排器应用。编排器策略管理是分布式应用的生命周期的一部分并且总体上驱动编排器***200的操作。
编排器的操作员可以激活解决方案描述符。当这样做时,通过其描述符描述的功能模型被激活到底层功能(即,云服务)上,并且适配器212将该描述符翻译为物理或虚拟云服务上的动作。服务类型按其功能通过适配器212或适配器模型链接到编排器***200。以这种方式,可以通过与以上针对解决方案模型描述的类似方式编译适配器模型(在本文中也称为“适配器”)。作为示例,为了在特定云,例如foo云上启动通用程序bar,foo适配器212或适配器模型取出引述foo的描述符中所写的内容并针对foo API翻译描述符。作为另一示例,如果程序bar是多云应用,例如,foo和bletch云,则foo和bletch适配器212两者都用于将应用部署到这两个云上。
适配器212还用于将已部署应用从一个状态适配到下一个状态。当用于活动描述符的模型被重新编译时,由适配器212将应用空间变形为所预期的下一个状态。这可以包括重启应用组件、完全取消组件、或启动现有应用组件的新版本。换句话说,描述符按照基于意图的操作描述所期望的结束状态,该期望的结束状态激活适配器212将服务部署适配到此状态。
用于云服务的适配器212也可以将信息发布回编排器数据库204供编排器***200使用。具体地,编排器***200可以在反馈循环中使用编排器数据库204中的这种信息和/或用图形表示编排器管理的应用的状态。这种反馈可以包括CPU利用率、存储器利用率、带宽利用率、对物理元件的分配、等待时间、和应用特定性能细节(如果知道的话)。这种反馈被捕获在服务记录中。出于相关目的,也可以在解决方案描述符中引述记录。编排器***200随后可以使用记录信息来动态地更新已部署应用,以防它不满足所需要的性能目标。
在下面更详细地讨论的编排器***200的一个特定实施例中,编排器可以就像分布式应用的部署一样部署(云)服务:即,相对于传统上称作应用空间的东西,(云)服务更像是底层基板(underlying substrate)的应用。因此,本公开描述了对具有私用、公用、无服务器、和虚拟专用云基础设施的底层云服务上的分布式应用的动态实例化和管理以及对分布式(云)服务的动态实例化和管理。在一些实例中,编排器***200将云服务作为应用本身来管理,并且在一些实例中,这样的云服务本身可以使用另一底层云服务,该底层云服务又像编排器应用一样被建模和管理。
这提供了(云)服务的堆叠,这些服务在与分布式应用本身结合时最终达到堆叠在计算环境214中的服务上的服务的端到端应用。
例如,假定一个或多个分布式应用利用foo云***并且在编排器***200中被激活。进一步地,假定没有foo云服务可用或者可用于在任意一个可用的foo云上运行应用的资源不足。在这样的实例中,编排器***200可以在虚拟专用云上通过(公用或私用)裸机服务动态地创建或扩展foo云服务。如果这样的foo云服务随后利用虚拟专用云***,则可以将虚拟专用云***建模为应用并且完全与foo云和启动它的原始编排器应用类似地被管理。类似地,如果编排器***200发现太多资源被分配给foo,则它可以签订底层裸机服务合同。
下面描述的是编排器***200支持所描述的公开的各方面的详细描述。在贯穿始终描述的一个特定示例中,名为bar的应用被部署在单个被动态实例化的foo云中,以突出编排器***200中的数据参与者以及由编排器用于其操作的数据结构。另外描述的是可以如何动态地创建(云)服务、多云部署如何操作、以及可以如何在编排器***200中执行生命周期管理。
现在转向图3,示出了数据流示意图300,该数据流示意图示出通过云计算环境的编排器***200发起名为bar的应用。本示意图中使用的主要组件包括:
·用户接口202,为编排器***200的操作员提供用户接口。
·编排器数据库204,作为用于模型、描述符、和记录的消息总线。
·运行时***206,包括将解决方案模型翻译为描述符的编译器。作为运行时***的一部分,策略可以增强编译。策略可以解决资源管理功能、工作负荷和云安排功能、网络供应(network provisioning)等。这些功能通常被实现为运行时***的串联功能,并且随着模型被编译,针对特定部署描述符驱动编译。
·适配器212,其使描述符适用于底层功能(并因此适用于云服务)。通常,适配器自身可以是可管理的应用。在一些实例中,适配器212是运行时***206的一部分或者可以是分开的。
·示例性的foo云适配器302和foo云环境,被动态地创建为提供服务的功能。
通常,编排器***200可以维护三个主要的数据结构:解决方案模型、解决方案描述符、和服务记录。解决方案模型(或简称为模型)用于描述应用如何挂在一起、利用什么功能模型、以及使用什么底层服务(即,功能)。一旦模型被编译为解决方案描述符(或描述符),就在编排器数据库204中发布该描述符。虽然模型可以支持模糊关系,但是在描述符中通常不包含歧义-----这些描述符可以通过适配器212和底层云服务“执行”。消除歧义通常由运行时***206执行。一旦向适配器212通知了新描述符的可用性,适配器就拾取该描述符,使该描述符适用于底层云服务,并且通过启动(或改变/停止)应用部分来实现应用。
编排器***200的主要数据结构(模型、描述符、和记录)维护复杂的应用和服务状态。为此,数据结构可以互相引用。解决方案模型维护高级应用结构。这种模型的编译实例(称为描述符)指向从其得出这些编译实例的模型。当描述符是活动的时,此外,创建一个或多个服务记录。这种服务记录由相应的编排器适配器212创建,并且包括对这些服务记录所依赖于的描述符的引用。
如果将活动描述符构建在另一动态实例化的(云)服务上,则该底层服务通过其模型和描述符被激活。这些依赖关系被记录在应用描述符和动态创建的(云)服务中。图4呈现了这些依赖关系的图形表示。例如,图4的m(a,0)402和m(a,1)404是用于应用A的两个模型,d(a,0)406和d(a,1)408表示取决于这些模型的两个描述符,而r(a,1,x)410和r(a,1,y)412表示列举d(a,1)的应用状态的两个记录。模型m(a,1)404和m(a,0)402是相互依赖的,因为它们是相同的模型,不同之处是对它们应用了不同的部署策略。当将描述符部署在驻留的(云)服务上时,该驻留服务的适配器简单地在记录中发布数据,而无需通过模型和描述符来描述该记录。
在所示出的示例中,将两个动态(云)服务创建为模型:m(s1)414和m(s2)416。这两个模型都被编译和部署并且通过其数据结构来描述。通过保存模型与描述符之间的引用关系,运行时***可以(1)找出应用和服务的部署之间的依赖关系,(2)使这种信息可用于图形表示,并且(3)在需要时清理资源。例如,如果d(a,1)408被取消,则编排器***200可以推断出d(s1,0)418和d(s2,0)420不再被任何应用使用并且决定丢弃这两个部署。编排器***200编译器可以托管帮助编译器将模型编译为描述符的一系列策略。如图4所示,d(a,0)406和d(a,1)408实质上指代同一模型,并且可以在应用不同的策略时创建这些不同的描述符-----例如d(a,0)可以指代利用公用云资源的部署,而d(a,1)可以指代虚拟专用云部署。在后一种情况下,m(s1)414随后可以指代与所有虚拟专用网络参数相关联的描绘例如,公用云环境上的虚拟专用云的模型,而m(s2)416指代专用数据中心资源上的在本地保存并动态创建的虚拟专用云。通常将这种策略实现为编译器的串联功能并且在需要编译的解决方案模型中引述这种策略的名称。
再次参考图3,在云foo上启动称为bar的应用的部署。在步骤[1]304开始,用户通过经由用户接口202将模型提交到编排器***200中来提交要执行应用bar的请求。通过模型描述的这个应用请求foo云运行并且为由模型凭证定义的订户运行。这个消息被发布到编排器数据库204,并且渗入到侦听模型数据库中的更新的那些实体。在步骤[2]306中,运行时***206获悉要启动应用bar的请求。由于bar请求云环境foo,所以编译器210从功能模型数据库中拉出功能模型foo的定义(步骤[3]308)并且进一步将解决方案模型编译为用于应用bar的解决方案描述符。
作为编译的一部分,在步骤[4]310中激活资源管理器策略。当资源管理器策略在编译用于bar的解决方案模型时发现foo云不存在或者未以适当的形式存在(例如,按凭证对适当的用户来说不存在)时,在步骤[5]312中,资源管理器211将描述期望什么类型的foo云的模型存放到编排器数据库204中并且暂停对应用bar的编译(所存储的经部分编译的描述符的状态为“激活”)。下面更详细地描述foo云和适配器的创建。如步骤[6]314中所示,一旦foo云存在,并且使运行时***206感知到此(步骤[7]316),运行时***206就再次拉出bar模型(步骤[8]318)并且资源管理器211(重新)启动编译(步骤[9]320)。当应用bar被编译(步骤[10]322)时,描述符被发布到编排器数据库204中(步骤[11]324)并且现在可以被部署。
在步骤[12]326中,foo云适配器302从编排器数据库204中拾取描述符并且在步骤[13]328中将应用部署到foo云上,在步骤[14]330中在云适配器处接收应用的激活的指示。在步骤[15]332中,启动操作被记录在编排器数据库204的服务记录中。随着应用继续进行,foo云适配器302将关于应用的其他重要事实发布到编排器数据库204中(步骤[15-17]332-336及以后)。
现在参考图5和图6,分别示出了可以如何创建foo云和foo云适配器来支持应用bar。换句话说,foo云和云适配器本身可以由编排器实例化为应用,应用bar可以被部署在foo云和云适配器的应用上。这里,作为示例,foo云由一系列管理程序内核组成,尽管建模不同,但是其他类型的部署(容器、无服务器基础设施等)同样是可能的。再次参考图3(特别是步骤[5]312),当应用bar指示它调用foo云时,资源管理器211将消息发送到编排器数据库204中。如在图5中的步骤[1]508所示,描绘针对应用bar所请求的云的类型的模型被存储。在这种情况下,应用可以在裸机上请求N个foo内核。因此,应用可以在N个内核中的一个上请求foo控制器并且在Kubemetes上请求foo适配器。响应于这种存储,可以在步骤[2]510中向运行时***206通知要启动foo云的期望。
假定foo云利用私用网络来操作(例如,虚拟局域网(VLAN)、专用互联网协议(IP)地址空间、域名服务器等),可以在编译foo云模型的同时将所有这种网络配置折叠到foo云描述符中。IP和联网参数可以通过foo云模型来提供,或者可以在通过所包括的编译器策略来编译foo云模型时被生成。
编译器210将foo云模型编译为关联的foo云描述符并且将此描述符发布到编排器数据库204中(步骤[3]312)。例如,编译器210和集成资源管理器选择将foo云服务托管在由适配器212服务的裸机集群X 502上。这里,适配器212可以负责管理裸机502。由于适配器212通过描述符被引用,所以适配器在步骤[4]514中发布引用它的新描述符时醒来并且计算所请求资源量与它已经在管理的资源之间的差异(若有的话)。在图5中示出了三个潜在实例,即:容量将被重新创建,容量将被扩大,或者现有容量将基于所提取的描述符缩小。
当建立或扩大容量时,裸机基础设施502准备好托管foo内核,并且关联内核通过适配器212被启动(步骤[5]516、步骤[6]518、步骤[9]524、和步骤[10]526)。然后,可选地,在步骤[7]520中,创建用于foo云的控制器506并且在步骤[8]522中向适配器212通知foo主机和关联控制器的成功创建。当扩大容量时,在步骤[11]528中向现有的foo控制器506通知新容量。当缩小容量时,在步骤[12]530中向控制器506通知要缩小容量的期望并给予重新组织托管的机会,然后在步骤[13,14]532、534中,通过停用主机504来减小容量。当所有主机504被激活/停用时,适配器212通过记录将此事件发布到编排器数据库204中。记录找到它进入运行时***206和编译器的方式,该运行时***和编译器更新已启动云的资源管理器211(步骤[15,16,17]536-540)。
图6示出了按照foo模型创建foo适配器。像以前一样,资源管理器211将foo模型发布到编排器数据库204中(步骤[1]608),向运行时***206通知新模型(步骤[2]610),运行时***206编译模型并且通过foo云描述符来生成对需要被托管在Kubemetes上的foo适配器212的引用。假定Kubemetes已经是活动的(动态地或静态地创建),则驻留的Kubemetes适配器602拾取新创建的描述符,并且将foo适配器作为容器部署在Kubemetes节点上的荚果(pod)中。请求承载适当的凭证以将foo适配器302与其控制器606链接(步骤[4,5,6,7]614-620)。在图6的步骤[8,9]622-624中,通过发布通知Kubemetes适配器602停用foo适配器的描述符来废止foo适配器302。在步骤[10,11]626-628中,将用于创建foo适配器302的记录发布在编排器数据库204中,这可以触发资源管理器211中的操作以恢复如以上图3中描绘的编译。
通过上述操作,云适配器和其他云服务被作为应用本身实例化在云环境中。换句话说,编排器***200可以将云环境的各个方面部署为分布式应用。以这种方式,应用可以利用云环境的本身为应用的服务。进一步地,这些服务可以依赖于其他云服务,其他云服务也可以由编排器***200实例化为分布式应用。通过在云环境中的服务上堆叠服务,可以为编排器***200提供选择应用并将其部署到环境的裸机资源上的灵活性。例如,可以在不一定专用于特定操作环境的裸机资源上实例化包括该特定操作***或环境的应用请求。相反,可以首先将环境的各方面部署为应用以在资源上创建特别所请求的服务,并且分布式应用随后可以利用请求中所包括的这些服务。通过由编排器***200将服务实例化为应用(这些应用随后可以被所请求的应用利用或依赖),可以在云环境的任何数量和类型的物理资源上得到编排器***200分发所有应用的更大灵活性。
继续图7,示出了用于加载或改变底层(云)资源的容量的操作。首先在步骤[1]702中,可选地,由于诸如bar的应用是活动的,所以foo适配器302发现应用需要更多的容量。为此,它可以将标识对更多资源的需求的记录发布到编排器数据库204中。用户接口202随后可以拾取请求并向操作员查询这种资源。
如通过图7的步骤[2]704所描绘的,资源的加载通过来自编排器数据库204的模型、描述符、和记录继续进行。在此步骤中,发布了描述所请求的资源、所选择的裸机/云服务的凭证、和所需要的资源量的模型。在步骤[4]708中,运行时***206将模型编译为其描述符并将此描述符发布到编排器数据库204中。在步骤[5]710中,所引述的适配器212拾取描述符并与裸机/云服务502本身对接以在步骤[6]712和步骤[7]714中加载裸机功能。在步骤[8,9,10]716-720中,底层资源的新容量找到它通过编排器数据库204去往资源管理器211的方式。
图8描述了编排器***200做出动态部署决策以将诸如bar的应用托管到具有诸如虚拟专用云(VPC)的功能的云服务上。在一种实施方式中,可以在托管在公用云提供商上的(远程)私用云之间建立虚拟专用网络,该虚拟专用网可能扩展有防火墙和入侵检测***并连接到在同一IP地址空间中操作的在本地保存的专用云。与上面类似,可以通过模型来捕获这种部署,该模型在编译期间被作为更全面的模型动态地集成到用于bar的模型中。
在步骤[1]806开始,通过用户接口202,将模型发布到编排器数据库204中,该编排器数据库对如何执行bar保持开放并且将裸机部署和虚拟专用云部署都称为可能的部署模型。运行时***206可以在步骤[2]808中从编排器数据库204访问模型。当在步骤[3]810中模型被编译为描述符时,资源管理器211动态地决定如何部署服务,并且在这种情况下,当它选择通过VPC来托管bar时,资源管理器在描述符中折叠用于bar的防火墙、VPN服务、和私用网络。
如以前一样,并且如步骤[6]至[11]816-826中所示,如同任何其他应用一样,操作新精巧地制作的基于VPC的bar应用。在步骤[8]820中,例如,将防火墙和VPN服务创建为由编排器部署的应用。
图9示出了编排器***200的主要操作及其如何堆叠(云)服务的方式。虽然以上描述演示了如何横跨裸机服务和虚拟专用云部署来部署应用bar,但是这种部署可以遵循图9中描绘的编排器状态机的主要特征。编排器***200可以包括两个组件:运行时***206及其关联的资源管理器211。当在编排器数据库204中发布记录或模型时,运行时***206被激活。这些通常是改变其任何部署的状态的两个事件:每当云资源改变时由适配器发布记录,以及当需要启动/停止应用时或者当加载新资源时发布模型。
所示出的数据流与作为模型的编译事件的一部分的那些事件有关。模型首先被发布在编排器数据库204中,并且在步骤[1]902中由运行时***206拾取。如果可在步骤[2]904中将模型直接编译为其底层描述符,则在步骤[5]910中将描述符发布回编排器数据库204中。在一些实例中,由于在特定云或服务中不存在特定服务或缺少资源,所以不能编译模型。在这种实例中,步骤[3]906解决了要创建新(底层)服务的情况。这里,首先将用于原始模型的描述符发布回编排器数据库204中从而指示未决激活状态。接下来,资源管理器211为所需要的底层服务创建模型并将此模型发布到编排器数据库204中。这种发布触发底层服务的编译和可能的创建。类似地,在将更多资源用于现有的底层服务的情况下,资源管理器211简单地更新与服务相关联的模型并再次暂停手头的模型的编译。在一些实例中,步骤[1,2,3,5]可递归到在其他服务上构建服务。随着较低级服务变得可用,在服务记录中发布这种可用性,这触发对已暂停模型的编译的恢复。
在分布式应用的操作期间,服务可能变得不可用、太昂贵、启动失败,或者以其他方式变得无法响应。在这种情况下,步骤[4]908提供了中止编译或返工应用部署的机制。前者在找到初始部署解决方案时发生,后者由于以其他部署机会动态地调整部署而发生。在此类情况下,资源管理器211更新所涉及的解决方案模型并请求运行时***206重新编译关联模型。在这种情况下预期的是,资源管理器211维护关于用于应用的后续编译的资源的可用性的状态。
以上包括的描述通常集中在仅单个(云)服务被用于设置应用的情况周围。然而,编排器***200不限于仅在一个云环境上托管应用。相反,在一些实例中,分布式应用可以被托管在多类型多云环境上。编排器***200可以横跨这种(云)服务编排应用,即使当这些(云)服务将作为应用本身被创建和管理时。在编译和资源管理阶段期间,编排器***200确定最好在哪里托管分布式应用的哪一部分并且动态地精巧制作那些不相连部分之间的网络解决方案。当部署多云应用时,一个部分可以在私用数据中心上的私用虚拟云上运行,同时其他部分在公用裸机服务上远程地运行,然而,通过布置虚拟专用网络,所有应用部分仍然在一个***中运行。
通过在云环境中将堆叠应用用作服务,这种服务在云资源发生故障期间得到了更加鲁棒的可用性和可靠性。例如,通过周期性地通过如图4中所示的编排器和数据结构来对应用状态进行同步,运行时***206测试***的各部分是否保持响应。为此,编排器***200周期性地自动更新所存储的模型。这种更新导致关联描述符的重新编译,并且每当描述符被更新时,适配器都被触发重新读取这些描述符。适配器将新状态与所部署的状态进行比较,并且通过其服务记录中的适配器来确认更新。这允许运行时***206在发布模型的新版本之后不久即预期经更新的记录。
在发生故障(例如,网络分区、适配器故障、控制器故障)的情况下,对模型的更新可能导致关联记录的遗漏更新。如果这种情况在许多模型更新中持续存在,则与无响应记录相关联的***部分被认为处于错误状态。随后,该***部分被从资源管理器的(云)服务列表中删除,并且重新部署引用发生故障的组件的应用(或服务)。这简单地(再次)由对模型的更新触发,但是现在,当资源管理器211被激活时,不考虑发生故障的组件用于部署。
如果运行时***206不可用(网络分区)或发生故障,则不将任何更新发布到解决方案模型中。这向每个适配器表明***被不受控地执行。当定时器预设期满时,适配器的责任是取消所有操作。此定时器被建立以允许运行时***206从故障或其不可用性中恢复。注意,此过程也可以被用于编排器***200本身的动态升级。如果一个适配器或所有适配器未能与编排器数据库204进行通信,则适配器的责任是优雅地关闭它们管理的应用。在适配器和运行时***206的网络分区期间,运行时***更新资源管理器状态并重新编译受影响的应用。
在另一优点中,编排器***200实现了对分布式应用和底层服务的生命周期管理。应用生命周期管理中涉及的步骤可能涉及规划、开发、测试、部署、和维护应用。
当开发分布式应用和底层服务时,这种应用和服务很可能使用许多测试和集成迭代。由于编排器使得能够容易地部署和取消具有一组(云)服务的分布式部署,所以开发阶段涉及为分布式应用和这种应用的部署定义适当的应用模型。
一旦分布式应用的开发完成,就开始对分布式应用进行测试。在此阶段期间,构建真实***的模型,其中,真实应用数据模拟真实世界部署。在这个阶段布置(测试)网络,部署(测试)云基础设施,并且将模拟(客户)数据用于验收和部署测试。编排器通过允许构建并部署完整的应用模型来支持这个过程的这个步骤,然而,通过应用适当的策略,测试人员具有精巧地制作复制真实部署的测试工具的能力。另外,可以动态地创建和拆除这种测试部署。
部署阶段是从测试阶段开始的自然步骤。假定测试部署与真实部署之间的唯一差异是测试工具,那么需要做的所有事情是将不同部署策略应用到应用模型上以推出服务。由于部署是策略驱动的,所以可以为某些地区定义具体部署。这意味着如果仅将在一个区域中支持服务,则资源管理器策略选择适当的(云)服务和关联网络。
分布式应用的维护阶段也由编排器管理。通常,由于编排器中的操作是模型和意图驱动的,所以从编排器角度来看,更新应用、应用部分、或底层云服务仅涉及相关模型被更新。所以,作为示例,如果存在应用bar的需要包含现有(且活动的)应用bar的新版本,则在数据库中安装引用新bar的新模型并且通知编排器利用新应用bar来“升级”现有的部署----即,存在替换bar的现有部署的意图。在这种情况下,适配器具有特殊作用----它们使意图适应现实,并且在示例情况下,通过将新描述符与旧描述符进行比较并采取适当的步骤来使部署(如记录中所记录的)与新描述符保持一致来用新版本替换bar的现有应用。如果升级不成功,则还原到应用的旧版本简单地涉及还原旧模型;适配器再次适配应用。
在一些情况下,使用动态部署的服务来构建应用。如图4中所示,编排器***200在描述符和模型中维护应用与这些应用构建在其上的服务之间的依赖关系。因此,当服务被替换为新版本时,可以重启从属描述符。在将这些应用和(可能的)服务重新部署在新安装的服务上之前,编排器***200通过首先(递归地)停用所有从属描述符来执行此操作。
通常,编排器***200的引导过程也可以被建模和自动化。由于可以动态地创建和管理云服务,所以被用于引导编排器本身的所有组件是基础设施适配器以及保持描述需要被构建的***的基础布局的描述符的简单数据库。例如,假定编排器将在Kubemetes环境内部运行,描述符可以描述去往裸机服务的API、用于裸机机器上的Kubemetes基础设施的具体配置、以及要在一个或多个荚果(pod)内部启动什么基础容器。这些容器可以用于运行数据库和运行时***。
图10示出了计算***1000的示例,其中,该***的组件使用连接1005来相互通信。连接1005可以是经由总线的物理连接或进入处理器1010的直接连接(诸如,在芯片组架构中)。连接1005也可以是虚拟连接、联网连接、或逻辑连接。
在一些实施例中,计算***1000是本公开中描述的功能可以分布在数据中心、多个数据中心、对等网络等中的分布式***。在一些实施例中,所描述的***组件中的一个或多个表示许多此类组件,每个组件执行针对该组件描述的功能中的一些或全部。在一些实施例中,组件可以是物理或虚拟设备。
示例***1000包括至少一个处理单元(CPU或处理器)1010和连接1005,该连接将包括***存储器1015(诸如,只读存储器(ROM)1020和随机存取存储器(RAM)1025)在内的各种***组件耦合到处理器1010。计算***1000可以包括与处理器1010直接连接、与处理器1010极为接近或作为处理器1010的一部分集成的高速存储器的高速缓存。处理器1010可以包括被配置为控制处理器1010的任何通用处理器和硬件服务或软件服务(诸如,存储在存储设备1030中的服务1032、1034、和1036),以及软件指令被并入到实际处理器设计中的专用处理器。处理器1010本质上可以是完全自包含的计算***,包含多个核心或处理器、总线、存储器控制器、高速缓存等。多核心处理器可以是对称的或不对称的。
为了实现用户交互,计算***1000包括输入设备1045,该输入设备可以表示任何数量的输入机制,诸如,用于语音的麦克风、用于姿势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等。
计算***1000还可以包括输出设备1035,其可以是本领域技术人员已知的许多输出机制中的一种或多种。在一些实例中,多模态***可以使得用户能够提供多种类型的输入/输出来与计算***1000进行通信。计算***1000可以包括通信接口1040,该通信接口通常可以控制并管理用户输入和***输出。对在任何特定硬件设备上的操作没有限制,并且基本特征在这里可以随着它们被开发而容易地用改进的硬件或固件布置取代。
存储设备1030可以是非易失性存储设备并且可以是硬盘或可存储可由计算机访问的数据的其他类型的计算机可读介质,诸如,磁带盒、闪速存储器卡、固态存储器设备、数字通用盘、盒、随机存取存储器(RAM)、只读存储器(ROM)、和/或这些设备的某种组合。
存储设备1030可以包括软件服务、服务器、服务等,当定义这种软件的代码由处理器1010执行时,它使***执行功能。在一些实施例中,执行特定功能的硬件服务可以包括存储在计算机可读介质中的软件组件,该软件组件连同必要的硬件组件(诸如,处理器1010、连接1005、输出设备1035等)一起来以执行功能。
为了说明的清楚,在一些实例中可以将本技术呈现为包括单独的功能块,这些功能块包括含有设备、设备组件、以软件实现的方法中的步骤或例程、或硬件和软件的组合的功能块。
可以单独或与其他设备相结合地通过一个或多个硬件和软件服务的组合来执行或实现本文所述的步骤、操作、功能、或过程中的任一个。在一些实施例中,服务可以是驻留在内容管理***的一个或多个服务器和/或便携式设备的存储器中的软件,并且可以在处理器执行与该服务相关联的软件时执行一个或多个功能。在一些实施例中,服务是执行特定功能的程序或程序的合集。在一些实施例中,可以将服务认为是服务器。存储器可以是非暂态计算机可读介质。
在一些实施方式中,计算机可读存储设备、介质、和存储器可以包括包含比特流等的电缆或无线信号。然而,当被提及时,非暂态计算机可读存储介质明确地排除诸如,能量、载波信号、电磁波、和信号本身的介质。
可以使用被存储或可以其他方式从计算机可读介质获得的计算机可执行指令来实现根据上述示例的方法。这种指令可以包括例如,促使或以其他方式配置通用计算机、专用计算机、或专用处理设备执行某个功能或功能组的指令和数据。可以通过网络访问所使用的计算机资源的各部分。计算机可执行指令可以是例如,二进制文件、诸如汇编语言的中间格式指令、固件、或源代码。可以用于存储指令、所使用的信息、和/或在根据所描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、固态存储器设备、闪速存储器、提供有非易失性存储器的通用串行总线(USB)设备、联网存储设备等。
实现根据这些公开的方法的设备可以包括硬件、固件、和/或软件,并且可以采取各种形状因数中的任一种。这种形状因数的示例包括服务器、膝上型电脑、智能电话、小型个人计算机、个人数字助理等。也可以在***设备或附加卡中实现本文所述的功能性。作为另外的示例,也可以在不同芯片之中的电路板或者在单个设备上执行的不同进程上实现这种功能性。
指令、用于传递这种指令的介质、用于执行它们的计算资源、以及用于支持这种计算资源的其他结构是用于提供这些公开中描述的功能的手段。
尽管使用各种示例和其他信息来说明所附权利要求的范围内的各方面,但是不应该基于这种示例中的特定特征或布置暗示对权利要求的限制,因为本领域普通技术人员将能够使用这些示例导出各式各样的实施方式。进一步地,尽管可以用特定于结构特征和/或方法步骤的示例的语言描述某个主题,但是应当理解的是,所附权利要求中限定的主题不一定局限于这些描述的特征或行为。例如,可以在除本文标识的组件以外的组件中不同地分发或执行这种功能性。相反,所描述的特征和步骤作为在所附权利要求的范围内的***和方法的组件的示例被公开。
/>
/>
/>
/>
/>
/>
/>
/>
/>
/>
/>
Claims (22)
1.一种用于更新计算环境中的已部署应用的配置的计算机实现的方法,所述已部署应用包括多个实例,每个实例包括一个或多个物理计算机或一个或多个虚拟计算设备,所述方法包括:
接收更新被托管在数据库中的应用简档模型的请求,所述请求指定所述已部署应用的第一应用配置参数集到第二应用配置参数集的改变,所述第一应用配置参数集指示所述已部署应用的当前配置状态,所述第二应用配置参数集指示所述已部署应用的目标配置状态;
响应于所述请求,使用所述第二应用配置参数集来更新所述数据库中的所述应用简档模型,并且基于经更新的应用简档模型,生成包括所述第一应用配置参数集和所述第二应用配置参数集的描述的解决方案描述符;
基于所述解决方案描述符更新所述已部署应用,
其中,所述第二应用配置参数集包括下述中的至少一个:
能够由所述已部署应用使用来对媒体流进行转码的配置信息,
配置由所述已部署应用实施的防火墙行为以允许或拒绝某些流的策略规则,
能够由所述已部署应用使用来路由IP分组的路由规则,或
加载计费规则的参数。
2.根据权利要求1所述的方法,其中,所述应用配置参数在已部署应用中是可配置的,但是不能作为用于实例化应用的变元的一部分配置。
3.根据任一前述权利要求所述的方法,其中,所述已部署应用包括分布式防火墙应用的多个单独执行的实例,每个实例部署有多个不同策略规则的副本。
4.根据任一前述权利要求所述的方法,其中,基于所述解决方案描述符更新所述已部署应用包括:
通过确定所述第一应用配置参数集与所述第二应用配置参数集之间的差异来确定增量参数集;
基于所述增量参数集更新所述已部署应用。
5.根据任一前述权利要求所述的方法,进一步包括:
响应于更新所述应用简档模型,更新与所述应用简档模型相关联的应用解决方案模型;
响应于更新所述应用解决方案模型,编译所述应用解决方案模型以创建所述解决方案描述符。
6.根据任一前述权利要求所述的方法,其中,更新所述已部署应用包括:重启所述已部署应用的一个或多个应用组件并且将所述第二应用配置参数集包括在经重启的一个或多个应用组件中。
7.根据权利要求1至5中任一项所述的方法,其中,更新所述已部署应用包括:更新所述已部署应用以包括所述第二应用配置参数集。
8.根据任一前述权利要求所述的方法,进一步包括:
接收描述所述已部署应用的状态的应用服务记录;
将所述应用服务记录与所述解决方案描述符配对。
9.根据权利要求8所述的方法,其中,所述已部署应用的状态包括定义以下各项的至少一个度量:中央处理单元CPU利用率、存储器利用率、带宽利用率、对物理元件的分配、等待时间、应用特定性能细节、或应用特定状态。
10.根据任一前述权利要求所述的方法,所述应用简档模型和所述解决方案描述符中的每一者均包括标记语言文件。
11.一种用于更新计算环境中的已部署应用的配置的计算机***,所述已部署应用包括多个实例,每个实例包括一个或多个物理计算机或一个或多个虚拟计算设备,所述计算机***包括:
一个或多个处理器;
所述计算环境的编排器,所述编排器被配置为:
接收更新被托管在数据库中的应用简档模型的请求,所述请求指定所述已部署应用的第一应用配置参数集到第二应用配置参数集的改变,所述第一应用配置参数集指示所述已部署应用的当前配置状态,所述第二应用配置参数集指示所述已部署应用的目标配置状态;
响应于所述请求,使用所述第二应用配置参数集来更新所述数据库中的所述应用简档模型,并且基于经更新的应用简档模型,生成包括所述第一应用配置参数集和所述第二应用配置参数集的描述的解决方案描述符;
基于所述解决方案描述符更新所述已部署应用,
其中,所述第二应用配置参数集包括下述中的至少一个:
能够由所述已部署应用使用来对媒体流进行转码的配置信息,
配置由所述已部署应用实施的防火墙行为以允许或拒绝某些流的策略规则,
能够由所述已部署应用使用来路由IP分组的路由规则,或
加载计费规则的参数。
12.根据权利要求11所述的计算机***,其中,所述应用配置参数在已部署应用中是可配置的,但是不能作为用于实例化应用的变元的一部分配置。
13.根据权利要求11至12中任一项所述的计算机***,其中,所述已部署应用包括分布式防火墙应用的多个单独执行的实例,每个实例部署有多个不同策略规则的副本。
14.根据权利要求11至13中任一项所述的计算机***,其中,基于所述解决方案描述符更新所述已部署应用包括:
通过确定所述第一应用配置参数集与所述第二应用配置参数集之间的差异来确定增量参数集;
基于所述增量参数集更新所述已部署应用。
15.根据权利要求11至14中任一项所述的计算机***,其中,所述编排器进一步被配置为:
响应于更新所述应用简档模型,更新与所述应用简档模型相关联的应用解决方案模型;
响应于更新所述应用解决方案模型,编译所述应用解决方案模型以创建所述解决方案描述符。
16.根据权利要求11至15中任一项所述的计算机***,其中,更新所述已部署应用包括:重启所述已部署应用的一个或多个应用组件并且将所述第二应用配置参数集包括在经重启的一个或多个应用组件中。
17.根据权利要求11至15中任一项所述的计算机***,其中,更新所述已部署应用包括:更新所述已部署应用以包括所述第二应用配置参数集。
18.根据权利要求11至17中任一项所述的计算机***,其中,所述编排器进一步被配置为:
接收描述所述已部署应用的状态的应用服务记录;
将所述应用服务记录与所述解决方案描述符配对。
19.根据权利要求18所述的计算机***,其中,所述已部署应用的状态包括定义以下各项的至少一个度量:中央处理单元CPU利用率、存储器利用率、带宽利用率、对物理元件的分配、等待时间、应用特定性能细节、或应用特定状态。
20.根据权利要求11至19中任一项所述的计算机***,所述应用简档模型和所述解决方案描述符中的每一者均包括标记语言文件。
21.一种装置,被布置为执行根据权利要求1至10中任一项所述的方法。
22.一种计算机可读介质,所述计算机可读介质包括指令,所述指令在由处理器执行时使得所述处理器执行根据权利要求1至10中任一项所述的方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862650949P | 2018-03-30 | 2018-03-30 | |
US62/650,949 | 2018-03-30 | ||
US16/294,861 | 2019-03-06 | ||
US16/294,861 US20190303212A1 (en) | 2018-03-30 | 2019-03-06 | Method for managing application configuration state with cloud based application management techniques |
PCT/US2019/024918 WO2019199495A1 (en) | 2018-03-30 | 2019-03-29 | Method for managing application configuration state with cloud based application management techniques |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112585919A CN112585919A (zh) | 2021-03-30 |
CN112585919B true CN112585919B (zh) | 2023-07-18 |
Family
ID=68054418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980023518.8A Active CN112585919B (zh) | 2018-03-30 | 2019-03-29 | 利用基于云的应用管理技术来管理应用配置状态的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20190303212A1 (zh) |
EP (1) | EP3777086A1 (zh) |
CN (1) | CN112585919B (zh) |
CA (1) | CA3095629A1 (zh) |
WO (1) | WO2019199495A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11601402B1 (en) * | 2018-05-03 | 2023-03-07 | Cyber Ip Holdings, Llc | Secure communications to multiple devices and multiple parties using physical and virtual key storage |
US11055256B2 (en) * | 2019-04-02 | 2021-07-06 | Intel Corporation | Edge component computing system having integrated FaaS call handling capability |
US11533231B2 (en) * | 2019-11-29 | 2022-12-20 | Amazon Technologies, Inc. | Configuration and management of scalable global private networks |
US11729077B2 (en) * | 2019-11-29 | 2023-08-15 | Amazon Technologies, Inc. | Configuration and management of scalable global private networks |
US11336528B2 (en) | 2019-11-29 | 2022-05-17 | Amazon Technologies, Inc. | Configuration and management of scalable global private networks |
US11403094B2 (en) * | 2020-01-27 | 2022-08-02 | Capital One Services, Llc | Software pipeline configuration |
US11409555B2 (en) * | 2020-03-12 | 2022-08-09 | At&T Intellectual Property I, L.P. | Application deployment in multi-cloud environment |
CN113742197B (zh) * | 2020-05-27 | 2023-04-14 | 抖音视界有限公司 | 模型管理装置、方法、数据管理装置、方法及*** |
GB202017948D0 (en) * | 2020-11-13 | 2020-12-30 | Microsoft Technology Licensing Llc | Deploying applications |
US11556332B2 (en) * | 2021-02-23 | 2023-01-17 | International Business Machines Corporation | Application updating in a computing environment using a function deployment component |
US11422959B1 (en) * | 2021-02-25 | 2022-08-23 | Red Hat, Inc. | System to use descriptor rings for I/O communication |
CN113377387B (zh) * | 2021-06-28 | 2024-05-17 | 中煤能源研究院有限责任公司 | 一种煤矿智能应用的统一发布、部署、升级的方法 |
CN113703821A (zh) * | 2021-08-26 | 2021-11-26 | 北京百度网讯科技有限公司 | 云手机更新方法、装置、设备以及存储介质 |
US11989541B2 (en) | 2021-10-04 | 2024-05-21 | Target Brands, Inc. | Deployment migration tool with decoding capabilities |
US11936621B2 (en) * | 2021-11-19 | 2024-03-19 | The Bank Of New York Mellon | Firewall drift monitoring and detection |
CN114237821A (zh) * | 2021-12-15 | 2022-03-25 | 建信金融科技有限责任公司 | Kubernetes容器集群的自发现方法、装置、电子设备及存储介质 |
CN114721748B (zh) * | 2022-04-11 | 2024-02-27 | 广州宇中网络科技有限公司 | 一种数据查询方法、***、设备及可读存储介质 |
US20230370497A1 (en) * | 2022-05-11 | 2023-11-16 | Capital One Services, Llc | Cloud control management system including a distributed system for tracking development workflow |
CN114666231B (zh) * | 2022-05-24 | 2022-08-09 | 广州嘉为科技有限公司 | 一种多云环境下可视化运维管理方法、***及存储介质 |
CN117519958A (zh) * | 2022-07-30 | 2024-02-06 | 华为云计算技术有限公司 | 一种应用部署方法、***及设备 |
WO2024129098A1 (en) * | 2022-12-16 | 2024-06-20 | Robin Systems, Inc | Implementing an infrastructure management service |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902637A (zh) * | 2012-12-27 | 2014-07-02 | 伊姆西公司 | 用于向用户提供计算资源的方法和装置 |
CN104254834A (zh) * | 2012-06-08 | 2014-12-31 | 惠普发展公司,有限责任合伙企业 | 云应用部署可移植性 |
CN104572245A (zh) * | 2013-10-22 | 2015-04-29 | 国际商业机器公司 | 用于管理支持多个简档的虚拟设备的方法和*** |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320401A1 (en) * | 2007-06-21 | 2008-12-25 | Padmashree B | Template-based deployment of user interface objects |
US8739157B2 (en) * | 2010-08-26 | 2014-05-27 | Adobe Systems Incorporated | System and method for managing cloud deployment configuration of an application |
US9967318B2 (en) * | 2011-02-09 | 2018-05-08 | Cisco Technology, Inc. | Apparatus, systems, and methods for cloud agnostic multi-tier application modeling and deployment |
US9582261B2 (en) * | 2014-06-26 | 2017-02-28 | Vmware, Inc. | Methods and apparatus to update application deployments in cloud computing environments |
US10033833B2 (en) * | 2016-01-11 | 2018-07-24 | Cisco Technology, Inc. | Apparatus, systems and methods for automatic distributed application deployment in heterogeneous environments |
US10303450B2 (en) * | 2017-09-14 | 2019-05-28 | Cisco Technology, Inc. | Systems and methods for a policy-driven orchestration of deployment of distributed applications |
-
2019
- 2019-03-06 US US16/294,861 patent/US20190303212A1/en not_active Abandoned
- 2019-03-29 WO PCT/US2019/024918 patent/WO2019199495A1/en active Application Filing
- 2019-03-29 CN CN201980023518.8A patent/CN112585919B/zh active Active
- 2019-03-29 EP EP19722298.7A patent/EP3777086A1/en active Pending
- 2019-03-29 CA CA3095629A patent/CA3095629A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104254834A (zh) * | 2012-06-08 | 2014-12-31 | 惠普发展公司,有限责任合伙企业 | 云应用部署可移植性 |
CN103902637A (zh) * | 2012-12-27 | 2014-07-02 | 伊姆西公司 | 用于向用户提供计算资源的方法和装置 |
CN104572245A (zh) * | 2013-10-22 | 2015-04-29 | 国际商业机器公司 | 用于管理支持多个简档的虚拟设备的方法和*** |
Also Published As
Publication number | Publication date |
---|---|
WO2019199495A1 (en) | 2019-10-17 |
US20190303212A1 (en) | 2019-10-03 |
CA3095629A1 (en) | 2019-10-17 |
EP3777086A1 (en) | 2021-02-17 |
CN112585919A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112585919B (zh) | 利用基于云的应用管理技术来管理应用配置状态的方法 | |
CN109286653B (zh) | 智能云工程平台 | |
US10931599B2 (en) | Automated failure recovery of subsystems in a management system | |
CN109062655B (zh) | 一种容器化云平台及服务器 | |
US10303450B2 (en) | Systems and methods for a policy-driven orchestration of deployment of distributed applications | |
US11146456B2 (en) | Formal model checking based approaches to optimized realizations of network functions in multi-cloud environments | |
US11146620B2 (en) | Systems and methods for instantiating services on top of services | |
Sharma et al. | A complete survey on software architectural styles and patterns | |
US8108855B2 (en) | Method and apparatus for deploying a set of virtual software resource templates to a set of nodes | |
US10922123B2 (en) | Container migration in computing systems | |
US8612976B2 (en) | Virtual parts having configuration points and virtual ports for virtual solution composition and deployment | |
KR20200027783A (ko) | 분산 지능모듈의 통합관리 시스템 | |
Lu et al. | Pattern-based deployment service for next generation clouds | |
CN101449242A (zh) | 按需组合和拆卸服务基础架构的方法和装置 | |
JP2015534167A (ja) | クラウドコンピューティング環境で使用するサービス管理エンジンを提供するためのシステムおよび方法 | |
US10031761B2 (en) | Pluggable cloud enablement boot device and method | |
US9354894B2 (en) | Pluggable cloud enablement boot device and method that determines hardware resources via firmware | |
US20220121543A1 (en) | Key value store in a clustered containerized system | |
US20200233691A1 (en) | Containerized management services with high availability | |
US11847611B2 (en) | Orchestrating and automating product deployment flow and lifecycle management | |
Lim et al. | Service management in virtual machine and container mixed environment using service mesh | |
Villalobos | Running parallel applications on a heterogeneous environment with accessible development practices and automatic scalability |
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 |