CN118056184A - 按需提供云服务的技术 - Google Patents
按需提供云服务的技术 Download PDFInfo
- Publication number
- CN118056184A CN118056184A CN202280067232.1A CN202280067232A CN118056184A CN 118056184 A CN118056184 A CN 118056184A CN 202280067232 A CN202280067232 A CN 202280067232A CN 118056184 A CN118056184 A CN 118056184A
- Authority
- CN
- China
- Prior art keywords
- computing
- request
- service
- component
- computing device
- 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
- 238000000034 method Methods 0.000 title claims abstract description 136
- 230000004044 response Effects 0.000 claims abstract description 57
- 238000003860 storage Methods 0.000 claims description 51
- 230000015654 memory Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 29
- 230000001419 dependent effect Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 description 58
- 238000010586 diagram Methods 0.000 description 31
- 238000004891 communication Methods 0.000 description 26
- 230000006854 communication Effects 0.000 description 26
- 238000007726 management method Methods 0.000 description 22
- 239000003795 chemical substances by application Substances 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000013475 authorization Methods 0.000 description 11
- 238000012544 monitoring process Methods 0.000 description 11
- 230000008859 change Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000003032 molecular docking Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 201000011244 Acrocallosal syndrome Diseases 0.000 description 1
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000004397 blinking Effects 0.000 description 1
- 238000002591 computed tomography Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000002059 diagnostic imaging Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 244000144992 flock Species 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000002595 magnetic resonance imaging Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002600 positron emission tomography Methods 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 230000000007 visual effect Effects 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network booting; Remote initial program loading [RIPL]
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- 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/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- 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/4401—Bootstrapping
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
公开了用于响应于用户输入而部署计算资源(例如,服务)的技术。计算机实现的方法能够包括(例如,由云计算环境的网关计算机)接收包括云计算环境的计算组件的标识符的请求的操作。接收请求的计算设备可以确定所述标识符是否存在于计算设备可访问的路由表中。如果是,那么可以将请求转发到计算组件。如果不是,那么计算设备可以传输指示计算组件不可用的错误代码(例如,向发起请求的用户设备)以及向被配置为部署所请求的计算组件的部署编排器传输引导请求。一旦部署,计算组件就可以被添加到路由表,使得后续请求能够被正确地路由到计算组件并由计算组件处理。
Description
相关申请的交叉引用
本申请要求于2021年10月5日提交的、标题为“Techniques for Provide CloudServices On Demand”的美国专利申请No.17/494,533和于2021年10月5日提交的标题为“Techniques for Providing Cloud Services On Demand”的美国专利申请No.17/494,495的优先权,其公开内容出于所有目的通过引用整体并入本文。
背景技术
在当今的云计算环境中,云服务的预定义的集合可以被部署到给定地区。不保证该地区的用户将使用所部署的每项服务。部署和维护未使用的服务会浪费云计算环境的宝贵资源。此外,情况可以是用户可能希望利用最初未部署到该地区的服务。目前,如果对尚未部署的服务进行服务调用,那么返回错误代码并且用户的请求不会得到处理。此外,用户可能无法对部署到那个地区的特定服务进行任何控制。可以对云计算环境内各种服务的管理和部署进行修改,这改进用户控制并提供整体改进的用户体验。
发明内容
本公开的实施例涉及提供在运行时部署所请求和/或订购的云计算资源(例如,服务)的能力。更特别地,一些实施例提供了实现以下功能性的方法、计算机可读介质和系统:接收对先前未部署的服务的请求、确定该服务当前未部署,以及经由云编排服务请求所请求的服务的引导/部署。在一些实施例中,可以提供用户界面,在该用户界面处可以明确地订购/请求服务。利用用户界面,提供请求特定服务的引导/部署(例如,利用云编排服务)的能力。
一个实施例针对一种用于部署云计算资源的方法。该方法可以包括由云计算环境的计算设备接收包括云计算环境的计算组件的标识符的请求。该方法还可以包括由计算设备确定所述标识符是否存在于计算设备可访问的路由表中。该方法还可以包括根据路由表中存在的标识符将请求转发到计算组件。该方法还可以包括根据从路由表中丢失的标识符:由计算设备响应于请求而传输错误代码,该错误代码指示计算组件不可用,以及由计算设备向云计算环境的部署编排器传输与计算组件对应的引导请求,部署编排器被配置为至少部分地基于引导请求将计算组件部署到云计算环境。该方法还可以包括接收包括标识符的后续请求。该方法还可以包括将后续请求传输到计算组件以供处理。
另一个实施例针对另一种用于部署云计算资源的方法。该方法可以包括由云计算环境的计算设备识别已经部署在云计算环境内的计算组件的第一集合。该方法还可以包括由计算设备识别可用于在云计算环境内部署的计算组件的第二集合。该方法还可以包括由计算设备接收部署请求。在一些实施例中,部署请求识别计算组件的第二集合中可用于部署的特定计算组件。该方法还可以包括由计算设备向云计算环境的部署编排器传输与所请求的特定计算组件对应的引导请求。在一些实施例中,部署编排器被配置为至少部分地基于引导请求将特定计算组件部署到云计算环境。该方法还可以包括呈现用户界面,该用户界面呈现用于已经部署在云计算环境内的计算组件的第一集合的状态指示符的第一集合以及与特定计算组件对应的状态指示符。
在一些实施例中,该方法还可以包括识别特定计算组件被成功部署、将与特定计算组件相关联的标识符添加到路由表、接收包括该标识符的后续请求,以及将该后续请求传输到特定计算组件以供处理。
在一些实施例中,传输引导请求使得部署编排器执行操作,包括(至少)1)识别特定计算组件所依赖的一个或多个计算组件,以及2)在部署该特定的计算组件之前部署该一个或多个计算组件。
在一些实施例中,识别特定计算组件所依赖的一个或多个计算组件至少部分地基于从定义计算组件依赖性的有向无环图确定该一个或多个计算组件。
在一些实施例中,该方法还可以包括在用户界面处呈现识别所请求的特定计算组件所依赖的一个或多个计算组件的信息,在用户界面处接收指示在部署特定计算组件之前接受部署该一个或多个计算组件的用户输入,以及由计算设备向部署编排器传输与该一个或多个计算组件对应的相应引导请求,其中在传输与所请求的特定计算组件对应的引导请求之前传输所述相应引导请求。
在一些实施例中,该方法还可以包括向部署编排器传输与特定计算组件对应的停转(spin-down)请求,该停转请求是响应于1)接收将特定计算组件停转的后续请求,或2)识别接收到针对特定计算组件的上次请求的上次时间并确定该上次时间与当前时间之间的差超过预定义阈值时间段而被传输的。
在一些实施例中,传输停转请求还至少部分地基于确定没有云计算环境的其它组件依赖于特定计算组件。
另一个实施例针对一种云计算环境的计算设备。在一些实施例中,计算设备包括一个或多个处理器以及存储计算机可执行指令的一个或多个存储器,计算机可执行指令在被一个或多个处理器执行时使得计算设备执行上述方法之一或两者的操作。
另一个实施例针对一种包括计算机可执行指令的非暂态计算机可读存储介质,计算机可执行指令在由计算设备的一个或多个处理器执行时使得云计算环境的计算设备执行上述方法之一或两者的操作。
另一个实施例针对一种用于提供云服务的装置,包括用于执行本文所描述的任何方法的步骤的部件。
另一个实施例针对一种包括计算机指令的计算机程序产品,计算机指令在由处理器执行时实现本文所描述的任何方法的步骤。
附图说明
为了容易地识别任何特定元件或动作的讨论,附图标记中的一个或多个最高有效数是指首先引入该元件的图号。
图1是用于实现根据至少一个实施例的云基础设施编排服务的至少一些元件的体系架构的框图。
图2是用于实现根据至少一个实施例的云基础设施编排服务的至少一些元件的体系架构的框图。
图3是用于图示根据至少一个实施例的响应于对先前部署的服务的应用编程接口(API)调用而执行的操作的流程的流程图。
图4是用于图示根据至少一个实施例的响应于对尚未部署的服务的API调用而执行的操作的流程的流程图。
图5是用于图示根据至少一个实施例的当尚未部署服务依赖于同样尚未部署的另一个服务时响应于对该服务的API调用而执行的操作的流程的流程图。
图6是图示根据至少一个实施例的用于编排包括对至少一种能力的依赖性的任务的执行的示例过程的流程图。
图7是图示根据至少一个实施例的用于使未使用的服务停转的操作的流程的流程图。
图8是图示根据至少一个实施例的用于响应于接收API请求来编排服务的引导的示例过程的流程图。
图9是用于图示根据至少一个实施例的响应于订购尚未部署的服务而执行的操作的流程的流程图。
图10是用于图示根据至少一个实施例的当尚未部署的服务依赖于同样尚未部署的另一个服务时响应于订购该尚未部署的服务而执行的操作的流程的流程图。
图11是根据至少一个实施例的用于尤其发起上面讨论的操作的示例用户界面。
图12是图示根据至少一个实施例的用于响应于接收到对资源的订购请求而编排资源的引导的示例过程的流程图。
图13是图示根据至少一个实施例的用于实现云基础设施即服务系统的一种模式的框图。
图14是图示根据至少一个实施例的用于实现云基础设施即服务系统的另一种模式的框图。
图15是图示根据至少一个实施例的用于实现云基础设施即服务系统的另一种模式的框图。
图16是图示根据至少一个实施例的用于实现云基础设施即服务系统的另一种模式的框图。
图17是图示根据至少一个实施例的示例计算机系统的框图。
具体实施方式
在一些示例中,基础设施即服务(IaaS)是一种特定类型的云计算。IaaS可以被配置为通过公共网络(例如,互联网)提供虚拟化的计算资源。在一些示例中,IaaS是云计算服务的三个主要类别(或子类别)之一。大多数人认为其它主要类别是软件即服务(SaaS)和平台即服务(PaaS),并且有时SaaS可以被认为是涵盖PaaS和IaaS的更广泛的类别,甚至有些人认为IaaS也是PaaS的一个子类别。
在IaaS模型中,云计算提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,IaaS提供商还可以提供伴随那些基础设施组件的各种服务(例如,计费、监视、日志记录、安全性、负载平衡和聚类等)。因此,由于这些服务可以是策略驱动的,因此IaaS用户可以能够实现策略来驱动负载平衡以维持应用的可用性和性能。
在一些情况下,IaaS客户可以通过诸如互联网之类的广域网(WAN)访问资源和服务,并且可以使用云提供商的服务来安装应用栈的剩余元件。例如,用户可以登录IaaS平台以创建虚拟机(VM)、在每个VM中安装操作系统(OS)、部署诸如数据库之类的中间件、为工作负载和备份创建存储桶以及甚至将企业软件安装到VM中。然后,客户可以使用提供商的服务来执行各种功能,包括平衡网络流量、解决应用问题、监视性能、管理灾难恢复等。
在一些示例中,IaaS部署是将新应用或新版本放置到就绪的应用服务器等上的过程。它还可以包括准备服务器的过程(例如,安装库、守护进程等)。这常常由虚拟机管理程序层下方的云提供商管理(例如,服务器、存储装置、网络硬件和虚拟化)。因此,客户可以负责处置(OS)、中间件和/或应用部署(例如,在自助服务虚拟机上(例如,可以按需起动(spinup))等)。
在一些示例中,IaaS可以被用于供应基础设施组件的初始集合(例如,服务等)。在一些实施例中,基础设施(例如,需要什么组件以及它们如何交互)可以由一个或多个配置文件定义。基础设施的整体拓扑(例如,哪些资源依赖于哪些资源,以及它们各自如何协同工作)可以以声明方式进行描述。在一些情况下,一旦定义了拓扑,就可以生成创建和/或管理配置文件中描述的不同组件的工作流。
如上所述,供应基础设施的一种方式是以声明方式描述它。因此,配置文件可以是仅描述上述每个基础设施组件以及它们如何交互的声明性文件。配置文件可以描述资源和创建这些元件所需的相关字段,然后可以描述引用先前描述的元件的其它元件。在一些示例中,供应工具然后可以生成用于创建和管理配置文件中所描述的元件的工作流程。
在一些情况下,供应工具的工作流程可以被配置为执行各种命令。可以执行的一项功能是视图协调,其中供应工具可以将当前基础设施的视图(例如,基础设施的预期状态)与基础设施的实际运行情况进行比较。在一些情况下,执行视图协调功能可以包括查询各种资源提供者或基础设施资源以识别什么资源正在实际运行。供应工具可以执行的另一个功能是计划生成,其中供应工具可以将实际运行的基础设施组件与供应工具希望看到的状态(例如,期望的配置)进行比较。换句话说,计划生成功能可以确定需要进行哪些改变才能使资源达到最新的预期。在一些情况下,第三功能是执行(例如,应用)功能,其中供应工具可以执行由计划生成功能生成的计划。
一般而言,供应工具可以被配置为采用配置文件、解析其中包括的声明性信息并以编程方式/自动地确定需要供应资源以便执行计划的次序。例如,如果需要在引导安全性组规则和VM之前引导虚拟私有云(VPC),那么供应工具将能够做出该确定并按那个次序实现引导而无需用户干预和/或无需信息必须包括在配置文件中。
在一些情况下,可以采用连续部署技术来启用基础设施代码跨各种虚拟计算环境的部署。此外,所描述的技术可以在这些环境内启用基础设施管理。在一些示例中,服务团队可以编写期望部署到一个或多个但常常是许多不同生产环境(例如,跨各种不同的地理位置,有时跨越整个世界)的代码。但是,在一些示例中,必须首先设置将在其上部署代码的基础设施。在一些情况下,供应可以手动完成,供应工具可以被用来供应资源,和/或一旦供应了基础设施,部署工具就可以被用来部署代码。
如上所述,一般有两种不同的工具用于处置基础设施资源的供应和控制基础设施资源的代码的部署中的每一个,并且两个工具之间的编排是手动执行的。但是,在规模上,手动实施总是会导致偏差。因此,既可以供应又可以部署虚拟基础设施的自动化工具启用用于实现虚拟云环境的更高效且更可靠的技术。
在一些示例中,当使用两个工具时,当用户在供应阶段与部署阶段之间手动地对代码进行改变时会出现问题。如本文所述,使用单个工具进行供应和部署的技术可以通过使过程自动化来缓解这种情况,使得没有机会进行手动代码改变。情况可以是这样的,用户进行编码的方式的微小改变会在部署阶段产生重大问题。在一些示例中,操作者第一次在新区域中执行动作时(例如,代码中的拼写错误),用该拼写错误编码的对象可能永远都是这样。如果应用部署时存在该拼写错误,并且该应用对那个拼写错误不敏感(例如,它仍然能够工作),那么可能在一段时间内,附加的代码改变会对那个拼写错误变得敏感,并使整个系统崩溃。因此,本文提供的技术可以去除供应与部署之间常常会导致问题的间隙。
一般而言,建模部署是声明性的,使得配置文件可以被用于声明基础设施资源。例如,创建、读取、更新、删除(CRUD)指令一般被用于使用通用表述性状态传输(REST)概念(例如,REST应用编程接口(API))来生成部署文件。但是,部署本身一般并不遵循相同的概念。此外,虽然基础设施供应工具往往非常强大和/或富有表现力,但用于部署的工具往往在它们可以执行的操作方面受到更多限制(例如,它们是命令式的,而不是声明式的)。因此,长期以来一直需要一种可以处置云环境中的功能需求(例如,基础设施元件的供应和部署)的工具。
本文公开的实施例可以利用云基础设施编排服务(CIOS)。可以配置这个服务来管理云环境内基础设施资产的供应和部署。在一些情况下,CIOS可以包括两类服务:中央组件和区域组件(例如,CIOS中央和CIOS区域)。
CIOS可以被描述为将配置应用于下游系统(例如,全球范围)的编排层。它被设计为允许全球范围内的基础设施供应和代码部署,而无需服务团队的手动努力(例如,在一些情况下超出初始批准)。CIOS的高级职责包括但不限于:
·为团队提供对由CIOS管理的资源的当前状态的了解,包括任何正在进行的改变活动。
·帮助团队计划和发布新的改变。
·协调跨区域内各个下游系统的活动,以执行批准的发布计划而无需人工干预。
·协调跨地区/领域的活动,以在全球范围内执行批准的发布计划。
一旦一切都已被供应,那么改进现有基础设施(例如,添加新服务、改变服务、去除服务等)可以是具有挑战性的。常规而言,如果请求先前未供应的服务(例如,经由API调用),那么该请求将被拒绝并且用户将无法访问该服务。此外,即使不需要这(一个或多个)服务,未利用的服务(或者至少根据某个预定义阈值未充分利用的服务)也会继续运行并浪费资源。为了解决这些不足之处,IaaS可以被配置为隐式地识别何时添加新服务和/或去除服务,并且可以执行对应的操作以自动部署或逐渐结束(wind down)服务。附加地或可替代地,IaaS可以配置有用户界面,用户可以从该用户界面明确地请求添加或去除服务、查看各种服务的当前状态等。这些技术可以提供改进的控制以及总体上更加无缝和不太令人沮丧的用户体验。
图1是根据至少一个实施例的用于实现云基础设施编排服务的至少一些元件的体系架构的框图。例如,图1描绘了用于图示用于实现CIOS中央102的技术的体系架构100。在一些示例中,CIOS中央102可以是处置“群(flock)”级别的操作的服务。群可以是CIOS可以用来封装控制平面及其所有组件的模型。群可以被用于对基础设施组件的所有权进行建模并指向基础设施组件。基础设施组件可以是支持运行代码的长期存在的基础设施(例如,部署应用、负载平衡器、域名系统(DNS)条目、对象存储桶等)。群配置文件可以被用于描述与单个服务相关联的所有基础设施组件、工件和部署任务的集合。每个群可以有一个群配置文件(本文中称为“群config”)。群config已签入源控制。群config是声明性的并且提供领域、区域、可用性域(AD)和工件版本作为输入。工件是指被部署到部署应用或Kubernetes引擎集群的代码,或者被应用于基础设施组件的配置信息(下文中简称为“config”)。
在一些实施例中,CIOS中央102具有一些职责,包括但不限于:
·用作群元数据改变和发布操作的认证网关。
·存储Flock元数据到用于群的部署工件和CIOS储存库的权威映射。
·协调跨阶段(Phase)和目标(Target)的全球发布。
·同步以执行诸如“一次不超过对Flock的一个持续发布”之类的策略。
·检测对群配置(config)和工件的改变,并针对此类改变触发发布生成。
在一些示例中,源代码版本控制管理服务(SCVMS)104可以被配置为存储权威的群配置,并且工件通知服务(ANS)106可以由CIOS中央102订阅,使得CIOS中央102可以获知新工件的构建。然后,CIOS中央102可以针对受影响的群映射传入的改变,并在期望时发起发布计划。此外,在一些示例中,在发布到目标之前,工件推送服务(APS)可以由CIOS中央102调用,以确保成功发布所需的任何工件在发布之前存在于目标的区域中。
在一些示例中,客户(例如,工程师)108可以调用CIOS中央102来CRUD群和/或发布,并且查看正在进行的CIOS活动的状态。群管理服务110可以包括一个或多个API来操纵群,查看/计划/批准服务112可以包括CRUD API来创建和批准计划以及查看所有CIOS管理的资源的状态的中央副本,改变监视服务114可以观看SCVMS104对群config的改变,并且可以从ANS106接收关于对其它工件的改变的通知,并且状态摄取器服务116可以在CIOS中央数据库(DB)118中创建每个区域状态的副本(例如,区域资源的状态的时间点快照),以便查看/计划/批准112可以公开它们。状态摄取器服务116可以是被配置为确定区域资源的状态并生成其时间点快照的任何合适的服务/计算设备。在一些示例中,CIOS中央数据库(中央DB)118可以是群、计划和状态的DB。群信息可以是权威性的;而其它一切可以是来自CIOS区域120的陈旧(stale)数据副本。CIOS中央102可以被配置为提供任何合适的部分和/或数量的用户界面,用于呈现与群、发布、基础设施组件、工件等相关的任何合适的数据。在一些实施例中,CIOS中央102可以经由任何合适的界面呈现与一个或多个发布相关的数据。发布可以包括与一个或多个基础设施组件相关的任务和/或对一个或多个应用的一个或多个代码改变(例如,工件)的任何合适的组合。
在一些示例中,工程师108可以对群管理服务110执行API调用(例如,通过摄入代理队(fleet)122)以创建群的列表。用于进行这种API调用的协议可以是安全超文本传输协议(HTTPS)等。用于这个操作的相关访问控制列表(ACL)可以包括局域网(LAN)124或其它私有连接。例如,CIOS可以管理/控制替代使用公共互联网来将客户的内部部署数据中心或网络与CIOS连接(例如,专用、租用和/或私有连接)的网络连接性。此外,(例如,工程师108的)认证和授权可以由允许用户管理机器基础设施(例如,预约服务)的预约系统门户来执行。在一些情况下,CIOS中央102可以使用Java数据库连接性(JDBC)等将群元数据、计划和状态存储在中央DB 118中。在一些示例中,ANS106可以被配置为当新的工件已出版(publish)时通知改变监视服务114。ANS 106可以使用HTTPS,并且认证和授权两者都可以由相互传输层安全性服务来处置。此外,在一些情况下,改变监视服务114可以轮询SCVMS104以发现群配置改变。可以使用安全外壳(SSH)或其它协议来执行这个轮询。改变监视服务114的认证可以由CIOS系统账户来处置并且授权可以由SCVMS104来处置。
在一些示例中,工程师108可以使用查看/计划/批准服务112来进行以下操作中的一项或多项。工程师108可以通过调用CIOS中央102以生成和批准计划来进行计划和/或批准。工程师108可以通过调用CIOS中央102来查看全球范围内正在进行的CIOS活动的状态。此外,工程师108可以调用CIOS中央102来查看全球范围内CIOS管理的资源的状态的副本。这些API调用(等)可以经由HTTPS协议或类似协议来执行。此外,相关的访问控制列表(ACL)可以由LAN 124控制,并且认证和授权可以由预约服务处置。在一些示例中,查看/计划/批准服务112可以请求计划并将计划批准推送到CIOS区域120的所有区域(例如,使用HTTPS等)。可以使用由广域网(WAN)网关126管理的安全性列表来控制相关ACL。认证可以通过相互传输层安全性来处置,并且授权可以通过各种身份策略来处置。另外,状态摄取器服务116可以观看CIOS区域120的作业状态或状态改变,使得CIOS可以根据请求提供它们的中心视图(例如,也使用HTTPS等)。用于此的ACLS也可以由WAN网关126处置,并且认证和授权两者都可以由相互传输层安全性服务来处置。
图2描绘了用于图示用于实现至少CIOS区域202的技术的体系架构200。在一些示例中,CIOS区域202是可以进行声明性供应和计划以及批准的发布应用的大部分工作的地方。在一些情况下,CIOS区域202的每个实例可以有区域前端,该区域前端可以处置“执行目标”级别的操作。它可以被配置为执行以下操作:
·处置来自CIOS中央102的传入操作的所有CIOS认证。
·强制执行对于给定的执行目标一次只能进行一次“执行”(计划/导入资源/应用计划)的规则。
·管理用于声明性基础设施供应执行期间输入和输出的声明性供应工件的二进制工件存储。输入的示例是声明性基础设施供应配置文件和输入状态文件。典型的输出是最终状态文件。
·对于任何给定的执行,从CIOS致动器请求工作并轮询结果。
在一些情况下,CIOS前端可以依赖于CIOS执行器206(本文中也称为“调度器”),其可以处置实际执行。在一些示例中,CIOS执行器在“执行”级别操作并且它可以:
·跟踪可用工作者节点的池
·查询传入的工作请求,并将其指派给符合条件的可用工作者
·跟踪工作者状态并执行更新以向客户端报告
·经由租赁协议检测死节点,并且可以根据任务状态使指派给死节点的任务失败。
·提供取消/杀死/暂停/恢复执行的设施,并且可以将它们映射到设施上以将取消/杀死/恢复信息传递给工作者节点。
在一些情况下,CIOS执行器可以依赖于CIOS工作者,CIOS工作者可以向工作者指派用于执行的任务,并且为工作者提供更新作业进度的设施。工作者服务以“任务”的粒度操作。每个工作者是执行指派给该工作者的任务并报告任务状态和输出的代理。每个工作者可以:
·轮询执行者工作者(Executor Worker)API来查找指派的工作项,并采取措施使指派的状态与其本地状态匹配:
○为本地不存在的轮询任务项启动容器
○杀死用于没有对应指派的任务项的本地运行的容器的容器
·报告作业的状态
·作业容器执行的阶段(stage)输入和输出
·发起并监视声明性基础设施供应容器,以完成针对执行目标的发布的实际工作。
CIOS工作者可以依赖于CIOS执行器来轮询来自CIOS执行器的工作者端点的工作并向其报告结果。工作者可以依赖执行器进行所有协调。此外,CIOS工作者还可以依赖于CIOS区域202,其中工作者服务从与区域前端服务相关联的一个或多个API读取输入并将输出写入到该API。输入的示例是配置和启动状态文件以及导入映射。输出的示例是声明性供应过程、输出声明性供应状态文件和导入结果状态。
在一些示例中,CIOS区域202可以是用于管理CIOS的区域实例/部署的区域服务。CIOS区域202负责权威地存储和管理与特定区域相关的计划和统计数据(stat)。区域DB204可以是用于特定区域中的状态和计划的CIOSDB。这是图1的中央DB 118的区域的子集的权威副本。调度器206可以负责管理工作者队容量、向工作者指派任务以及对任务状态保持跟踪。在一些情况下,Task DB 208是用于任务状态的另一个CIOSDB。这个DB中的数据主要用于操作目的。此外,工作者210可以是管理声明性供应映像的一队java虚拟机(JVM)。它们接收来自调度器206的指令并将结果传送到调度器206和CIOS区域202两者。CIOS容器212可以在其自己的私有坞站214容器中运行声明性供应动作。这个容器不需要包含秘密。此外,在一些示例中,签署代理216可以被配置为防止经由声明性供应工具的秘密泄露,以避免将秘密放入声明性供应映像中。代替地,CIOS可以在代理中执行请求签署或发起相互传输层安全性(mTLS)服务。这也使得使用符合FIPS的加密库变得更加容易。
在一些示例中,CIOS中央102可以调用CIOS区域202来创建计划、推送批准、观看作业状态以及提取声明性供应器状态(服务主体)。入口代理218可以被配置为ACL,并且各种身份策略可以被用于认证和授权两者。可替代地,在一些示例中,入口代理218可以用被配置为平衡负载传入请求、计划等的负载平衡器替代。在一些情况下,CIOS区域202可以通过要求调度器206运行声明性供应器来这么做。工作者210可以询问调度器206它应当运行什么,并且可以在完成时向调度器206报告状态。在一些情况下,mTLS可以处置CIOS区域202和工作者210的认证和授权。此外,当工作者210需要运行声明性供应器时,它通过与本地坞站214交互在坞站容器中执行这个操作。针对这个阶段的认证可以由本地unix套接字处置。对于这个最后一步可以使用坞站协议;但是,HTTPS可以用于先前的步骤。
在一些实施例中,CIOS区域202可以被配置为提供任何合适的部分和/或数量的用户界面,用于呈现与群、发布、基础设施组件、工件等相关的任何合适的数据。在实施例中,CIOS区域202可以经由任何合适的界面呈现与一个或多个发布相关的数据。发布可以包括与一个或多个基础设施组件相关的任务和/或对一个或多个应用的一个或多个代码改变(例如,工件)的任何合适的组合。
在一些示例中,CIOS容器212使得声明性供应器能够(经由API)与签署代理216交互,而声明性供应器认为其正在调用各种CIOS服务。签署代理216监听声明性供应器的每个调用实例的一个临时端口,该端口仅对该声明性供应器已知。签署代理216可以发起请求签名或mTLS,并且可以将声明性供应器的调用传递到服务飞地(enclave)内的其它CIOS服务。在一些情况下,签署代理216还可以与一个或多个公共CIOS服务220通信。例如,签署代理216将在可能的情况下使用公共服务的内部端点。对于没有内部端点的服务,它必须使用出口代理222来到达外部端点。签署代理216的这种使用可能不用于跨区域通信;例如,每个区域中的出口代理白名单可以仅适用于那个区域的公共IP范围。在一些示例中,工作者210然后可以持久化来自CIOS区域202中的声明性供应器的状态和日志,使得它们可以被渗透到CIOS中央102。
可以利用CIOS(或声明性基础设施供应器,诸如上面讨论的CIOS的声明性供应工具)来解析配置文件。通过这种解析,CIOS(或声明性供应供应器)可以为每个资源、模块和/或能力生成有向无环图(DAG),该有向无环图编译并定义对其它资源、模块和/或能力的依赖性的有序列表。在尝试部署资源时,CIOS可以遍历DAG以识别资源何时依赖于另一个资源、模块和/或另一个资源的能力。用于每个资源的DAG可以指定隐式依赖性、显式依赖性或其组合,并且可以被用于用CIOS引导或以其它方式部署对应的资源。
图3是用于图示根据至少一个实施例的响应于对先前部署的服务(例如,服务302)的应用编程接口(API)调用而执行的操作的流程300的流程图。服务302可以是已经在给定区域内部署的先前部署的服务的集合中的一个服务。接下来的图中讨论的服务是图1和图2的云计算环境的计算组件的示例。相同的示例可以应用于其它计算组件(例如,数据库、对象存储装置、块存储装置、虚拟机等)。如本公开中所使用的,计算组件可以包括任何合适的计算设备、计算机程序产品、处理器和/或服务。
流程300可以开始于304,其中可以由用户设备306做出API请求。在一些实施例中,可以经由HTTPS协议或类似协议执行API。该请求可以包括任何合适的信息,诸如用户的标识符、与该请求相关联的服务的标识符等。API调用可以由网关计算机308接收,网关计算机308可以是实现图1的WAN网关126的计算机的示例。网关计算机308可以被配置为维护先前部署的区域服务(例如,图2的云服务A-N)的路由表。路由表可以包括由图1和图2的体系架构提供的环境内的每个服务和/或基础设施组件的互联网协议(IP)地址。路由表可以包含将数据分组朝着其目的地转发所需的任何合适的信息。例如,路由表可以包括目的地的网络标识符(例如,IP地址)、用于将目的地IP地址与网络ID匹配的子网掩码以及被配置为使数据分组能够朝着目的地被转发的任何合适信息。
在310处,网关计算机308(或图2的任何合适组件,诸如入口代理218、CIOS区域202等)可以认证API调用的用户。在一些实施例中,认证可以包括对被配置为维护系统的一个或多个用户的许可和/或身份数据的一个或多个服务(例如,身份服务)进行API调用。举例来说,网关计算机308可以调用配置有许可和/或身份数据的身份服务,该许可和/或身份数据可以与在请求中接收到的用户的标识符一起使用以识别用户和/或与那个用户相关联的一个或多个许可策略。
在312处,可以确定API调用是否能够被路由。这个确定可以包括识别以下的任何合适组合:1)用户是否是他们所声称的人,2)用户是否有调用服务302的这种功能性的授权,或者3)服务的标识符(例如,IP地址)是否包括在由网关计算机308维护的当前路由表中。举例来说,如果用户的身份已知和/或与用户相关联的许可指示用户有权进行那个API调用,并且服务302的标识符被包括在由网关计算机308维护的路由表中,网关计算机308可以将请求转发到服务302。这种转发可以包括从路由表和在消息中接收到的并与服务302相关联的服务标识符来识别与服务302相关联的目的地地址。
在314处,服务302可以接收API调用并执行用于处理该调用的任何合适操作。一旦处理已完成,服务就可以在316处将响应返回到网关计算机308。在一些实施例中,这个响应可以指示处理是成功(例如,完成)还是不成功(例如,不完整/不被允许)。
在316处,用户设备306可以接收响应并执行任何合适的操作,诸如但不限于向用户显示API调用被成功处理的指示。
可替代地,如果在312处可以由网关计算机308(或图2的另一个合适组件)确定API不可被路由。例如,如果用户并非其声称的身份和/或用户无权进行此类API调用和/或如果服务的标识符(例如,IP地址)未包括在网关计算机308维护的当前路由表中,那么网关计算机308(或其它合适的组件)可以确定API调用不可被路由,并且在320处可以将错误代码(例如,指示一般或特定错误的字母数字值)转发到用户设备306。
在322处,用户设备306可以被配置为执行一个或多个操作来处置错误,诸如在屏幕上显示错误的指示、使得用户能够选择尝试另一个请求等。
图4是用于图示根据至少一个实施例的响应于对尚未部署的服务(例如,服务402)的API调用而执行的操作的流程400的流程图。在一些实施例中,服务的预定义集合可以预先部署在该区域中和/或可由用户设备通过API调用来访问。服务402可以不包括在已部署服务的那个初始预定义集合中。
流程400可以开始于404,其中可以由用户设备406(例如,图3的用户设备306的示例)做出API请求。在一些实施例中,API调用可以经由HTTPS协议或类似协议来执行。API调用可以包括任何合适的信息,诸如用户的标识符、与请求相关联的服务的标识符等。API调用可以由网关计算机408接收,网关计算机408可以与网关计算机408相同或相似并且可以是实现图1的WAN网关126的计算机的示例。与上面讨论的网关计算机类似,网关计算机408可以被配置为维护先前部署的区域服务(例如,图2的云服务A-N)的路由表。路由表可以包括由图1和图2的体系架构提供的环境内的每个服务和/或基础设施组件的互联网协议(IP)地址。路由表可以包含将数据分组朝着其目的地转发所需的任何合适信息。例如,路由表可以包括目的地的网络标识符(例如,IP地址)、用于将目的地IP地址与网络ID匹配的子网掩码以及被配置为使数据分组能够朝着到目的地被转发的任何合适信息。
在410处,网关计算机408(或图2的任何合适组件,诸如入口代理218、CIOS区域202等)可以认证API调用的用户。如上所述,认证可以包括对被配置为维护系统的一个或多个用户的许可和/或身份数据的一个或多个服务(例如,身份服务)进行API调用。举例来说,网关计算机308可以调用配置有许可和/或身份数据的身份服务,该许可和/或身份数据可以与在请求中接收到的用户的标识符一起使用以识别用户和/或与那个用户相关联的一个或多个许可策略。作为另一个示例,网关计算机408可以维护与任何合适数量的用户相关联的用户数据,并且可以使用从API调用获得的任何合适信息(例如,与用户相关联的标识符)对照该用户数据来认证用户。
在412处,可以确定API调用是否能够被路由。这个确定可以包括识别以下的任何合适组合:1)用户是否是他们所声称的人,2)用户是否有调用服务302的这种功能性的授权,或者3)服务的标识符(例如,IP地址)是否包括在由网关计算机408维护的当前路由表中。这个确定可以类似于在图3的312处做出的确定。
如果API调用不可被路由(例如,服务402尚未部署、未包括在路由表中等),那么流程400可以进行到414,其中可以将返回错误转发到用户设备406,并且可以将数据发送到编排器416(例如,图1的CIOS中央102)以指示所请求的服务(例如,服务402)的引导将被发起。
在418处,用户设备406可以被配置为执行一个或多个操作来处置错误,诸如在屏幕上显示错误的指示、使得用户能够选择尝试另一个请求等。在做出另一个API调用时,流程可以返回到404并且流程的剩余部分可以重复任何合适的次数。414、418和420的操作可以以任何合适的次序执行。
在420处,编排器416可以接收引导请求并执行用于引导(例如,加载到存储器(例如,虚拟机的存储器)中和/或初始化)不存在的服务(例如,服务402)。在一些实施例中,编排器416可以利用与引导服务402相关联的预定义指令集。举例来说,与服务402相关联的有向无环图(DAG)可以被用于识别用于对服务402进行引导的一个或多个指令。在一些实施例中,这个DAG是更大DAG的一部分,该更大的DAG维持各种服务与其它服务的能力(例如,由另一个服务提供的功能性的特定部分)的相互依赖性。与服务402相关联的DAG可以是有限有向图的任何合适部分,其包括任何合适数量的节点和边,其中每条边从一个节点指向另一个节点。节点和边可以被布置为避免有向环。因此,有限有向图(例如,DAG)被布置成使得无法从任何节点开始并遵循一致有向的边序列最终环回同一节点。有限有向图的最后一个节点可以指向空值或者以其它方式指示有限有向图的结束。
在一些实施例中,DAG的每个节点与下一个操作节点所依赖的操作集或能力集对应。每个DAG的有向边定义执行这些操作的次序和/或与节点相关联的操作的子集和与紧邻的前一节点相关联的能力的子集之间的依赖性。每个节点的操作将按照与节点的次序对应的次序执行,并且可以单独与一个或多个依赖性对应。举例来说,DAG中的第一节点可以与对应于DAG的第三节点(例如,与服务402对应)的操作对与不同资源(例如,服务A)相关联的能力的依赖性对应。类似地,DAG的第二节点可以与对应于第三节点(例如,表示服务402)的操作对与不同资源(例如,资源B)相关联的能力的依赖性对应。在一些实施例中,不同的能力节点(例如,识别对特定资源的一种或多种能力的依赖性的节点)可以被用于不同的资源,或者单个节点可以被利用来指定所有依赖性而不管该依赖性参考多少个资源。因此,在一些实施例中,服务402对服务A和资源B的依赖性可以被组合在单个节点中。
可以遍历DAG以编排用于在云计算环境中相对于对其它资源的能力(或其它资源本身)的一个或多个依赖性引导和/或部署资源(例如,服务402)的操作的执行。
在422处,一旦服务402已被引导(例如,服务402的预定义映像被部署到环境/区域内的特定计算机)并且准备好接受后续请求,编排器416就可以将数据(例如,与服务402相关联的IP地址、与服务402相关联的字母数字标识符等)传输到网关计算机408以更新由网关计算机408维护的路由表。网关计算机408可以被配置为用由编排器416提供并且与服务402相关联的数据的任何合适部分来更新路由表。虽然未描绘,但在一些实施例中,网关计算机408可以将任何合适的数据传输到用户设备406以指示服务402已就绪。
随后,用户可以在404处发起新的API调用并且可以重复404-412的操作。由于路由表包括与服务402相关联的数据(例如,服务的标识符、服务402的IP地址等),在412处做出的确定可以指示API调用现在可路由到服务402并且API调用可以在424处被转发到服务402。在一些实施例中,服务402(或网关计算机408)可以发起针对预定义的时间段的定时器。这个定时器可以被配置为维持对服务402最后一次被调用的时间的了解。这里的目的是如果在从最后接收到的API调用起的预定义时间段内没有接收到对服务的另一个API调用,那么能够逐渐结束服务402。参考图7更详细地描述这个过程。
在426处,服务可以向网关计算机408返回响应。在一些实施例中,这个响应可以指示处理是成功(例如,完成)还是不成功(例如,不完整/不被中被允许)。网关计算机408可以将响应转发到用户设备406。
在428处,用户设备406可以接收响应并执行任何合适的操作,诸如但不限于向用户显示API调用被成功处理的指示。
应当认识到的是,如果服务402在上述第一API调用之后最初可用,那么流程400可以从412进行到424,同时放弃执行整个引导过程和路由表更新,因为服务在API请求时已经可用。
图5是用于图示根据至少一个实施例的当尚未部署的服务(例如,服务502)依赖于另一个也尚未部署的服务时响应于对该服务的API调用而执行的操作的流程500的流程图。
流程500可以开始于504,其中用户设备506(例如,图4的用户设备406的示例)可以做出API请求。在一些实施例中,可以经由HTTPS协议或类似协议执行API。在504、510、512、514和518处执行的操作可以与在图4的404、410、412、414和418处讨论的操作基本上相同。在530处执行的操作可以与在图4的424处讨论的操作基本上相同,并且可以由服务502或网关计算机508执行。API调用可以由网关计算机508接收,网关计算机508可以与图5的网关计算机408相同或相似,其可以是实现图1的WAN网关126的计算机的示例。
在520处,响应于接收到对在514处传输的引导请求的请求(例如,从用户设备506接收到的API请求),编排器516(例如,图1的CIOS中央102)可以执行用于引导(例如,加载到存储器(例如,虚拟机的存储器)和/或初始化)不存在的服务(例如,服务502,图4的服务402的示例)的任何合适操作。在一些实施例中,编排器516可以利用与对服务502进行引导相关联的预定义指令集。举例来说,与服务502相关联的有向无环图(DAG)可以(例如,从存储器)被获得并被用来识别用于对服务502进行引导的一个或多个指令。
图6是图示根据至少一个实施例的用于编排包括对至少一种能力(例如,不同资源的能力)的依赖性的任务(例如,部署/引导诸如图5的服务502之类的资源)的执行的示例过程600的流程图。如图6中所示,过程流600包括调度器602(例如,图2的调度器206)、工作者604(例如,图2的工作者210)和过程606(例如,图2的CIOS容器212的示例)。
在608处,调度器602可以接收用于在区域中部署一个或多个基础设施组件/资源(诸如服务502)的任务,并且调度器602可以将与该任务有关的数据传输到工作者604。在一些实施例中,调度器602可以实例化工作者604以处置资源(例如,服务502)的部署。
在610处,工作者604可以实例化计算过程606,计算过程606可以被配置为执行声明性基础设施供应器(例如,诸如Terraform之类的声明性供应工具)的实例。
在612处,计算过程606可以解析与部署相关联的配置文件以生成用于特定资源(例如,服务502)的有向无环图(DAG)。
如上面所讨论的,DAG的每个节点与下一个操作节点所依赖的操作集或能力集对应。每个DAG的有向边定义执行这些操作的次序和/或与节点相关联的操作的子集和与紧邻的前一节点相关联的能力的子集之间的依赖性。每个节点的操作将按照与节点的次序对应的次序被执行,并且可以单独与一个或多个依赖性对应。通过解析配置,计算过程606可以识别对其它资源的能力的任何合适数量的隐式和/或显式依赖性。作为示例,计算过程606可以识别服务502依赖于另一个服务(称为“服务B”)。一旦被识别,计算过程606就构建DAG,该DAG指定用于引导和/或部署资源的任务,该任务具有可能与资源所依赖的能力对应的一个或多个节点(例如,根据解析期间识别出的隐式和/或显式依赖性)。在一些实施例中,DAG可能已经被生成并存储在存储器中。在这种情况下,可以简单地检索DAG,而不是通过解析重新生成DAG。
在614处,计算过程606可以开始遍历DAG,从而当到达DAG的各个节点时执行特定资源的部署和/或引导的至少一部分。根据DAG的至少一个节点,可以执行任何合适的操作以使与资源对应的功能性的一部分变得可用。与资源对应的功能性的多个部分可能变得可用。在一些实施例中,计算过程606可以向调度器602传输指示资源的一项或多项能力现在可用的通知(未描绘)。DAG的节点中的至少一个可以与一个或多个其它资源的能力对应。当到达这些类型的节点时,计算过程606可以检查该能力是否可用。如果可用,那么计算过程606可以继续其对DAG的遍历。
在616处,计算过程606可以到达DAG的与一个或多个其它资源的一种或多种能力对应的节点。在一些实施例中,计算过程606可以确定与节点相关联的至少一种能力尚不可用。
在620处,响应于确定与节点相关联的至少一种能力不可用,计算过程606可以向调度器602传输指示与计算过程606对应的资源所依赖的已确定为不可用的一种或多种能力的数据。
在622处,计算过程606可以在潜在地存储指示DAG的哪些操作和/或节点已经完成和/或计算过程606最后访问DAG的哪个特定节点的状态信息之后退出。计算过程606退出、被杀死、被挂起或以其它方式停止执行。
在624处,调度器602可以存储指示特定资源正在等待资源恢复引导和/或用于部署目的所需的一种或多种特定能力的信息。
在626处,调度器602可以接收资源正在等待的一项或多项能力已经变得可用的一个或多个通知。在一些实施例中,调度器602可以从其它计算过程(例如,线程)接收指示对应资源的各种能力(当那些能力变得可用时)的各种通知。调度器602可以维护可用的各种能力和/或资源当前正在等待的各种能力的一个或多个记录。调度器602可以从一个或多个记录中识别与计算过程606对应的资源正在等待的特定能力已经变得可用。因而,调度器602可以进行到628。
在628处,响应于确定与计算过程606对应的资源所依赖的能力已经变得可用,调度器602可以返回到步骤608,在步骤608中它向工作者604传输与原始任务(例如,部署资源)有关的数据。在一些实施例中,调度器602可以实例化新的工作者或利用先前的工作者604(如所描绘的)来继续处置与资源相关联的任务。工作者604可以实例化可以被配置为执行解析配置文件以生成(或以其它方式获得)用于资源的DAG的过程(未描绘)。该过程可以访问所存储的状态信息以识别DAG中最后访问的节点(例如,与资源正在等待的一种或多种能力对应的节点)。由于一种或多种能力现在可用,因此该过程可以以与上面讨论的类似的方式继续其对DAG的遍历,从而在每个节点处执行操作或者执行任务的一部分或者检查任务的下一部分所依赖的能力,直到部署/引导资源(例如,服务502)的操作完成。
可以针对任务的每个资源执行与上面讨论的类似的过程。举例来说,当部署具有多个资源(例如,多个服务)的系统时,可以代表每个资源执行过程600,以便部署系统中的每个资源。
返回到图5,在520处,编排器516可以识别与服务502相关联的一个或多个依赖性。如上所述,可以获得(例如,生成或从存储器检索)与服务502相关联的DAG。DAG的一个或多个节点可以与一个或多个依赖性对应。作为非限制性示例,用于服务502的DAG(或者与服务502相关联的DAG的一部分)可以指示服务502依赖于另一个服务(例如,服务B)。即,可以在与服务502对应的节点之前提供与服务B对应的节点。
根据识别对服务B的依赖性,编排器516可以在522处执行用于部署服务B/对服务B进行引导的任何合适操作。在524处,一旦服务B已被引导(例如,用于服务B的预定义映像被部署到环境/区域内的特定计算机)并且准备好接受后续请求,编排器516就可以向网关计算机508传输数据(例如,与服务B相关联的IP地址、与服务B相关联的字母数字标识符等)以更新由网关计算机508维护的路由表。网关计算机508可以被配置为用由编排器516提供并与服务B相关联的数据的任何合适部分来更新路由表。虽然未描绘,但是在一些实施例中,网关计算机508可以将任何合适的数据传输到用户设备506以指示服务器B就绪。
在526处,编排器516可以识别出服务B已被部署并且可以继续执行用于部署服务502/对服务502进行引导的任何合适的操作。在528处,一旦服务502已被引导(例如,用于服务502的预定义映像被部署到环境/区域内的特定计算机)并且准备好接受后续请求,编排器516就可以向网关计算机508传输数据(例如,与服务502相关联的IP地址、与服务502相关联的字母数字标识符等)以更新由网关计算机508维护的路由表。网关计算机508可以被配置为用由编排器516提供并且与服务502相关联的数据的任何合适部分来更新路由表。虽然未描绘,但是在一些实施例中,网关计算机508可以将任何合适的数据传输到用户设备506以指示服务502就绪。
随后,用户可以在504处发起新的API调用并且可以重复504、510和512的操作。由于路由表包括与服务502相关联的数据(例如,服务的标识符、服务502的IP地址等),在512处做出的确定可以指示API调用现在可路由到服务502并且API调用可以在530处转发到服务502。从530开始,可以执行与服务502对应的操作和图4的424-428的操作。例如,服务可以将响应返回到网关计算机508,网关计算机508进而可以将响应转发到用户设备506。这个响应可以指示处理是成功(例如,完成)还是不成功(例如,不完整/不被允许)。用户设备506可以接收响应并执行任何合适的操作,诸如但不限于向用户显示API调用被成功处理的指示。
应当认识到的是,如果服务502在上述第一API调用之后最初可用,那么流程400可以从512进行到530,同时放弃执行整个引导过程和路由表更新,因为服务已经被在API请求时可用。
图7是图示根据至少一个实施例的用于使未使用的服务停转的操作的流程700的流程图。在执行流程700的操作之前,可以假设服务702(例如,图4的服务402的示例)被引导并且在接收到对服务702的最后API调用时设置定时器。
流程700可以开始于704,其中发生在图4的424处设置的定时器的超时(对于服务502,类似地在图5的530处)。在一些实施例中,超时可以触发由服务702接收到的事件。响应于识别超时(例如,接收事件),服务702可以被配置为传输任何合适的数据以向编排器706(例如,图4的编排器416的示例)指示服务702不再被使用(例如,如在预定义的时间段(诸如最后一小时)内未接收到任何请求所指示的、如通过在先前预定义的时间段内接收到少于阈值量的请求所指示的,等等)。虽然服务702被描绘为接收事件,但是也可以是由网关计算机708(例如,图4的网关计算机408的示例)接收事件(或者以其它方式识别超时)的情况。举例来说,网关计算机可以被配置为基于周期性地识别接收对服务702的上次请求的上次时间并且确定上次时间与当前时间之间的差超过阈值时间段。虽然使用超时作为用于触发服务702的停转的机制来进行说明,但是可以利用任何合适的触发器。举例来说,使服务702停转可以至少部分地基于接收(例如,来自用户设备)使一个或多个服务(例如,包括服务702)停转的请求而被触发。
在一些实施例中,如果服务在其管理下不具有活动资源实例(或者以其它方式确定没有云计算环境的其它组件依赖于该服务),那么该服务可以被认为可以安全地停转。如果服务正在管理一个或多个资源实例,那么可以监视这些资源实例的状态以确定该服务何时和/是否不再管理任何资源实例。作为这种监视的一部分,可以周期性地、根据时间表或预定义的频率(例如,每分钟、每30秒等)进行对这些资源实例的检查。
在710处,编排器706可以接收由服务702(或者可替代地,由网关计算机708)提供的数据(请求停转的消息和/或指示符)。响应于接收这个数据,编排器706可以被配置为执行用于使服务702停转的任何合适操作。在一些实施例中,操作可以是预定义的,在识别将执行操作以使服务停转的次序的DAG中提供。在一些实施例中,编排器706可以确定是否需要其它资源(例如,服务702所依赖的其它服务)。举例来说,编排器706可以识别请求率、所依赖的资源(例如,服务702所依赖的服务)的功能性最后被使用的先前时间段(例如,最后十分钟、小时、天等)中的先前请求的数量。编排器706可以利用预定义的规则集来识别所依赖的资源是否仍然需要(例如,如违反预定义阈值的速率/数量所暗示的被其它服务需要)。根据确定不再需要所依赖的资源,编排器706可以执行操作以使所依赖的资源以及服务702停转。在一些实施例中,编排器706可以被配置为在传输针对任何资源(例如,所依赖的资源和/或服务702)之前,请求和接收请求用户输入,从而请求指示同意继续停转请求的用户输入。
在712处,编排器706可以更新由网关计算机708维护的路由表。在一些实施例中,更新路由表可以包括由编排器706传输指示(例如,通过(一个或多个)标识符)服务702(以及如果适用的话,一个或多个所依赖的资源)不再被利用的数据。响应于接收到这个数据,网关计算机708可以移除该服务和以其它方式解除关联以及任何合适数量的一个或多个所依赖的服务(如果这些所依赖的服务也被在712处接收到的数据指示为未被利用(或至少未被充分利用)的话)。在流程700完成之后,流程400可以被执行任何合适的次数。
图8是图示根据至少一个实施例的用于响应于接收API请求而编排服务的引导的示例方法800的流程图。这种方法被示为逻辑流程图,其每个操作可以以硬件、计算机指令或其组合来实现。在计算机指令的上下文中,操作可以表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,指令在由一个或多个处理器执行时执行所阐述的操作。一般而言,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的次序并不旨在被解释为限制,并且任何数量的所描述的操作可以以任何次序和/或并行组合以实现该过程。
此外,方法800可以在配置有可执行指令的一个或多个计算设备或计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上集体地、通过硬件或其组合执行的代码(例如,可执行指令、一个或多个计算机程序或者一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读存储介质上。在一些实施例中,方法1000可以由多个处理器并行执行。计算机可读存储介质可以是非暂态的。在一些实施例中,方法800由编排器(例如,经由图2的调度器206、工作者210和/或CIOS容器212的CIOS区域202、图4、图5和图7的编排器416、516和/或706)来执行。
方法800可以开始于802,其中接收(例如,由图4的网关计算机408)请求(例如,经由HTTP请求提供的API调用),该请求包括云计算环境的计算组件(例如,图4的服务402)的标识符。
在804处,计算设备可以确定标识符(或者与该标识符相关联的服务对应的任何合适信息)是否存在于计算设备可访问的路由表(例如,由图4的网关计算机408维护/管理的路由表)中。
在806处,根据路由表中存在该标识符,计算设备(网关计算机408)可以将请求转发到计算组件(例如,服务402)。
在808处,根据路由表中缺失该标识符,计算设备可以响应于该请求而传输错误代码。在一些实施例中,错误代码可以指示计算组件不可用。例如,错误代码可以被传输到发起请求的用户设备。
在810处,根据路由表中缺少该标识符,可以传输与计算组件对应的引导请求(例如,由计算设备传输到云计算环境的部署编排器(例如,编排器406))。在一些实施例中,部署编排器被配置为至少部分地基于引导请求将计算组件部署到云计算环境。这种部署的特定操作可以从如上面结合图5和图6描述的DAG来识别。
在812处,可以接收包括该标识符的后续请求。在一些实施例中,该标识符现在可以根据在引导完成之后被添加而存储在由计算组件维护的路由表中。
在814处,将后续请求传输(例如,由网关计算机408)到计算组件(例如,服务402)以供处理。
图9是根据至少一个实施例的用于图示响应于订购尚未部署的服务而执行的操作的流程900的流程图。在一些实施例中,服务的预定义集合可以预先部署在该区域中和/或可由用户设备通过API调用来访问。服务902可以不包括在已部署服务的那个初始预定义集合中。可替代地,服务902可能先前是可操作的但已停转并且不再可访问。在任一场景中,在流程900的操作开始时,服务902都被假设为不可访问/不可操作(例如,服务902未被部署)。
流程900可以开始于904,其中可以订购服务(例如,服务902)。在一些实施例中,用户可以经由用户设备906访问用户界面。下面将结合图11更详细地讨论示例界面。根据在界面处提供的用户输入并且为了请求要订购的服务1002,用户设备906(图4的用户设备406的示例)可以做出API请求。在一些实施例中,可以经由HTTPS协议或类似协议来执行API请求。该请求可以包括任何合适的信息,诸如用户的标识符、用户凭证、与请求相关联的服务的标识符等。API调用可以由网关计算机908接收,其可以与图4的网关计算机408相同或相似并且可以是实现图1的WAN网关126的计算机的示例。与上面讨论的网关计算机类似,网关计算机908可以被配置为维护先前部署的区域服务(例如,图2的云服务A-N)的路由表。路由表可以包括图1和图2的体系架构所提供的环境内的每个服务和/或基础设施组件的互联网协议(IP)地址。路由表可以包含将数据分组朝着其目的地转发所需的任何合适信息。例如,路由表可以包括目的地的网络标识符(例如,IP地址)、用于将目的地IP地址与网络ID匹配的子网掩码以及被配置为使数据分组能够朝着目的地被转发的任何合适信息。
在910处,网关计算机408(或图2的任何合适组件,诸如入口代理218、CIOS区域202等)可以认证API调用的用户并确定用户是否被授权订购该服务。如上面其它示例中所描述的,认证可以包括对被配置为维护系统的一个或多个用户的许可和/或身份数据的一个或多个服务(例如,身份服务)进行API调用。举例来说,网关计算机308可以调用配置有许可和/或身份数据的身份服务,该许可和/或身份数据可以与在请求中接收到的用户的标识符一起使用以识别用户和/或与那个用户相关联的一个或多个许可策略。作为另一个示例,网关计算机908可以维护与任何合适数量的用户相关联的用户数据,并且可以使用从API调用获得的任何合适信息(例如,与用户相关联的标识符)对照那个用户数据来认证用户。
在912处,可以确定该请求是否被允许。这个确定可以包括识别1)用户是否是他们所声称的人,以及2)用户是否具有订购资源(例如,服务902)的授权的任何合适组合。在一些实施例中,从请求获得的用户数据(诸如用户凭证)可以被用来获得指示用户可订购的特定服务或服务类型的许可数据。
如果许可数据指示不允许用户订购所请求的服务(或该类型的服务),那么流程900可以进行到914,其中可以由网关计算机908将错误代码返回到用户设备906。错误代码可以是指示不允许用户订购服务902的任何合适的值。在916处,响应于接收到错误代码,用户设备906可以被配置为在用户界面处呈现任何合适的数据以指示订购不成功/不被允许。
可替代地,如果如在912处确定的那样允许服务902的订购,那么流程900可以进行到918,其中返回状态可以被转发到用户设备906并且指示所请求的服务(例如,服务902)的引导将被发起的数据可以被发送到编排器916(例如,图1的CIOS中央102)。
在920处,用户设备406可以被配置为执行一个或多个操作以显示从网关计算机908接收的状态。举例来说,用户设备406可以在服务902的标识符附近呈现诸如“已请求”之类的状态,以指示服务902已被订购但尚未投入运行。
在922处,编排器916可以接收引导请求并且执行用于引导(例如,加载到存储器(例如,虚拟机的存储器)中和/或初始化)不存在的服务(例如,服务902)的任何合适的操作。在一些实施例中,编排器916可以利用与对服务902进行引导相关联的预定义指令集。编排器916可以遍历与服务902相关联的DAG以识别并执行用于将服务902引导和/或部署到在其中接收订单的云计算环境的操作。这个过程可以与上面结合图4的描述中讨论的DAG所描述的过程相似或相同。
在924处,一旦服务402已被引导(例如,服务902的预定义映像被部署到环境/区域内的特定计算机)并且准备好接受后续请求,编排器916就可以将数据(例如,与服务902相关联的IP地址、与服务902相关联的字母数字标识符等)传输到网关计算机908以更新由网关计算机908维护的路由表。网关计算机908可以被配置为用由编排器916提供并与服务902相关联的数据的任何合适部分来更新路由表。在一些实施例中,网关计算机908可以向用户设备906传输任何合适的数据以指示服务902就绪。用户设备906可以在接收到状态后呈现该状态(如920处所描绘的)。
随后,用户可以在926处发起与服务902对应的API调用。可以关于服务902执行与方框404-412对应的操作,以识别用户是否是他们声称的用户并且被授权进行API调用。如果不是,那么可以在用户设备906处向用户提供并显示错误代码。可替代地,由于路由表包括与服务902相关联的数据(例如,服务的标识符、服务902的IP地址等),因此在928处API调用可以被网关计算机908路由到服务902。
在930处,服务902可以处理API调用。在一些实施例中,服务902可以发起针对预定义的时间段的定时器。定时器可以可替代地由网关计算机908设置。这个定时器可以被配置为维持对服务902最后一次被调用的时间的了解。如果在预定义的时间段内没有再次使用服务902,那么可以执行结合图7描述的过程来使服务902停转。作为处理API调用的结果,服务902可以向网关计算机908返回响应。在一些实施例中,这个响应可以指示处理是成功(例如,完成)还是不成功(例如,不完整/不被允许)。网关计算机908可以将响应转发到用户设备906。用户设备906可以接收响应并执行任何合适的操作,诸如但不限于向用户显示API调用被成功处理的指示。
图10是用于图示根据至少一个实施例的当尚未部署的服务依赖于同样尚未部署的另一个服务时响应于订购该尚未部署的服务而执行的操作的流程1000的流程图。在一些实施例中,服务的预定义集合可以预先部署在该区域中和/或可由用户设备通过API调用来访问。服务1002可以不包括在已部署服务的那个初始预定义集合中。可替代地,服务1002可以先前是可操作的但已停转并且不再可访问。在任一场景中,在流程1000的操作开始时,服务1002被假设为不可访问/不可操作(例如,服务1002未被部署)。
流程1000可以开始于1004,其中可以订购服务(例如,服务1002,图9的服务902的示例)。在一些实施例中,用户可以经由用户设备1006访问用户界面。下面将结合图11更详细地讨论示例界面。根据在界面处提供的用户输入,用户设备1006(图4的用户设备406的示例)可以做出API调用。在一些实施例中,可以经由HTTPS协议或类似协议来执行API调用。该请求可以包括任何合适的信息,诸如用户的标识符、用户凭证、与请求相关联的服务的标识符等。API调用可以由网关计算机1008接收,其可以与图4的网关计算机408相同或相似并且可以是实现图1的WAN网关126的计算机的示例。与上面讨论的网关计算机相似,网关计算机1008可以被配置为维护先前部署的区域服务(例如,图2的云服务A-N)的路由表。
在1004-1020处执行的操作一般可以与在图9的904-922处讨论的操作相同或相似的操作对应,并且为了简洁将不再再次讨论。
在1022处,编排器1023可以识别与服务1002相关联的一个或多个依赖性。可以获得(例如,生成或从存储器检索)与服务1002相关联的DAG。DAG的一个或多个节点可以与一个或多个依赖性对应。作为非限制性示例,用于服务1002的DAG(或者与服务1002相关联的DAG的一部分)可以指示服务1002依赖于另一个服务(例如,服务B)。即,DAG内与服务B对应的节点可以在与服务1002对应的节点之前被提供。
根据识别对服务B的依赖性,编排器1023可以执行用于在1024处部署服务B/对服务B进行引导的任何合适操作。在1026处,一旦服务B已被引导(例如,用于服务B的预定义映像被部署到环境/区域内的特定计算机)并且准备好接受后续请求,编排器1023就可以向网关计算机1008传输数据(例如,与服务B相关联的IP地址、与服务B相关联的字母数字标识符等)以更新由网关计算机1008维护的路由表。网关计算机1008可以被配置为用由编排器1023提供并与服务B相关联的数据的任何合适部分来更新路由表。在一些实施例中,网关计算机1008可以将任何合适的数据传输到用户设备1006以指示服务B就绪。用户设备1006可以在接收时后状态呈现该状态(1020处所描绘的)。
在1028处,编排器516可以识别服务B已经被部署并且可以继续执行用于部署服务1002/对服务1002进行引导的任何合适操作。在1026处,一旦服务1002已被引导(例如,服务1002的预定义映像被部署到环境/区域内的特定计算机)并且准备好接受后续请求,编排器1023就可以向网关计算机1008传输数据(例如,与服务1002相关联的IP地址、与服务1002相关联的字母数字标识符等)以更新由网关计算机1008维护的路由表。网关计算机1008可以被配置为用由编排器1023提供并与服务1002相关联的数据的任何合适部分来更新路由表。在一些实施例中,网关计算机1008可以向用户设备1006传输任何合适的数据以指示服务1002就绪。用户设备1006可以在接收到状态后呈现该状态(1020处所描绘的)。取决于服务1002对系统中的其它能力/服务有多少依赖性,在1024和/或1028处描述的操作可以重复任何合适的次数。
随后,用户可以在1030处发起新的API调用以发起对服务1002的API调用/响应。由于路由表包括与服务1002相关联的数据(例如,服务的标识符、服务1002的IP地址等),网关计算机1008可以在1032处将API调用路由到服务1002。在1034处,服务1002可以接收并处理API调用,然后将响应返回到网关计算机1008,网关计算机1008进而可以将响应转发到用户设备1006。这个响应可以指示处理是成功(例如,完成)还是不成功(例如,不完整/不被允许)。用户设备1006可以接收响应并执行任何合适的操作,诸如但不限于向用户显示API调用被成功处理的指示。
图11是根据至少一个实施例的用于尤其发起上述操作的示例用户界面1100。在一些实施例中,用户界面1100可以由结合上面的图讨论的网关计算机或云计算环境的任何合适计算机来托管。如果由另一个计算机托管,那么那个计算机可以被配置为在用户设备处渲染用户界面1100并且将API调用传输到图9和图10的网关计算机。如果用户界面1100由不同于网关计算机的另一个计算机托管,那么这个计算机可以被配置为从网关计算机接收任何合适的错误代码、状态值等,并且在用户界面1100处呈现与那个数据对应的状态信息。
用户界面1100可以包括搜索区域1102,搜索区域1102包括搜索框1104和按钮1106。用户可以利用搜索框1104来输入搜索查询(例如,服务标识符的某个部分)。当按钮1106被选择时,可以使用在搜索框1104处提供的输入来执行搜索查询。可以对照可订购服务的数据库执行搜索查询以确定与该查询匹配的一个或多个服务。在一些实施例中,可以从搜索结果的列表中过滤先前已订购的和/或当前活动的服务。在一些实施例中,可以向用户呈现(例如,经由用户界面1100或另一个用户界面)用户可以从中选择一个或多个服务来订购的搜索结果的列表。搜索结果列表可以看起来类似于下面讨论的可订购服务1108的列表,并且可以通过经由如下面讨论的那些的列表提供的选择来提供类似的功能性。
用户界面1100可以包括状态区域1110。状态区域1110可以识别任何合适数量的服务,这些服务当前是活动的、先前订购的或正在逐渐结束的。在一些实施例中,状态区域1110可以包括在列1112内的每个服务的标识符以及在列1114内的每个服务的对应状态。状态值可以有很多并且基于所期望的状态的粒度而变化。一些示例状态值可以包括“就绪”、“已订购”、“引导被发起”和“正在停转”。在一些实施例中,用于请求一个或多个服务被停转的菜单或选项。虽然图11中未描绘,但是可以在选择服务区域1110内的一个或多个服务时提供这个菜单或选项,或者可以以其它方式经由用户界面1100或任何合适的接口提供这个菜单/选项。上面讨论的附图的网关计算机可以被配置为在任何合适的时间提供服务的状态,而不必仅在上面讨论的时间和触发时提供。因此,网关计算机可以在接收到订单之后立即提供状态,以在与所订购的服务对应的行上的列1114处显示“已订购”。当编排器发起服务的引导时(或者当网关计算机传输引导请求时),网关计算机可以向用户设备提供状态,该状态可以在用户界面1100处在列1114内呈现为“引导已发起”。当网关计算机(或任何合适的计算组件)确定服务将如结合图7所讨论的那样被停转时,可以提供该服务的状态值并在用户界面1100处呈现为“正在停转”或“正在停用”。当服务不再活动时,可以根据用于识别服务何时可订购的预定义规则的集合将其放回到可订购服务集中。如果可订购,那么该服务可以从状态区域1110移除并且添加到可订购服务列表1108。
可订购服务列表1108可以包括任何合适数量的服务。预定义规则的集合可以规定服务何时可用于订购,并且因此该服务何时将出现在可订购服务列表1108中。在一些实施例中,可订购的特定服务可以取决于多个因素,诸如服务的类型、与服务相关联的服务标识符、特定用户和/或与用户相关联的许可等。用户可以选择可订购服务的列表中的任何服务。在一些实施例中,例如当用户选择区域1116(例如,在区域1116内左键点击)时,可以呈现描述区域1118。在一些实施例中,描述区域1118可以呈现服务的预定义描述。这个描述可以描述服务的功能性和/或与服务相关联的各种依赖性,使得可以向用户通知所选择的服务所依赖的其它服务和/或资源。描述区域1118可以包括订购按钮1120和取消按钮1122。当选择订购按钮1120时,可以以与上面在图9的904和图10的1004处描述的类似的方式传输与订购服务对应的API调用。如果用户决定他不希望订购所选择的服务,那么他可以选择取消按钮1122,以使得用于所选择的服务的描述区域1118被移除。
图12图示了根据本公开的某些实施例的示出用于执行引导云计算系统的资源的操作的方法1200的示例流程图。这个过程被图示为逻辑流程图,其每个操作可以以硬件、计算机指令或其组合来实现。在计算机指令的上下文中,操作可以表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,指令在由一个或多个处理器执行时执行所阐述的操作。一般而言,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的次序并不旨在被解释为限制,并且任何数量的所描述的操作可以以任何次序和/或并行组合以实现该过程。
此外,方法1200可以在配置有可执行指令的一个或多个计算设备或计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上集体地、通过硬件或其组合执行的代码(例如,可执行指令、一个或多个计算机程序或者一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读存储介质上。在一些实施例中,方法1200可以由多个处理器并行执行。计算机可读存储介质可以是非暂态的。在一些实施例中,方法1200由计算设备(例如,图9和图10的网关计算机)执行。
方法1200可以开始于方框1202,其中可以由云计算环境的计算设备来识别已经部署在云计算环境内的计算组件的第一集合。作为示例,请求消息可以被传输到编排器(例如,图10的编排器1023),从而请求已经部署在云计算环境中(并且与用户相关联)的所有服务的列表。请求中提供的数据可以包括用户的标识符、用户凭证等。编排器可以被配置为编译这个列表(可能至少部分地基于请求中提供的数据)并将已订购的或活动的服务的列表传输回到计算设备,其可以被配置为使得在图11的状态区域1110处呈现这个信息。例如,计算设备可以向用户设备传输(直接地或通过被配置为托管用户界面1100的计算设备)与已订购的或活动的服务的列表对应的一个或多个状态指示符。用户设备可以被配置为在接收到列表后在图11的状态区域1110内呈现这个列表。
在1204处,可以由计算设备识别可用于在云计算环境内部署的计算组件的第二集合。举例来说,请求消息可以被传输到编排器(例如,图10的编排器1023),从而请求可用于订购的所有服务的列表。请求中提供的数据可以包括用户的标识符、用户凭证等。编排器可以被配置为编译这个列表(可能至少部分地基于请求中提供的数据)并将可订购服务的列表传输回计算设备,该计算设备可以被配置为使得在图11的区域1108内呈现这个信息。例如,计算设备可以传输(直接地或通过被配置为托管用户界面1100的计算设备)可订购服务的列表。用户设备可以被配置为在接收到列表后在图11的区域1108内呈现这个列表。
在1206处,可以接收部署请求。举例来说,用户可以从用户界面(例如,图11的用户界面1100)进行选择(例如,服务4)。该选择可以导致API调用从用户设备传输到网关计算机(直接地或通过被配置为托管用户界面的计算设备)以订购服务。部署请求(也称为订阅请求)可以识别可用于部署的计算组件的第二集合中的特定计算组件(例如,图11的服务4、分别是图9的服务902和图10的服务1002的示例)。
在1208处,可以由计算设备将与所请求的特定计算组件对应的引导请求传输到云计算环境的部署编排器(例如,分别为图9的编排器916和图10的编排器1023)。在一些实施例中,部署编排器可以被配置为至少部分地基于引导请求将特定计算组件部署到云计算环境。因此,部署编排器可以响应于引导请求而部署所请求的计算组件。
在1210处,可以呈现(例如,在用户设备处)用户界面(例如,用户界面1100),该用户界面呈现已经部署在云计算环境内的计算组件的第一集合的状态指示符的第一集合以及与特定计算组件对应的状态指示符。
如上所述,基础设施即服务(IaaS)是一种特定类型的云计算。IaaS可以被配置为通过公共网络(例如,互联网)提供虚拟化的计算资源。在IaaS模型中,云计算提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,IaaS提供商还可以供应伴随那些基础设施组件的各种服务(例如,计费、监视、日志记录、负载平衡和聚类等)。因此,由于这些服务可以是策略驱动的,因此IaaS用户可以能够实现驱动负载平衡的策略以维持应用的可用性和性能。
在一些情况下,IaaS客户可以通过诸如互联网之类的广域网(WAN)访问资源和服务,并且可以使用云提供商的服务来安装应用栈的剩余元件。例如,用户可以登录到IaaS平台以创建虚拟机(VM)、在每个VM上安装操作系统(OS)、部署诸如数据库之类的中间件、为工作负载和备份创建存储桶,甚至将企业软件安装到那个VM中。然后,客户可以使用提供商的服务来执行各种功能,包括平衡网络流量、解决应用问题、监视性能、管理灾难恢复等。
在大多数情况下,云计算模型将需要云提供商的参与。云提供商可以但不一定是专门提供(例如,供应、出租、销售)IaaS的第三方服务。实体也可能选择部署私有云,从而成为其自己的基础设施服务提供商。
在一些示例中,IaaS部署是将新应用或应用的新版本放置到准备好的应用服务器等上的处理。它还可以包括准备服务器(例如,安装库、守护进程等)的处理。这通常由云提供商管理,位于管理程序层之下(例如,服务器、存储装置、网络硬件和虚拟化)。因此,客户可以负责处理(OS)、中间件和/或应用部署(例如,在(例如,可以按需启动的)自助服务虚拟机等上)。
在一些示例中,IaaS供给可以指获取计算机或虚拟主机以供使用,甚至在它们上安装所需的库或服务。大多数情况下,部署不包括供给,并且供给可能需要被首先执行。
在一些情况下,IaaS供给存在两个不同的挑战。首先,在任何东西运行之前供给初始基础设施集存在最初的挑战。其次,一旦所有东西已被供给,就存在演进现有基础设施(例如,添加新服务、更改服务、移除服务等)的挑战。在一些情况下,可以通过启用以声明方式定义基础设施的配置来解决这两个挑战。换句话说,基础设施(例如,需要哪些组件以及它们如何交互)可以由一个或多个配置文件来定义。因此,基础设施的总体拓扑(例如,哪些资源依赖于哪些资源,以及它们如何协同工作)可以以声明的方式描述。在一些情况下,一旦定义了拓扑,就可以生成创建和/或管理配置文件中描述的不同组件的工作流。
在一些示例中,基础设施可以具有许多互连的元件。例如,可能存在一个或多个虚拟私有云(VPC)(例如,可配置和/或共享计算资源的潜在按需池),也称为核心网络。在一些示例中,还可以供给一个或多个入站/出站流量组规则以定义如何设置网络的入站/出站流量以及一个或多个虚拟机(VM)。也可以供给其它基础设施元件,诸如负载平衡器、数据库等。随着期望和/或添加越来越多的基础设施元件,基础设施可以逐步演进。
在一些情况下,可以采用连续部署技术来使得能够跨各种虚拟计算环境部署基础设施代码。此外,所描述的技术可以使得能够在这些环境内进行基础设施管理。在一些示例中,服务团队可以编写期望部署到一个或多个但通常是许多不同的生产环境(例如,跨各种不同的地理位置,有时跨越整个世界)的代码。但是,在一些示例中,必须首先设置将在其上部署代码的基础设施。在一些情况下,供给可以手动完成,可以利用供给工具供给资源,和/或一旦供给基础设施就可以利用部署工具部署代码。
图13是图示根据至少一个实施例的IaaS体系架构的示例模式的框图1300。服务运营商1302可以通信地耦合到可以包括虚拟云网络(VCN)1306和安全主机子网1308的安全主机租赁1304。在一些示例中,服务运营商1302可以使用一个或多个客户端计算设备,其可以是便携式手持设备(例如,蜂窝电话、/>计算平板、个人数字助理(PDA))或可穿戴设备(例如,Google/>头戴式显示器)、运行软件(诸如Microsoft Windows/>)和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry 8、Palm OS等),并且支持互联网、电子邮件、短消息服务(SMS)、/>或其它通信协议。替代地,客户端计算设备可以是通用个人计算机,包括例如运行各种版本的MicrosoftApple/>和/或Linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种商业上可获得的/>或类UNIX操作系统,包括但不限于各种GNU/Linux操作系统(诸如例如Google Chrome OS)中的任何一种的工作站计算机。替代地或附加地,客户端计算设备可以是任何其它电子设备,诸如瘦客户端计算机、支持互联网的游戏系统(例如,具有或不具有/>手势输入设备的Microsoft Xbox游戏控制台),和/或能够通过可以访问VCN 1306和/或互联网的网络进行通信的个人消息传递设备。
VCN 1306可以包括本地对等网关(LPG)1310,其可以经由包含在SSH VCN 1312中的LPG 1310通信地耦合到安全壳(SSH)VCN 1312。SSH VCN 1312可以包括SSH子网1314,并且SSH VCN 1312可以经由包含在控制平面VCN 1316中的LPG 1310通信地耦合到控制平面VCN 1316。此外,SSH VCN 1312可以经由LPG 1310通信地耦合到数据平面VCN 1318。控制平面VCN 1316和数据平面VCN 1318可以包含在可以由IaaS提供商拥有和/或操作的服务租赁1319中。
控制平面VCN 1316可以包括充当外围网络(例如,公司内部网和外部网络之间的公司网络的部分)的控制平面非军事区(DMZ)层1320。基于DMZ的服务器可以承担有限责任并有助于控制安全漏洞。此外,DMZ层1320可以包括一个或多个负载平衡器(LB)子网1322、可以包括(一个或多个)应用子网1326的控制平面应用层1324、可以包括(一个或多个)数据库(DB)子网1330(例如,(一个或多个)前端DB子网和/或(一个或多个)后端DB子网)的控制平面数据层1328。包含在控制平面DMZ层1320中的(一个或多个)LB子网1322可以通信地耦合到包含在控制平面应用层1324中的(一个或多个)应用子网1326和可以包含在控制平面VCN 1316中的互联网网关1334,并且(一个或多个)应用子网1326可以通信地耦合到包含在控制平面数据层1328中的(一个或多个)DB子网1330以及服务网关1336和网络地址转换(NAT)网关1338。控制平面VCN 1316可以包括服务网关1336和NAT网关1338。
控制平面VCN 1316可以包括数据平面镜像应用层1340,其可以包括(一个或多个)应用子网1326。包含在数据平面镜像应用层1340中的(一个或多个)应用子网1326可以包括可以执行计算实例1344的虚拟网络接口控制器(VNIC)1342。计算实例1344可以将数据平面镜像应用层1340的(一个或多个)应用子网1326通信地耦合到可以包含在数据平面应用层1346中的(一个或多个)应用子网1326。
数据平面VCN 1318可以包括数据平面应用层1346、数据平面DMZ层1348和数据平面数据层1350。数据平面DMZ层1348可以包括(一个或多个)LB子网1322,其可以通信地耦合到数据平面应用层1346的(一个或多个)应用子网1326和数据平面VCN 1318的互联网网关1334。(一个或多个)应用子网1326可以通信地耦合到数据平面VCN 1318的服务网关1336和数据平面VCN 1318的NAT网关1338。数据平面数据层1350还可以包括可以通信地耦合到数据平面应用层1346的(一个或多个)应用子网1326的(一个或多个)DB子网1330。
控制平面VCN 1316和数据平面VCN 1318的互联网网关1334可以通信地耦合到元数据管理服务1352,元数据管理服务1352可以通信地耦合到公共互联网1354。公共互联网1354可以通信地耦合到控制平面VCN 1316和数据平面VCN 1318的NAT网关1338。控制平面VCN 1316和数据平面VCN 1318的服务网关1336可以通信地耦合到云服务1356。
在一些示例中,控制平面VCN 1316或数据平面VCN 1318的服务网关1336可以对云服务1356进行应用编程接口(API)调用,而无需通过公共互联网1354。从服务网关1336到云服务1356的API调用可以是单向的:服务网关1336可以对云服务1356进行API调用,并且云服务1356可以将请求的数据发送到服务网关1336。但是,云服务1356可以不发起对服务网关1336的API调用。
在一些示例中,安全主机租赁1304可以直接连接到服务租赁1319,服务租赁1319否则可以被隔离。安全主机子网1308可以通过LPG 1310与SSH子网1314通信,LPG 1310可以使得能够在否则隔离的系统上进行双向通信。将安全主机子网1308连接到SSH子网1314可以使安全主机子网1308访问服务租赁1319内的其它实体。
控制平面VCN 1316可以允许服务租赁1319的用户设置或以其它方式供给期望的资源。在控制平面VCN 1316中供给的期望资源可以在数据平面VCN 1318中部署或以其它方式使用。在一些示例中,控制平面VCN 1316可以与数据平面VCN 1318隔离,并且控制平面VCN 1316的数据平面镜像应用层1340可以经由VNIC 1342与数据平面VCN 1318的数据平面应用层1346通信,VNIC 1342可以包含在数据平面镜像应用层1340和数据平面应用层1346中。
在一些示例中,系统的用户或客户可以通过可以将请求传送到元数据管理服务1352的公共互联网1354来做出请求,例如创建、读取、更新或删除(CRUD)操作。元数据管理服务1352可以通过互联网网关1334将请求传送到控制平面VCN 1316。请求可以被包含在控制平面DMZ层1320中的(一个或多个)LB子网1322接收。(一个或多个)LB子网1322可以确定请求是有效的,并且响应于该确定,(一个或多个)LB子网1322可以将请求传输到包含在控制平面应用层1324中的(一个或多个)应用子网1326。如果请求被验证并且需要对公共互联网1354的调用,那么对公共互联网1354的调用可以被传输到可以对公共互联网1354进行调用的NAT网关1338。请求可能期望存储的存储器可以存储在(一个或多个)DB子网1330中。
在一些示例中,数据平面镜像应用层1340可以促进控制平面VCN 1316和数据平面VCN 1318之间的直接通信。例如,可能期望对包含在数据平面VCN 1318中的资源应用对配置的更改、更新或其它适当的修改。经由VNIC 1342,控制平面VCN 1316可以直接与包含在数据平面VCN 1318中的资源通信,并且从而可以执行对配置的更改、更新或其它适当的修改。
在一些实施例中,控制平面VCN 1316和数据平面VCN 1318可以包含在服务租赁1319中。在这种情况下,系统的用户或客户可能不拥有或操作控制平面VCN 1316或数据平面VCN 1318。替代地,IaaS提供商可以拥有或操作控制平面VCN 1316和数据平面VCN 1318,这两者平面都可以包含在服务租赁1319中。该实施例可以使得能够隔离可能阻止用户或客户与其它用户或其它客户的资源交互的网络。此外,该实施例可以允许系统的用户或客户私自存储数据库,而无需依赖可能不具有期望安全级别的公共互联网1354进行存储。
在其它实施例中,包含在控制平面VCN 1316中的(一个或多个)LB子网1322可以被配置为从服务网关1336接收信号。在这个实施例中,控制平面VCN 1316和数据平面VCN1318可以被配置为由IaaS提供商的客户调用而无需调用公共互联网1354。IaaS提供商的客户可能期望这个实施例,因为客户使用的(一个或多个)数据库可以由IaaS提供商控制并且可以存储在服务租赁1319上,服务租赁1319可能与公共互联网1354隔离。
图14是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1400。服务运营商1402(例如,图13的服务运营商1302)可以通信地耦合到安全主机租赁1404(例如,图13的安全主机租赁1304),该安全主机租赁1404可以包括虚拟云网络(VCN)1406(例如,图13的VCN 1306)和安全主机子网1408(例如,图13的安全主机子网1308)。VCN 1406可以包括本地对等网关(LPG)1410(例如,图13的LPG 1310),其可以经由包含在SSH VCN 1412中的LPG 1310通信地耦合到安全壳(SSH)VCN 1412(例如,图13的SSH VCN 1312)。SSH VCN1412可以包括SSH子网1414(例如,图13的SSH子网1314),并且SSH VCN 1412可以经由包含在控制平面VCN 1416中的LPG 1410通信地耦合到控制平面VCN 1416(例如,图13的控制平面VCN 1316)。控制平面VCN 1416可以包含在服务租赁1419(例如,图13的服务租赁1319)中,并且数据平面VCN 1418(例如,图13的数据平面VCN 1318)可以包含在可能由系统的用户或客户拥有或操作的客户租赁1421中。
控制平面VCN 1416可以包括控制平面DMZ层1420(例如,图13的控制平面DMZ层1320),其可以包括(一个或多个)LB子网1422(例如,图13的(一个或多个)LB子网1322)、可以包括(一个或多个)应用子网1426(例如,图13的(一个或多个)应用子网1326)的控制平面应用层1424(例如,图13的控制平面应用层1324)、可以包括(一个或多个)数据库(DB)子网1430(例如,类似于图13的(一个或多个)DB子网1330)的控制平面数据层1428(例如,图13的控制平面数据层1328)。包含在控制平面DMZ层1420中的(一个或多个)LB子网1422可以通信地耦合到包含在控制平面应用层1424中的(一个或多个)应用子网1426和可以包含在控制平面VCN 1416中的互联网网关1434(例如,图13的互联网网关1334),并且(一个或多个)应用子网1426可以通信地耦合到包含在控制平面数据层1428中的(一个或多个)DB子网1430以及服务网关1436(例如,图13的服务网关)和网络地址转换(NAT)网关1438(例如,图13的NAT网关1338)。控制平面VCN 1416可以包括服务网关1436和NAT网关1438。
控制平面VCN 1416可以包括:可以包括(一个或多个)应用子网1426的数据平面镜像应用层1440(例如,图13的数据平面镜像应用层1340)。包含在数据平面镜像应用层1440中的(一个或多个)应用子网1426可以包括可以执行计算实例1444(例如,类似于图13的计算实例1344)的虚拟网络接口控制器(VNIC)1442(例如,1342的VNIC)。计算实例1444可以促进数据平面镜像应用层1440的(一个或多个)应用子网1426和可以包含在数据平面应用层1446(例如,图13的数据平面应用层1346)中的(一个或多个)应用子网1426之间经由包含在数据平面镜像应用层1440中的VNIC 1442和包含在数据平面应用层1446中的VNIC 1442的通信。
包含在控制平面VCN 1416中的互联网网关1434可以通信地耦合到元数据管理服务1452(例如,图13的元数据管理服务1352),该元数据管理服务1452可以通信地耦合到公共互联网1454(例如,图13的公共互联网1354)。公共互联网1454可以通信地耦合到包含在控制平面VCN 1416中的NAT网关1438。包含在控制平面VCN 1416中的服务网关1436可以通信地耦合到云服务1456(例如,图13的云服务1356)。
在一些示例中,数据平面VCN 1418可以包含在客户租赁1421中。在这种情况下,IaaS提供商可以为每个客户提供控制平面VCN 1416,并且IaaS提供商可以为每个客户设置包含在服务租赁1419中的唯一计算实例1444。每个计算实例1444可以允许包含在服务租赁1419中的控制平面VCN 1416和包含在客户租赁1421中的数据平面VCN 1418之间的通信。计算实例1444可以允许在包含在服务租赁1419中的控制平面VCN 1416中供给的资源被部署或以其它方式在包含在客户租赁1421中的数据平面VCN 1418中使用。
在其它示例中,IaaS提供商的客户可以具有存在于客户租赁1421中的数据库。在这个示例中,控制平面VCN 1416可以包括数据平面镜像应用层1440,其可以包括(一个或多个)应用子网1426。数据平面镜像应用层1440可以驻留在数据平面VCN 1418中,但数据平面镜像应用层1440可能不在数据平面VCN 1418中。即,数据平面镜像应用层1440可以访问客户租赁1421,但是数据平面镜像应用层1440可能不存在于数据平面VCN 1418中或者由IaaS提供商的客户拥有或操作。数据平面镜像应用层1440可以被配置为对数据平面VCN 1418进行调用,但可以不被配置为对包含在控制平面VCN 1416中的任何实体进行调用。客户可能期望在数据平面VCN 1418中部署或以其它方式使用在控制平面VCN 1416中供给的资源,并且数据平面镜像应用层1440可以促进客户的期望部署或资源的其它使用。
在一些实施例中,IaaS提供商的客户可以将过滤器应用到数据平面VCN 1418。在这个实施例中,客户可以确定数据平面VCN 1418可以访问什么,并且客户可以限制从数据平面VCN 1418对公共互联网1454的访问。IaaS提供商可能无法应用过滤器或以其它方式控制数据平面VCN 1418对任何外部网络或数据库的访问。客户将过滤器和控制应用到包含在客户租赁1421中的数据平面VCN 1418上可以帮助将数据平面VCN 1418与其它客户和公共互联网1454隔离开。
在一些实施例中,云服务1456可以由服务网关1436调用以访问公共互联网1454、控制平面VCN 1416或数据平面VCN 1418上可能不存在的服务。云服务1456与控制平面VCN1416或数据平面VCN 1418之间的连接可以不是实时的或连续的。云服务1456可以存在于由IaaS提供商拥有或操作的不同网络上。云服务1456可以被配置为接收来自服务网关1436的调用并且可以被配置为不接收来自公共互联网1454的调用。一些云服务1456可以与其它云服务1456隔离,并且控制平面VCN 1416可以与可能与控制平面VCN 1416不在同一区域的云服务1456隔离。例如,控制平面VCN 1416可能位于“区域1”,并且云服务“部署13”可能位于区域1和“区域2”。如果包含在位于区域1中的控制平面VCN 1416中的服务网关1436对部署13进行调用,那么该调用可以被传输到区域1中的部署13。在这个示例中,控制平面VCN1416或区域1中的部署13可能不与区域2中的部署13通信地耦合或以其它方式通信。
图15是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1500。服务运营商1502(例如,图13的服务运营商1302)可以通信地耦合到安全主机租赁1504(例如,图13的安全主机租赁1304),该安全主机租赁1504可以包括虚拟云网络(VCN)1506(例如,图13的VCN 1306)和安全主机子网1508(例如,图13的安全主机子网1308)。VCN 1506可以包括LPG 1510(例如,图13的LPG 1310),其可以经由包含在SSH VCN 1512中的LPG 1510通信地耦合到SSH VCN 1512(例如,图13的SSH VCN 1312)。SSH VCN 1512可以包括SSH子网1514(例如,图13的SSH子网1314),并且SSH VCN 1512可以经由包含在控制平面VCN 1516中的LPG 1510通信地耦合到控制平面VCN 1516(例如,图13的控制平面VCN 1316)并且经由包含在数据平面VCN 1518中的LPG 1510耦合到数据平面VCN 1518(例如,图13的数据平面1318)。控制平面VCN 1516和数据平面VCN 1518可以包含在服务租赁1519(例如,图13的服务租赁1319)中。
控制平面VCN 1516可以包括:可以包括(一个或多个)负载平衡器(LB)子网1522(例如,图13的(一个或多个)LB子网1322)的控制平面DMZ层1520(例如,图13的控制平面DMZ层1320)、可以包括(一个或多个)应用子网1526(例如,类似于图13的(一个或多个)应用子网1326)的控制平面应用层1524(例如,图13的控制平面应用层1324)、可以包括(一个或多个)DB子网1530的控制平面数据层1528(例如,图13的控制平面数据层1328)。包含在控制平面DMZ层1520中的(一个或多个)LB子网1522可以通信地耦合到包含在控制平面应用层1524中的(一个或多个)应用子网1526和可以包含在控制平面VCN 1516中的互联网网关1534(例如,图13的互联网网关1334),并且(一个或多个)应用子网1526可以通信地耦合到包含在控制平面数据层1528中的(一个或多个)DB子网1530以及服务网关1536(例如,图13的服务网关)和网络地址转换(NAT)网关1538(例如,图13的NAT网关1338)。控制平面VCN 1516可以包括服务网关1536和NAT网关1538。
数据平面VCN 1518可以包括数据平面应用层1546(例如,图13的数据平面应用层1346)、数据平面DMZ层1548(例如,图13的数据平面DMZ层1348),以及数据平面数据层1550(例如,图13的数据平面数据层1350)。数据平面DMZ层1548可以包括可以通信地耦合到数据平面应用层1546的(一个或多个)可信应用子网1560和(一个或多个)不可信应用子网1562以及包含在数据平面VCN 1518中的互联网网关1534的(一个或多个)LB子网1522。(一个或多个)可信应用子网1560可以通信地耦合到包含在数据平面VCN 1518中的服务网关1536、包含在数据平面VCN 1518中的NAT网关1538以及包含在数据平面数据层1550中的(一个或多个)DB子网1530。(一个或多个)不可信应用子网1562可以通信地耦合到包含在数据平面VCN 1518中的服务网关1536和包含在数据平面数据层1550中的(一个或多个)DB子网1530。数据平面数据层1550可以包括可以通信地耦合到包含在数据平面VCN 1518中的服务网关1536的(一个或多个)DB子网1530。
(一个或多个)不可信应用子网1562可以包括可以通信地耦合到租户虚拟机(VM)1566(1)-(N)的一个或多个主VNIC 1564(1)-(N)。每个租户VM 1566(1)-(N)可以通信地耦合到可以包含在相应容器出口VCN 1568(1)-(N)中的相应应用子网1567(1)-(N),相应容器出口VCN 1568(1)-(N)可以包含在相应客户租赁1570(1)-(N)中。相应的辅助VNIC 1572(1)-(N)可以促进数据平面VCN 1518中包含的(一个或多个)不可信应用子网1562与容器出口VCN 1568(1)-(N)中包含的应用子网之间的通信。每个容器出口VCN 1568(1)-(N)可以包括NAT网关1538,该NAT网关1538可以通信地耦合到公共互联网1554(例如,图13的公共互联网1354)。
包含在控制平面VCN 1516中并且包含在数据平面VCN 1518中的互联网网关1534可以通信地耦合到元数据管理服务1552(例如,图13的元数据管理系统1352),该元数据管理服务1552可以通信地耦合到公共互联网1554。公共互联网1554可以通信地耦合到包含在控制平面VCN 1516中并且包含在数据平面VCN 1518中的NAT网关1538。包含在控制平面VCN1516中和包含在数据平面VCN 1518中的服务网关1536可以通信地耦合到云服务1556。
在一些实施例中,数据平面VCN 1518可以与客户租赁1570集成。在一些情况下,诸如在执行代码时可能期望支持的情况下,这种集成对于IaaS提供商的客户可能是有用的或期望的。客户可能提供可能具有破坏性、可能与其它客户资源通信或可能以其它方式导致非期望效果的代码来运行。作为对此的响应,IaaS提供商可以确定是否运行由客户给与IaaS提供商的代码。
在一些示例中,IaaS提供商的客户可以向IaaS提供商授予临时网络访问,并请求附加到数据平面层应用1546的功能。运行该功能的代码可以在VM 1566(1)-(N)中执行,并且该代码可以不被配置为在数据平面VCN 1518上的其它任何地方运行。每个VM 1566(1)-(N)可以连接到一个客户租赁1570。包含在VM 1566(1)-(N)中的相应容器1571(1)-(N)可以被配置为运行代码。在这种情况下,可以存在双重隔离(例如,容器1571(1)-(N)运行代码,其中容器1571(1)-(N)可能至少包含在(一个或多个)不可信应用子网1562中包含的VM1566(1)-(N)中),这可以帮助防止不正确的或以其它方式非期望的代码损坏IaaS提供商的网络或损坏不同客户的网络。容器1571(1)-(N)可以通信地耦合到客户租赁1570并且可以被配置为传输或接收来自客户租赁1570的数据。容器1571(1)-(N)可以不被配置为从数据平面VCN 1518中的任何其它实体传输或接收数据。在运行代码完成后,IaaS提供商可以终止或以其它方式处置容器1571(1)-(N)。
在一些实施例中,(一个或多个)可信应用子网1560可以运行可以由IaaS提供商拥有或操作的代码。在这个实施例中,(一个或多个)可信应用子网1560可以通信地耦合到(一个或多个)DB子网1530并且被配置为在(一个或多个)DB子网1530中执行CRUD操作。(一个或多个)不可信应用子网1562可以通信地耦合到(一个或多个)DB子网1530,但是在这个实施例中,(一个或多个)不可信应用子网可以被配置为在(一个或多个)DB子网1530中执行读取操作。可以包含在每个客户的VM 1566(1)-(N)中并且可以运行来自客户的代码的容器1571(1)-(N)可以不与(一个或多个)DB子网1530通信地耦合。
在其它实施例中,控制平面VCN 1516和数据平面VCN 1518可以不直接通信地耦合。在这个实施例中,控制平面VCN 1516和数据平面VCN 1518之间可能没有直接通信。但是,通信可以通过至少一种方法间接发生。LPG 1510可以由IaaS提供商建立,其可以促进控制平面VCN 1516和数据平面VCN 1518之间的通信。在另一个示例中,控制平面VCN 1516或数据平面VCN 1518可以经由服务网关1536调用云服务1556。例如,从控制平面VCN 1516对云服务1556的调用可以包括对可以与数据平面VCN 1518通信的服务的请求。
图16是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1600。服务运营商1602(例如,图13的服务运营商1302)可以通信地耦合到安全主机租赁1604(例如,图13的安全主机租赁1304),该安全主机租赁1604可以包括虚拟云网络(VCN)1606(例如,图13的VCN 1306)和安全主机子网1608(例如,图13的安全主机子网1308)。VCN 1606可以包括LPG 1610(例如,图13的LPG 1310),该LPG 1610可以经由包含在SSH VCN 1612(例如,图13的SSH VCN 1312)中的LPG 1610通信地耦合到SSH VCN 1612。SSH VCN 1612可以包括SSH子网1614(例如,图13的SSH子网1314),并且SSH VCN 1612可以经由包含在控制平面VCN 1616中的LPG 1610通信地耦合到控制平面VCN 1616(例如,图13的控制平面VCN 1316)并且经由包含在数据平面VCN 1618中的LPG 1610耦合到数据平面VCN 1618(例如,图13的数据平面1318)。控制平面VCN 1616和数据平面VCN 1618可以包含在服务租赁1619(例如,图13的服务租赁1319)中。
控制平面VCN 1616可以包括:可以包括(一个或多个)LB子网1622(例如,图13的(一个或多个)LB子网1322)的控制平面DMZ层1620(例如,图13的控制平面DMZ层1320)、可以包括(一个或多个)应用子网1626(例如,图13的(一个或多个)应用子网1326)的控制平面应用层1624(例如,图13的控制平面应用层1324)、可以包括(一个或多个)DB子网1630(例如,图15的(一个或多个)DB子网1530)的控制平面数据层1628(例如,图13的控制平面数据层1328)。包含在控制平面DMZ层1620中的(一个或多个)LB子网1622可以通信地耦合到包含在控制平面应用层1624中的(一个或多个)应用子网1626和可以包含在控制平面VCN 1616中的互联网网关1634(例如,图13的互联网网关1334),并且(一个或多个)应用子网1626可以通信地耦合到包含在控制平面数据层1628中的(一个或多个)DB子网1630以及服务网关1636(例如,图13的服务网关)和网络地址转换(NAT)网关1638(例如,图13的NAT网关1338)。控制平面VCN 1616可以包括服务网关1636和NAT网关1638。
数据平面VCN 1618可以包括数据平面应用层1646(例如,图13的数据平面应用层1346)、数据平面DMZ层1648(例如,图13的数据平面DMZ层1348)),以及数据平面数据层1650(例如,图13的数据平面数据层1350)。数据平面DMZ层1648可以包括可以通信地耦合到数据平面应用层1646的(一个或多个)可信应用子网1660(例如,图15的(一个或多个)可信应用子网1560)和(一个或多个)不可信应用子网1662(例如,图15的(一个或多个)不可信应用子网1562)以及包含在数据平面VCN 1618中的互联网网关1634的(一个或多个)LB子网1622。(一个或多个)可信应用子网1660可以通信地耦合到包含在数据平面VCN 1618中的服务网关1636、包含在数据平面VCN 1618中的NAT网关1638以及包含在数据平面数据层1650中的(一个或多个)DB子网1630。(一个或多个)不可信应用子网1662可以通信地耦合到包含在数据平面VCN 1618中的服务网关1636和包含在数据平面数据层1650中的(一个或多个)DB子网1630。数据平面数据层1650可以包括可以通信地耦合到包含在数据平面VCN 1618中的服务网关1636的(一个或多个)DB子网1630。
(一个或多个)不可信应用子网1662可以包括可以通信地耦合到驻留在(一个或多个)不可信应用子网1662内的租户虚拟机(VM)1666(1)-(N)的主VNIC 1664(1)-(N)。每个租户VM 1666(1)-(N)可以在相应的容器1667(1)-(N)中运行代码,并且可通信地耦合到可以包含在容器出口VCN 1668中包含的数据平面应用层1646中的应用子网1626。相应的辅助VNIC 1672(1)-(N)可以促进包含在数据平面VCN 1618中的(一个或多个)不可信应用子网1662和包含在容器出口VCN 1668中的应用子网之间的通信。容器出口VCN可以包括可以通信地耦合到公共互联网1654(例如,图13的公共互联网1354)的NAT网关1638。
包含在控制平面VCN 1616中和包含在数据平面VCN 1618中的互联网网关1634可以通信地耦合到元数据管理服务1652(例如,图13的元数据管理系统1352),该元数据管理服务1652可以通信地耦合到公共互联网1654。公共互联网1654可以通信地耦合到包含在控制平面VCN 1616中并且包含在数据平面VCN 1618中的NAT网关1638。包含在控制平面VCN1616中并且包含在数据平面VCN 1618中的服务网关1636可以通信地耦合到云服务1656。
在一些示例中,图16的框图1600的体系架构所示的模式可以被认为是图15的框图1500的体系架构所示的模式的例外,并且如果IaaS提供商不能直接与客户通信(例如,断开连接的区域),那么这种模式可能是IaaS提供商的客户所期望的。客户可以实时访问每个客户的VM 1666(1)-(N)中包含的相应容器1667(1)-(N)。容器1667(1)-(N)可以被配置为对包含在数据平面应用层1646的(一个或多个)应用子网1626中的相应辅助VNIC 1672(1)-(N)进行调用,该数据平面应用层1646可以包含在容器出口VCN 1668中。辅助VNIC 1672(1)-(N)可以将调用传输到NAT网关1638,NAT网关1638可以将调用传输到公共互联网1654。在这个示例中,可以由客户实时访问的容器1667(1)-(N)可以与控制平面VCN 1616隔离,并且可以与数据平面VCN 1618中包含的其它实体隔离。容器1667(1)-(N)也可以与来自其它客户的资源隔离。
在其它示例中,客户可以使用容器1667(1)-(N)来调用云服务1656。在这个示例中,客户可以运行容器1667(1)-(N)中从云服务1656请求服务的代码。容器1667(1)-(N)可以将该请求传输到辅助VNIC 1672(1)-(N),辅助VNIC 1672(1)-(N)可以将请求传输到NAT网关,该NAT网关可以将请求传输到公共互联网1654。公共互联网1654可以经由互联网网关1634将请求传输到包含在控制平面VCN 1616中的(一个或多个)LB子网1622。响应于确定请求有效,(一个或多个)LB子网可以将请求传输到(一个或多个)应用子网1626,该(一个或多个)应用子网1626可以经由服务网关1636将请求传输到云服务1656。
应当认识到的是,各图中描绘的IaaS体系架构1300、1400、1500、1600可以具有除所描绘的那些之外的其它组件。另外,各图中所示的实施例仅仅是可以结合本公开的实施例的云基础设施系统的一些示例。在一些其它实施例中,IaaS系统可以具有比各图中所示更多或更少的组件、可以组合两个或更多个组件,或者可以具有不同的配置或组件布置。
在某些实施例中,本文描述的IaaS系统可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式交付给客户的应用套件、中间件和数据库服务产品。此类IaaS系统的示例是本受让人提供的Oracle云基础设施(OCI)。
图17图示了其中可以实现各种实施例的示例计算机系统1700。系统1700可以用于实现上述任何计算机系统。如图所示,计算机系统1700包括经由总线子系统1702与多个外围子系统通信的处理单元1704。这些外围子系统可以包括处理加速单元1706、I/O子系统1708、存储子系统1718和通信子系统1724。存储子系统1718包括有形计算机可读存储介质1722和系统存储器1710。
总线子系统1702提供用于让计算机系统1700的各种部件和子系统按意图彼此通信的机制。虽然总线子系统1702被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统1702可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围部件互连(PCI)总线,其可以被实现为按IEEE P1386.1标准制造的Mezzanine总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元1704控制计算机系统1700的操作。一个或多个处理器可以被包括在处理单元1704中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元1704可以被实现为一个或多个独立的处理单元1732和/或1734,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元1704也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例中,处理单元1704可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器1704中和/或存储子系统1718中。通过适当的编程,(一个或多个)处理器1704可以提供上述各种功能。计算机系统1700可以附加地包括处理加速单元1706,其可以包括数字信号处理器(DSP)、专用处理器,等等。
I/O子系统1708可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或手势识别设备,诸如的Microsoft运动传感器,其使得用户能够使用手势和语音命令通过自然用户接口来控制诸如的Microsoft/>360游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为到输入设备(例如,Google/>)中的输入的Google/>眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,/>导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括但不限于三维(3D)鼠标、操纵杆或指向棒、游戏面板和绘图板,以及音频/视频设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括,例如,医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括,例如,诸如MIDI键盘、数字乐器等的音频输入设备。
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器,等等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏,等等。一般而言,术语“输出设备”的使用意在包括用于从计算机系统1700向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括,但不限于,可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备,以及调制解调器。
计算机系统1700可以包括包含软件元件、被示为当前位于系统存储器1710中的存储子系统1718。系统存储器1710可以存储可加载并且可在处理单元1704上执行的程序指令,以及在这些程序的执行期间所产生的数据。
取决于计算机系统1700的配置和类型,系统存储器1710可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常包含可被处理单元1704立即访问和/或目前正被处理单元1704操作和执行的数据和/或程序模块。在一些实现中,系统存储器1710可以包括多种不同类型的存储器,例如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实现中,诸如包含有助于在启动期间在计算机系统1700的元件之间传送信息的基本例程的基本输入/输出系统(BIOS),通常可以被存储在ROM中。作为示例,但不是限制,系统存储器1710也示出了可以包括客户端应用、web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序1712,程序数据1714,以及操作系统1716。作为示例,操作系统1716可以包括各种版本的MicrosoftApple/>和/或Linux操作系统、各种可商业获得的/>或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google/>操作系统等)和/或诸如iOS、/>Phone、/>OS、/>17OS和/>OS操作系统的移动操作系统。
存储子系统1718也可以提供用于存储提供一些实施例的功能的基本编程和数据结构的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统1718中。这些软件模块或指令可以被处理单元1704执行。存储子系统1718也可以提供用于存储根据本公开被使用的数据的储存库。
存储子系统1700也可以包括可被进一步连接到计算机可读存储介质1722的计算机可读存储介质读取器1720。与系统存储器1710一起并且,可选地,与其相结合,计算机可读存储介质1722可以全面地表示用于临时和/或更持久地包含、存储、发送和检索计算机可读信息的远程、本地、固定和/或可移除存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质1722也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于,以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学储存器、磁带盒、磁带、磁盘储存器或其它磁存储设备,或者其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输,或者可以被用来发送期望信息并且可以被计算系统1700访问的任何其它介质。
作为示例,计算机可读存储介质1722可以包括从不可移除的非易失性磁介质读取或写到其的硬盘驱动器、从可移除的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移除的非易失性光盘(诸如CD ROM、DVD和盘或其它光学介质)读取或写到其的光盘驱动器。计算机可读存储介质1722可以包括,但不限于,/>驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带,等等。计算机可读存储介质1722也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM)、基于DRAM的SSD,磁阻RAM(MRAM)SSD,以及使用基于DRAM和闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统1700提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
通信子系统1724提供到其它计算机系统和网络的接口。通信子系统1724用作用于从其它系统接收数据和从计算机系统1700向其它系统发送数据的接口。例如,通信子系统1724可以使计算机系统1700能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统1724可以包括用于访问无线语音和/或数据网络的射频(RF)收发器部件(例如,使用蜂窝电话技术,诸如3G、4G或EDGE(用于全球演进的增强型数据速率)的先进数据网络技术,WiFi(IEEE 802.11系列标准),或其它移动通信技术,或其任意组合)、全球定位系统(GPS)接收器部件和/或其它部件。在一些实施例中,作为无线接口的附加或者替代,通信子系统1724可以提供有线网络连接(例如,以太网)。
在一些实施例中,通信子系统1724也可以代表可以使用计算机系统1700的一个或多个用户接收结构化和/或非结构化数据馈送1726、事件流1728、事件更新1730等形式的输入通信。
举例来说,通信子系统1724可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送1726,诸如馈送、/>更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统1724也可被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流1728和/或事件更新1730。产生连续数据的应用的示例可以包括,例如,传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视,等等。
通信子系统1724也可被配置为向一个或多个数据库输出结构化和/或非结构化数据馈送1726、事件流1728、事件更新1730,等等,这一个或多个数据库可以与耦合到计算机系统1700的一个或多个流式数据源计算机通信。
计算机系统1700可以是各种类型之一,包括手持便携式设备(例如,蜂窝电话、/>计算平板电脑、PDA)、可穿戴设备(例如,/>Glass头戴式显示器)、PC、工作站、大型机、信息站、服务器机架、或任何其它数据处理系统。
由于计算机和网络的不断变化的本质,在图中绘出的计算机系统1700的描述仅仅要作为具体的示例。具有比图中绘出的系统更多或更少部件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元件可以用硬件、固件、软件(包括applets)或其组合来实现。另外,也可以采用到诸如网络输入/输出设备之类的其它计算设备的连接。基于本文提供的公开内容和示教,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
可以根据以下条款来描述本公开的示例实施例。
条款1.一种计算机实现的方法可以包括以下各项中的一项或多项:1)由云计算环境的计算设备识别已经部署在云计算环境内的计算组件的第一集合,2)由计算设备识别可用于在云计算环境内部署的计算组件的第二集合,3)由计算设备接收部署请求,该部署请求识别计算组件的第二集合中可用于部署的特定计算组件,4)由计算设备向云计算环境的部署编排器传输与所请求的特定计算组件对应的引导请求,部署编排器被配置为至少部分地基于引导请求将特定计算组件部署到云计算环境,和/或5)由计算设备呈现用户界面,该用户界面呈现针对已经部署在云计算环境内的计算组件的第一集合的状态指示符的第一集合和与特定计算组件对应的状态指示符。
条款2.条款1的计算机实现的方法还可以包括以下各项中的一项或多项:1)由计算设备识别特定计算组件被成功部署,2)由计算设备将与该特定计算组件相关联的标识符添加到路由表,3)由计算设备接收包括标识符的后续请求(例如,图9的用户设备906),和/或4)由计算设备向特定计算组件传输后续请求以供处理。
条款3.条款1或2中的任一项的计算机实现的方法,其中传输引导请求可以使部署编排器执行包括以下各项中的一项或多项的操作:1)由计算设备识别特定计算组件所依赖的一个或多个计算组件,和/或2)由计算设备在部署特定计算组件之前部署所述一个或多个计算组件。
条款4.条款3的计算机实现的方法,其中识别特定计算组件所依赖的一个或多个计算组件可以至少部分地基于从定义计算组件依赖性的有向无环图确定所述一个或多个计算组件。
条款5.条款3的计算机实现的方法,其中该方法还可以包括以下各项中的一项或多项:1)由计算设备在用户界面处呈现识别所请求的特定计算组件所依赖的一个或多个计算组件的信息,2)在用户界面处接收指示在部署特定计算组件之前接受部署所述一个或多个计算组件的用户输入,和/或3)由计算设备向部署编排器传输与所述一个或多个计算组件对应的相应引导请求,其中在传输与所请求的特定计算组件对应的引导请求之前传输相应的引导请求。
条款6.条款1-5中的任一项的计算机实现的方法,其中该方法还可以包括由计算设备向部署编排器传输与特定计算组件对应的停转请求,该停转请求响应于以下条件而被传输:1)由计算设备(例如,从图9的用户设备906)接收到使特定计算组件停转的后续请求,或者2)由计算设备识别出接收到对特定计算组件的上次请求的上次时间并确定该上次时间与当前时间之间的差超过预定义的阈值时间段。
条款7.条款6的计算机实现的方法,其中传输停转请求还至少部分地基于确定没有云计算环境的其它组件依赖于特定计算组件。
条款8.一种云计算环境的计算设备可以包括一个或多个处理器以及存储计算机可执行指令的一个或多个存储器,计算机可执行指令在由一个或多个处理器执行时使计算设备执行以下操作中的一项或多项:1)识别已经部署在云计算环境内的计算组件的第一集合,2)识别可用于在云计算环境内部署的计算组件的第二集合,3)接收部署请求,该部署请求识别计算组件的第二集合中可用于部署的特定计算组件,4)向云计算环境的部署编排器传输与所请求的特定计算组件对应的引导请求,部署编排器被配置为至少部分地基于引导请求将特定计算组件部署到云计算环境,和/或5)呈现用户界面,该用户界面呈现针对已经部署在云计算环境内的计算组件的第一集合的状态指示符的第一集合和与特定计算组件对应的状态指示符。
条款9.条款8的计算设备,其中执行指令还可以使计算设备执行附加操作,包括以下各项中的一项或多项:1)识别特定计算组件被成功部署,2)将与该特定计算组件相关联的标识符添加到路由表,3)接收包括标识符的后续请求,和/或4)向特定计算组件传输后续请求以供处理。
条款10.条款8或9的计算设备,其中传输引导请求使部署编排器执行包括识别特定计算组件所依赖的一个或多个计算组件以及在部署特定计算组件之前部署所述一个或多个计算组件的操作。
条款11.条款10的计算设备,其中识别特定计算组件所依赖的一个或多个计算组件至少部分地基于从定义计算组件依赖性的有向无环图确定所述一个或多个计算组件。
条款12.条款8-11中的任一项的计算设备,其中执行指令还使得计算设备执行附加操作,包括以下各项中的一项或多项:1)在用户界面处呈现识别所请求的特定计算组件所依赖的一个或多个计算组件的信息,2)在用户界面处接收指示在部署特定计算组件之前接受部署所述一个或多个计算组件的用户输入,和/或3)向部署编排器传输与所述一个或多个计算组件对应的相应引导请求,其中在传输与所请求的特定计算组件对应的引导请求之前传输相应的引导请求。
条款13.条款8-12中的任一项的计算设备,其中执行指令还使得计算设备执行附加操作,向部署编排器传输与特定计算组件对应的停转请求,该停转请求响应于以下条件而被传输:1)接收到使特定计算组件停转的后续请求,或者2)识别出接收到对特定计算组件的上次请求的上次时间并确定该上次时间与当前时间之间的差超过预定义的阈值时间段。
条款14.条款13的计算设备,其中传输停转请求还至少部分地基于确定没有云计算环境的其它组件依赖于特定计算组件。
条款15.一种非暂态计算机可读存储介质可以存储计算机可执行指令,计算机可执行指令在由计算设备的一个或多个处理器执行时使计算设备执行以下各项中的一项或多项:1)识别已经部署在云计算环境内的计算组件的第一集合,2)识别可用于在云计算环境内部署的计算组件的第二集合,3)接收部署请求,该部署请求识别计算组件的第二集合中可用于部署的特定计算组件,4)向云计算环境的部署编排器传输与所请求的特定计算组件对应的引导请求,部署编排器被配置为至少部分地基于引导请求将特定计算组件部署到云计算环境,和/或5)呈现用户界面,该用户界面呈现针对已经部署在云计算环境内的计算组件的第一集合的状态指示符的第一集合和与特定计算组件对应的状态指示符。
条款16.条款15的非暂态计算机可读存储介质,其中执行指令还使计算设备执行以下各项中的一项或多项:1)识别特定计算组件被成功部署,2)将与该特定计算组件相关联的标识符添加到路由表,3)接收包括标识符的后续请求,和/或4)向特定计算组件传输后续请求以供处理。
条款17.条款15或16的非暂态计算机可读存储介质,其中传输引导请求使部署编排器执行包括识别特定计算组件所依赖的一个或多个计算组件以及在部署特定计算组件之前部署所述一个或多个计算组件的操作。
条款18.条款17的非暂态计算机可读存储介质,其中识别特定计算组件所依赖的一个或多个计算组件至少部分地基于从定义计算组件依赖性的有向无环图确定所述一个或多个计算组件。
条款19.条款15-18条中的任一项的非暂态计算机可读存储介质,其中执行指令还使得计算设备执行以下各项中的一项或多项:1)在用户界面处呈现识别所请求的特定计算组件所依赖的一个或多个计算组件的信息,2)在用户界面处接收指示在部署特定计算组件之前接受部署所述一个或多个计算组件的用户输入,和/或3)向部署编排器传输与所述一个或多个计算组件对应的相应引导请求,其中在传输与所请求的特定计算组件对应的引导请求之前传输相应的引导请求。
条款20.条款15-19中的任一项的非暂态计算机可读存储介质,其中执行指令还使得计算设备向部署编排器传输与特定计算组件对应的停转请求,该停转请求响应于以下条件而被传输:1)接收到使特定计算组件停转的后续请求,或者2)识别出接收到对特定计算组件的上次请求的上次时间并确定该上次时间与当前时间之间的差超过预定义的阈值时间段。
虽然已经描述了具体实施例,但是各种修改、变更、替代构造和等效形式也包含在本公开的范围内。实施例不限于在某些特定数据处理环境内操作,而是可以在多个数据处理环境内自由操作。此外,虽然已经使用特定系列的事务和步骤描述了实施例,但是本领域技术人员应该清楚本公开的范围不限于所描述系列的事务和步骤。上述实施例的各种特征和方面可以单独或联合使用。
另外,虽然已经使用硬件和软件的特定组合描述了实施例,但是应当认识到硬件和软件的其它组合也在本公开的范围内。实施例可以仅用硬件、或仅用软件、或使用它们的组合来实现。本文描述的各种处理可以以任何组合在相同的处理器或在不同的处理器上实现。相应地,在组件或模块被描述为被配置为执行某些操作的情况下,可以通过例如设计电子电路来执行操作、通过对可编程电子电路(诸如微处理器)进行编程来执行操作,或其任何组合来完成这样的配置。处理可以使用多种技术进行通信,包括但不限于用于处理间通信的常规技术,并且不同的处理对可以使用不同的技术,或者同一对处理可以在不同时间使用不同的技术。
相应地,说明书和附图被认为是说明性的而不是限制性的。但是,显然可以对其进行添加、减少、删除和其它修改和改变而不背离权利要求中阐述的更广泛的精神和范围。因此,虽然已经描述了具体的公开实施例,但这些并不旨在进行限制。各种修改和等效形式都在以下权利要求的范围内。
在描述所公开的实施例的上下文中(尤其在以下权利要求的上下文中)使用术语“一”和“一个”和“该”以及类似的指称要被解释为涵盖单数和复数,除非本文另有指示或与上下文明显矛盾。除非另有说明,否则术语“包括”、“具有”、“包含(including)”和“包含(containing)”要被解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”应被解释为部分或全部包含在、附加到或连接在一起,即使中间存在一些东西。除非本文另有指示,否则本文中值范围的列举仅旨在用作个别引用落入该范围内的每个单独值的速记方法,并且每个单独值被并入说明书中,就好像它在本文中个别列举一样。除非本文另有指示或与上下文明显矛盾,否则本文所述的所有方法都可以以任何合适的顺序执行。本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明实施例并且不对本公开的范围构成限制,除非另有声明。说明书中的任何语言都不应被解释为指示任何未要求保护的元件对于本公开的实践是必不可少的。
析取语言,诸如短语“X、Y或Z中的至少一个”,除非另有明确说明,否则旨在在一般用于表示项目、术语等的上下文中理解,可以是X、Y或Z,或它们的任何组合(例如,X、Y和/或Z)。因此,这种析取语言通常不旨在也不应暗示某些实施例需要X中的至少一个、Y中的至少一个或Z中的至少一个各自存在。
本文描述了本公开的优选实施例,包括已知用于实施本公开的最佳模式。那些优选实施例的变型对于本领域普通技术人员在阅读上述描述后会变得显而易见。普通技术人员应该能够适当地采用这样的变型并且可以以不同于本文具体描述的方式来实践本公开。相应地,本公开包括在适用法律允许的情况下对所附权利要求中记载的主题的所有修改和等效形式。此外,除非在本文中另有指示,否则本公开包括在其所有可能的变化中的上述元件的任何组合。
本文引用的所有参考文献,包括出版物、专利申请和专利,均以相同的程度通过引用并入本文,就好像每个参考文献个别且具体地指示通过引用并入并在本文中全文阐述一样。
在前述的说明书中,本公开的各方面参考其具体实施例进行了描述,但本领域技术人员将认识到的是,本公开不限于此。上述公开的各个特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的那些之外的任何数量的环境和应用中被使用。相应地,本说明书和附图应当被认为是说明性而不是限制性的。因此,虽然已经描述了具体的公开实施例,但是这些实施例并不旨在进行限制。各种修改和等同形式都在以下权利要求的范围内。
Claims (22)
1.一种计算机实现的方法,包括:
由云计算环境的计算设备接收包括云计算环境的计算组件的标识符的请求;
由计算设备确定所述标识符是否存在于计算设备可访问的路由表中;
根据所述标识符存在于路由表中,由计算设备将请求转发到所述计算组件;
根据在路由表中缺少所述标识符:
由计算设备响应于请求而传输错误代码,该错误代码指示所述计算组件不可用;以及
由计算设备向云计算环境的部署编排器传输与所述计算组件对应的引导请求,部署编排器被配置为至少部分地基于引导请求将所述计算组件部署到云计算环境;
由计算设备接收包括标识符的后续请求;以及
由计算设备将后续请求传输到所述计算组件以供处理。
2.如权利要求1所述的计算机实现的方法,还包括根据在路由表中缺少所述标识符:
由计算设备呈现所述计算组件被成功部署的指示;以及
由计算设备用所述标识符更新路由表。
3.如权利要求1或2所述的计算机实现的方法,其中部署编排器被配置为识别所述计算组件所依赖的一个或多个计算组件,并且在部署所述计算组件之前部署所述一个或多个计算组件。
4.如权利要求1至3中的任一项所述的计算机实现的方法,还包括:
由计算设备至少部分地基于定时器确定所述计算组件在至少预定义的时间段内未被调用,该定时器与所述计算组件对应,该定时器已被设置为预定义的时间段;以及
由计算设备向云计算环境的部署编排器传输与所述计算组件对应的停转请求,由此传输停转请求使得部署编排器将所述计算组件从云计算环境移除。
5.如权利要求4所述的计算机实现的方法,其中传输停转请求还至少部分地基于由计算设备确定没有云计算环境的其它组件依赖于所述所述计算组件。
6.如权利要求4或5所述的计算机实现的方法,还包括在传输停转请求之前请求并接收指示批准继续进行停转请求的用户输入。
7.如权利要求1至6中的任一项所述的计算机实现的方法,还包括:
由计算设备向部署编排器传输与所述计算组件对应的停转请求,该停转请求响应于以下条件而被传输:1)接收到使所述计算组件停转的后续请求,或者2)识别出接收到对所述计算组件的上次请求的上次时间并确定该上次时间与当前时间之间的差超过预定义的阈值时间段。
8.一种云计算环境的计算设备,包括
一个或多个处理器;以及
存储计算机可执行指令的一个或多个存储器,计算机可执行指令在由所述一个或多个处理器执行时使计算设备:
接收包括云计算环境的计算组件的标识符的请求;
确定所述标识符是否存在于计算设备可访问的路由表中;
根据所述标识符存在于路由表中,将请求转发到所述计算组件;
根据在路由表中缺少所述标识符:
响应于请求而传输错误代码,该错误代码指示所述计算组件不可用;以及
向云计算环境的部署编排器传输与所述计算组件对应的引导请求,部署编排器被配置为至少部分地基于引导请求将所述计算组件部署到云计算环境;
接收包括标识符的后续请求;以及
将后续请求传输到所述计算组件以供处理。
9.如权利要求8所述的计算设备,其中执行指令还使得计算设备根据在路由表中缺少所述标识符:
呈现所述计算组件被成功部署的指示;以及
用标识符更新路由表。
10.如权利要求8或9所述的计算设备,其中部署编排器被配置为识别所述计算组件所依赖的一个或多个计算组件,并且在部署所述计算组件之前部署所述一个或多个计算组件。
11.如权利要求8所述的计算设备,其中执行指令还使得计算设备:
至少部分地基于定时器确定所述计算组件在至少预定义的时间段内未被调用,该定时器与所述计算组件对应,该定时器已被设置为预定义的时间段;以及
由计算设备向云计算环境的部署编排器传输与所述计算组件对应的停转请求,由此传输停转请求使得部署编排器将所述计算组件从云计算环境移除。
12.如权利要求11所述的计算设备,其中传输停转请求还至少部分地基于备确定没有云计算环境的其它组件依赖于所述计算组件。
13.如权利要求11或12所述的计算设备,其中执行指令还使得计算设备在传输停转请求之前请求指示批准继续进行停转请求的用户输入。
14.如权利要求8所述的计算设备,其中执行指令还使得计算设备:
向部署编排器传输与所述计算组件对应的停转请求,该停转请求响应于以下条件而被传输:1)接收到使所述计算组件停转的后续请求,或者2)识别出接收到对所述计算组件的上次请求的上次时间并确定该上次时间与当前时间之间的差超过预定义的阈值时间段。
15.一种包括计算机可执行指令的非暂态计算机可读存储介质,计算机可执行指令在由计算设备的一个或多个处理器执行时使云计算环境的计算设备:
接收包括云计算环境的计算组件的标识符的请求;
确定所述标识符是否存在于计算设备可访问的路由表中;
根据所述标识符存在于路由表中,将请求转发到所述计算组件;
根据在路由表中缺少所述标识符:
响应于请求而传输错误代码,该错误代码指示所述计算组件不可用;以及
向云计算环境的部署编排器传输与所述计算组件对应的引导请求,部署编排器被配置为至少部分地基于引导请求将所述计算组件部署到云计算环境;
接收包括标识符的后续请求;以及
将后续请求传输到所述计算组件以供处理。
16.如权利要求15所述的非暂态计算机可读存储介质,其中执行指令还使得计算设备根据在路由表中缺少所述标识符:
呈现所述计算组件被成功部署的指示;以及
用标识符更新路由表。
17.如权利要求15或16所述的非暂态计算机可读存储介质,其中部署编排器被配置为识别所述计算组件所依赖的一个或多个计算组件,并且在部署所述计算组件之前部署所述一个或多个计算组件。
18.如权利要求15所述的非暂态计算机可读存储介质,其中执行指令还使得计算设备:
至少部分地基于定时器确定所述计算组件在至少预定义的时间段内未被调用,该定时器与所述计算组件对应,该定时器已被设置为预定义的时间段;以及
由计算设备向云计算环境的部署编排器传输与所述计算组件对应的停转请求,由此传输停转请求使得部署编排器将所述计算组件从云计算环境移除。
19.如权利要求18所述的非暂态计算机可读存储介质,其中传输停转请求还至少部分地基于确定没有云计算环境的其它组件依赖于所述所述计算组件。
20.如权利要求15所述的非暂态计算机可读存储介质,其中执行指令还使得计算设备:
向部署编排器传输与所述计算组件对应的停转请求,该停转请求响应于以下条件而被传输:1)接收到使所述计算组件停转的后续请求,或者2)识别出接收到对所述计算组件的上次请求的上次时间并确定该上次时间与当前时间之间的差超过预定义的阈值时间段。
21.一种用于提供云服务的装置,包括用于执行如权利要求1-7中的任一项所述的方法的步骤的部件。
22.一种包括计算机指令的计算机程序产品,计算机指令在由处理器执行时实现如权利要求1-7中的任一项所述的方法的步骤。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/494,495 | 2021-10-05 | ||
US17/494,533 | 2021-10-05 | ||
US17/494,533 US11861373B2 (en) | 2021-10-05 | 2021-10-05 | Techniques for providing cloud services on demand |
PCT/US2022/023715 WO2023059369A1 (en) | 2021-10-05 | 2022-04-06 | Techniques for providing cloud services on demand |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118056184A true CN118056184A (zh) | 2024-05-17 |
Family
ID=81597923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280067232.1A Pending CN118056184A (zh) | 2021-10-05 | 2022-04-06 | 按需提供云服务的技术 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11861373B2 (zh) |
CN (1) | CN118056184A (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9667470B2 (en) | 2012-09-07 | 2017-05-30 | Oracle International Corporation | Failure handling in the execution flow of provisioning operations in a cloud environment |
US10225164B2 (en) * | 2012-09-07 | 2019-03-05 | Oracle International Corporation | System and method for providing a cloud computing environment |
US20190050213A1 (en) * | 2017-08-11 | 2019-02-14 | Fugue, Inc. | System and method for generating a domain-specific programming language program from a cloud-based computing system |
US11277337B2 (en) * | 2019-06-06 | 2022-03-15 | Cisco Technology, Inc. | Systems and methods for routing network traffic using labels |
US10917358B1 (en) * | 2019-10-31 | 2021-02-09 | Servicenow, Inc. | Cloud service for cross-cloud operations |
EP4094155A1 (en) * | 2020-01-20 | 2022-11-30 | Oracle International Corporation | Techniques for utilizing directed acyclic graphs for deployment instructions |
-
2021
- 2021-10-05 US US17/494,533 patent/US11861373B2/en active Active
-
2022
- 2022-04-06 CN CN202280067232.1A patent/CN118056184A/zh active Pending
-
2023
- 2023-11-15 US US18/510,144 patent/US20240095042A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230108661A1 (en) | 2023-04-06 |
US11861373B2 (en) | 2024-01-02 |
US20240095042A1 (en) | 2024-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693712B2 (en) | Techniques for preventing concurrent execution of declarative infrastructure provisioners | |
US11755337B2 (en) | Techniques for managing dependencies of an orchestration service | |
WO2021150307A1 (en) | Techniques for deploying infrastructure resources with a declarative provisioning tool | |
EP4094155A1 (en) | Techniques for utilizing directed acyclic graphs for deployment instructions | |
US20220114157A1 (en) | Lock management for distributed application pods | |
EP4094208A1 (en) | Techniques for detecting drift in a deployment orchestrator | |
WO2021150366A1 (en) | Updating code in distributed version control system | |
US20230105901A1 (en) | Techniques for providing cloud services on demand | |
CN117897693A (zh) | 不同租赁拥有的计算实例的附接和分离 | |
US11861373B2 (en) | Techniques for providing cloud services on demand | |
WO2023059369A1 (en) | Techniques for providing cloud services on demand |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |