首页> 中国专利> 用于使用声明性供应工具部署基础设施资源的技术

用于使用声明性供应工具部署基础设施资源的技术

摘要

描述了用于实现基础设施编排服务的技术。调度器可以接收用于在执行目标处的资源的第一部署的配置文件,该配置文件可以包括第一发布标识符。资源可以在执行目标处根据文件被部署。资源的当前状态可被存储。调度器可以接收用于在执行目标处的新部署的文件的第二版本,其可以包括第二发布标识符。至少一个工作者节点可以执行插件以将第一标识符与第二标识符进行比较。如果第一标识符与第二标识符不同,则插件可以将资源的当前状态与根据第二标识符的期望状态进行比较。如果期望状态与当前状态不同,则资源在执行目标处根据第二标识符被部署。

著录项

  • 公开/公告号CN114846447A

    专利类型发明专利

  • 公开/公告日2022-08-02

    原文格式PDF

  • 申请/专利权人 甲骨文国际公司;

    申请/专利号CN202080090471.X

  • 发明设计人 N·M·格拉斯;

    申请日2020-11-25

  • 分类号G06F9/50(2006.01);G06F8/71(2006.01);

  • 代理机构中国贸促会专利商标事务所有限公司 11038;

  • 代理人刘玉洁

  • 地址 美国加利福尼亚

  • 入库时间 2023-06-19 16:12:48

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-03-21

    实质审查的生效 IPC(主分类):G06F 9/50 专利申请号:202080090471X 申请日:20201125

    实质审查的生效

  • 2022-08-02

    公开

    国际专利申请公布

说明书

对相关申请的交叉引用

本申请根据35U.S.C.119(e)要求2020年1月20日提交的题为“TECHNIQUES FORDEPLOYING INFRASTRUCTURE RESOURCES WITH A DECLARATIVE PROVISIONING TOOL”的第62/963,335号美国申请和2020年9月10日提交的题为“TECHNIQUES FOR DEPLOYINGINFRASTRUCTURE RESOURCES WITH A DECLARATIVE PROVISIONING TOOL”的第17/016,754号美国申请的权益和优先权,这些美国申请的内容通过引用整体并入本文以用于所有目的。

背景技术

当今,云基础设施服务利用许多单独的服务来跨云基础设施服务的许多区域(分别)供应和部署代码和配置。这些工具需要大量的手动工作来使用,尤其是考虑到供应云基础设施资源通常是声明性的并且部署这些资源通常是命令性的。附加地,随着服务团队和区域数量的增长,云基础设施服务将需要继续增长。一些云基础设施服务部署到较大数量的较小区域的策略包括每区域的支出,这可能无法良好地扩展。

发明内容

描述了用于实现基础设施编排服务的技术。在一些示例中,方法可以包括调度器,该调度器可以接收用于在执行目标处的资源的第一部署的配置文件,该配置文件可以包括第一发布标识符。资源可以在执行目标处根据文件被部署。资源的当前状态可被存储。调度器可以接收用于在执行目标处的新部署的文件的第二版本,其可以包括第二发布标识符。至少一个工作者节点可以执行插件以将第一标识符与第二标识符进行比较。如果第一标识符与第二标识符不同,则插件可以将资源的当前状态与根据第二标识符的期望状态进行比较。如果期望状态与当前状态不同,则资源在执行目标处根据第二标识符被部署。

在其他示例中,系统可以包括至少一个处理器和至少一个存储器,该至少一个存储器可以存储计算机可执行指令,当计算机可执行指令由处理器执行时,将处理器配置为执行操作。操作可以包括调度器接收用于在执行目标处的资源的第一部署的配置文件,该配置文件可以包括第一发布标识符。资源可以在执行目标处根据配置文件被部署,并且资源的当前状态可被存储。调度器可以接收用于在执行目标处的新部署的配置文件的第二版本,其可以包括第二发布标识符。至少一个工作者节点可以执行插件以将第一发布标识符与第二发布标识符进行比较。如果第一发布标识符与第二发布标识符不同,则插件可用于将资源的当前状态与根据第二配置文件的资源的期望状态进行比较。如果期望状态与当前状态不同,则资源在执行目标处根据配置文件的第二版本被部署。

在另外的示例中,计算机可读存储介质可以存储计算机可执行指令,当计算机可执行指令由至少一个处理器执行时,可以使处理器执行操作。操作可以包括调度器接收用于在执行目标处的资源的第一部署的配置文件,该配置文件可以包括第一发布标识符。资源可以在执行目标处根据配置文件被部署,并且资源的当前状态可被存储。调度器可以接收用于在执行目标处的新部署的配置文件的第二版本,其可以包括第二发布标识符。至少一个工作者节点可以执行插件以将第一发布标识符与第二发布标识符进行比较。如果第一发布标识符与第二发布标识符不同,则插件可用于将资源的当前状态与根据第二配置文件的资源的期望状态进行比较。如果期望状态与当前状态不同,则资源可以在执行目标处根据配置文件的第二版本被部署。

在另外的示例中,装置可以包括用于执行根据本文描述的任何方法的步骤的部件。

附图说明

为了容易地标识对任何特定元素或动作的讨论,附图标记中的一个或多个最高有效数字是指该元素首次被引入的图号。

图1是用于图示根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的架构的框图。

图2是用于图示根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的架构的框图。

图3是用于图示根据至少一个实施例的示例群组(flock)的流程图。

图4是用于图示根据至少一个实施例的示例群组的流程图。

图5是用于图示根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的架构的框图。

图6是用于图示根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的架构的框图。

图7是用于图示根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的代码的图。

图8是用于图示根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的代码的图。

图9是用于图示根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的示例过程的流程图。

图10是用于图示根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的架构的框图。

图11是用于图示根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的示例过程的流程图。

图12是用于图示根据至少一个实施例的分布式系统的框图。

图13是用于图示根据至少一个实施例的系统环境的一个或多个组件的框图,由实施例系统的一个或多个组件提供的服务可以通过该系统环境被提供为云服务。

图14是用于图示其中可以实现本公开的各种实施例的示例计算机系统的框图。

具体实施方式

在一些示例中,基础设施即服务(IaaS)是一种特定类型的云计算。IaaS可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在一些示例中,IaaS是云计算服务的三个主要类别(或子类别)之一。大多数认为其他主要类别是软件即服务(SaaS)和平台即服务(PaaS),并且有时SaaS可能被认为是更广泛的类别,其包含PaaS和IaaS两者,甚至有些认为IaaS也是PaaS的子类别。

在IaaS模型中,云计算提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。

在一些情况下,IaaS提供商还可以提供多种服务来伴随那些基础设施组件(例如,计费、监控、日志记录、安全性、负载平衡和集群等)。因此,由于这些服务可能是策略驱动的,所以IaaS用户可能能够实现策略来驱动负载平衡以维护应用程序的可用性和性能。

在一些情况下,IaaS客户可以通过诸如互联网之类的广域网(WAN)访问资源和服务,并且可以使用云提供商的服务来安装应用程序堆栈的其余元素。例如,用户可以登录IaaS平台以创建虚拟机(VM)、在每个VM上安装操作系统(OS)、部署诸如数据库之类的中间件、为工作负载和备份创建存储桶以及甚至将企业软件安装到该VM。然后,客户可以使用提供商的服务来执行各种功能,包括平衡网络流量、解决应用程序问题、监控性能、管理灾难恢复等。

在大多数情况下,云计算模型将需要云提供商的参与。云提供商可以但不一定是专门提供(例如,供给、出租、销售)IaaS的第三方服务。实体也可以选择部署私有云,从而成为其自己的基础设施服务提供商。

在一些示例中,IaaS部署是将新应用程序或应用程序的新版本放置到准备好的应用服务器等上的过程。它还可能包括准备服务器的过程(例如,安装库、守护进程等)。这通常由云提供商在管理程序层之下(例如,服务器、存储、网络硬件和虚拟化)管理。因此,客户可能负责(例如,在(例如,可以按需启动(spun up)的)自助服务虚拟机上等)处理(OS)、中间件和/或应用程序部署。

在一些示例中,IaaS供应可以指获取计算机或虚拟主机以供使用,以及甚至在它们上安装所需的库或服务。大多数情况下,部署不包括供应,并且供应可能需要先执行。

在一些情况下,对于IaaS供应存在两个不同的问题。首先,存在在任何东西运行之前供应初始基础设施集合的初始挑战。其次,存在一旦一切都已被供应,演进现有基础设施(例如,添加新服务、变更服务、移除服务等)的挑战。在一些情况下,可以通过使得基础设施的配置能够被声明性定义来解决这两个挑战。换句话说,基础设施(例如,什么组件被需要以及它们如何交互)可以由一个或多个配置文件定义。因此,基础设施的整体拓扑结构(例如,什么资源依赖于哪些,以及它们各自如何一起工作)可被声明性地描述。在一些情况下,一旦定义了拓扑,就可以生成创建和/或管理配置文件中描述的不同组件的工作流。与声明性指令(例如,包括关于要做什么的信息,其可能只包括期望的输出)相反,命令性指令包括关于如何做要做的事情的信息(例如,包括关于完成事情所需的步骤、组件以及状态的信息)。

在一些示例中,基础设施可以具有许多互连的元素。例如,可能存在一个或多个虚拟私有云(VPC)(例如,潜在按需的可配置和/或共享计算资源池),也被称为核心网络。在一些示例中,还可以存在被供应以定义网络的安全性将如何被设置的一个或多个安全组规则以及一个或多个虚拟机(VM)。诸如负载平衡器、数据库等之类的其他基础设施元素也可以被供应。随着越来越多的基础设施元素被期望和/或添加,基础设施可以逐渐演进。

如上所述,供应基础设施的一种方式是声明性地描述它。因此,配置文件可以是仅描述上述每个基础设施组件以及它们如何交互的声明性文件。配置文件可以描述创建元素所需的资源和相关字段,然后引用先前描述的元素的其他元素可被描述。在一些示例中,供应工具然后可以生成用于创建和管理配置文件中描述的元素的工作流。

在一些情况下,供应工具的工作流可以被配置为执行各种命令。可被执行的一项功能是视图调和,其中供应工具可以将当前基础设施的视图(例如,基础设施的预期状态)与基础设施实际正如何运行进行比较。在一些情况下,执行视图调和功能可以包括查询各种资源提供者或基础设施资源以识别哪些资源实际正在运行。供应工具可以执行的另一个功能是计划生成,其中供应工具可以将实际运行的基础设施组件与供应工具希望状态看起来像什么(例如,期望的配置)进行比较。换句话说,计划生成功能可以确定需要做出哪些变更来使资源达到最新的预期。在一些情况下,第三功能是执行(例如,应用)功能,其中供应工具可以执行由计划生成功能生成的计划。

通常,供应工具可以被配置为获得配置文件,解析其中包括的声明性信息,并且以编程方式/自动确定资源需要被供应以执行计划的顺序。例如,如果VPC需要在安全组规则和VM被启动之前被启动,则在无需用户干预和/或无需该信息必须包括在配置文件中的情况下,供应工具将能够做出该决定并按该顺序实现启动。

在一些情况下,可以采用连续部署技术来实现跨各种虚拟计算环境的基础设施代码的部署。附加地,所描述的技术可以在这些环境内实现基础设施管理。在一些示例中,服务团队可以编写期望被部署到一个或多个但通常是许多不同的生产环境(例如,跨各种不同的地理位置,有时跨越整个世界)的代码。但是,在一些示例中,代码将被部署在其上的基础设施必须首先被设置。在一些情况下,供应可以手动完成,供应工具可用于供应资源,和/或一旦基础设施被供应,则部署工具可用于部署代码。

如上所述,通常存在用于处理基础设施资源的供应和代码的部署中的每一个以控制基础设施资源的两个不同的工具,其中这两个工具之间的编排被手动执行。然而,在一定规模上,手动实现总是导致偏差。因此,可以供应和部署虚拟基础设施的自动化工具实现用于实现虚拟云环境的更有效和更可靠的技术。

在一些示例中,当两个工具被使用时,当用户在供应阶段和部署阶段之间手动地对代码做出变更时可能出现问题。如本文所述,使用单个工具以用于供应和部署两者的技术可以通过使过程自动化而使得不存在用于手动代码变更的机会来缓解该情况。可能有这样的情况,对一个用户对一些东西进行编码的方式的轻微改变可能在部署阶段创建重大问题。在一些示例中,操作者第一次在新区域中执行动作(例如,代码中的打字错误)时,用打字错误编码的对象可能永远是那样。如果用该打字错误部署应用程序,并且应用程序对该打字错误不敏感(例如,它仍然起作用),则有可能在将来的某个时间,附加的代码变更可能变得对该打字错误敏感,并使整个系统崩溃。因此,本文提供的技术可以移除通常可能导致问题的供应和部署之间的差距(gap)。

通常,建模部署是声明性的,使得配置文件可用于声明基础设施资源。例如,创建、读取、更新、删除(CRUD)指令通常用于使用一般代表状态转移(REST)概念(例如,REST应用程序编程接口(API))生成部署文件。但是,部署本身通常不遵循相同的概念。附加地,虽然基础设施供应工具倾向于真的强大和/或富有表现力,但部署工具倾向于关于它们可以执行的操作限制更多(例如,它们是命令性的而不是声明性的)。在一些示例中,命令性工具接收不一定描述组件的工作流、状态等的命令性指令。例如,中心基础设施服务可能是命令性的,这意味着它接收命令性指令(例如,期望的输出)而不是声明性指令(例如,描述执行任务所需的各种步骤)。然而,在一些示例中,本文描述的中心基础设施服务可以是声明性的。因此,长期以来一直需要一种能够在云环境内处理两种功能需求(例如,基础设施元素的供应和部署)的工具。

在一些示例中,本文描述了用于实现云基础设施编排服务(CIOS)的技术。如上面简要描述的,这样的技术可以被配置为管理云环境内基础设施资产的供应和部署。在一些情况下,CIOS可以包括两类服务:中心和区域组件(例如,CIOS中心和CIOS区域)。以下术语将在全文中被使用:

·基础设施组件——支持运行代码的长期存在的基础设施部分。

ο示例:部署应用程序、负载平衡器、域名系统(DNS)条目、对象存储桶等。

·工件——正被部署到部署应用程序或Kubernetes引擎集群的代码,或正被应用于基础设施组件的配置信息(以下,“config”)。这些可能是只读资源。

·部署任务——通常与部署或测试代码相关联的短期任务。附加地,部署任务被建模为生存长度不超过创建它们的发布的资源。

ο示例:“deploy$artifact to$environment”、“watch$alarm for 10minutes”、“execute$testSuite”或“wait for$manualApproval”

ο例如,CIOS可以将部署编排器部署建模为创建在它完成时转换为可用状态的资源。

ο由于CIOS维护其关联的声明性供应器的状态,因此CIOS可以控制这些短期资源的生命周期,因为它与发布相关。

·资源——可以CRUD的资源

οCIOS将上面列出的每个构造建模为资源。下一节详细讨论此建模。

·群组——CIOS的封装了控制平面及其所有组件的模型。主要为了对基础设施组件的所有权进行建模而存在并指向基础设施组件。

·群组config——描述与单个服务相关联的所有基础设施组件、工件和部署任务的集合。

ο每个群组只有一个群组config。群组config签入源控制。

ο群组config是声明性的。他们希望CIOS提供领域、区域、ad和工件版本作为输入。

ο群组是细粒度的——群组由单个服务和支持性基础设施组成。

·状态——群组中每个资源状态的时间点快照。

·发布——具体版本的群组config和它引用的每个工件的具体版本的元组。

ο将发布视为描述可能尚不存在的状态。

·发布计划——CIOS将采取的把所有区域从其当前状态转换到发布所描述的状态的步骤集合。

ο发布计划具有有限数量的步骤和明确定义的开始和结束时间。

·应用——这是一个名词。执行发布计划的单次尝试。执行变更了群组的当前状态。

CIOS可以被描述为将配置应用到下游系统(例如,全世界范围)的编排层。它被设计为允许全世界范围基础设施供应和代码部署而无需来自服务团队的手动工作(例如,在一些情况下超出初始批准)。CIOS的高级职责包括但不限于:

·为团队提供由CIOS管理的资源的当前状态的视图,包括任何正在进行的变更活动。

·帮助团队计划和发布新的变更。

·协调区域内跨各种下游系统的活动,以执行批准的发布计划而无需人工干预。

·协调跨地区/领域的活动以在全世界范围执行批准的发布计划。

在一些示例中,CIOS通过使团队能够经由签入代码向CIOS提供配置信息来处理登录(onboarding)。附加地,CIOS可以自动化更多的事情,因此与先前的实现相比,这是一项分量更重的实践。在一些情况下,CIOS通过为团队提供自动部署和测试代码的能力来处理预部署。在一些情况下,CIOS可以通过在团队构建新工件时实现自动生成计划以推出新工件(例如,全世界范围)来处理变更管理(CM)策略的编写。它可以通过检查每个区域的当前状态和当前CIOS config(其本身可以是工件)来做到这一点。附加地,团队可以检查这些计划,并可以通过变更CIOS config并要求CIOS重新计划来对计划进行迭代。一旦团队对计划满意,他们就可以创建引用计划的“发布”。然后计划可以被标记为被批准或被拒绝。虽然团队仍然可以编写CM,但他们只是CIOS计划的指向者。因此,团队可以花更少的时间来推理计划。计划更准确,因为它们是机器生成的。计划对于人类处理来说几乎太详细了;但是,它可以经由复杂的用户接口(UI)显示。

在一些示例中,CIOS可以通过自动执行部署计划来处理CM的执行。一旦发布计划被创建并批准,除非CIOS发起回滚,否则工程师将不再参与CM。在一些情况下,这可能需要团队将当前手动的任务自动化。在一些示例中,当CIOS在执行时检测到服务健康状况下降时,CIOS可以通过自动生成将群组返回到其原始(例如,预发布)状态的计划来处理回滚变更管理(CM)。在一些示例中,CIOS可以通过接收范围为CIOS管理的区域子集和/或资源子集的发布计划以及然后执行该计划来处理部署紧急/战术变更。

附加地,CIOS可以支持定义全自动全世界范围部署所必需的原语。例如,CIOS可以通过监控警报和执行集成测试来测量服务健康状况。在服务降级的情况下,CIOS可以帮助团队快速定义回滚行为,然后可以自动执行它。CIOS可以自动生成和显示发布计划并可以跟踪批准。在一些情况下,团队用来描述期望的部署行为的语言可以是声明性的。在一个系统中CIOS可以结合代码部署和基础设施config(例如,供应)的功能。CIOS还支持跨区域和跨区域内组件的灵活排序。团队可以经由签入config表达排序。团队可以以编程方式调用CIOS的计划和发布API。

图1描绘了用于图示用于至少实现CIOS中心102的技术的架构100。在一些示例中,CIOS中心102可以是在“群组”级别处理操作的服务。CIOS中心102有一些职责,包括但不限于:

·作为用于群组元数据变更和发布操作的认证网关。

·为群组存储群组元数据到部署工件和CIOS存储库的权威映射。

·跨阶段和目标协调全球发布。

·同步以实行比如“一次不超过一个正在进行的群组的发布”的策略。

·检测对群组配置(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可以监视SCVMS 104以获取对群组config的变更,并且可以从ANS 106接收关于对其他工件的变更的通知,并且状态摄取器服务116可以在CIOS中心数据库(DB)118中创建区域状态的副本,使得查看/计划/批准112可以暴露它们。在一些示例中,CIOS中心DB 118可以是群组、计划和状态的DB。群组信息可以是权威的;而其他一切可以是来自CIOS区域120的数据的陈旧副本。

在一些示例中,工程师108可以(例如,通过入口代理群集122)对群组管理服务110执行API调用以创建群组列表。进行这样的API调用的协议可以是安全超文本传输协议(HTTPS)等。用于此操作的相关访问控制列表(ACL)可以包括局域网(LAN)124或其他私有连接。例如,CIOS可以管理/控制使用公共互联网将客户的本地数据中心或网络与CIOS连接的网络连接替代方案(例如,专用、租用和/或私有连接)。附加地,(例如,工程师108的)认证和授权可以由允许用户管理机器基础设施的预约系统门户(例如,预约服务)来执行。在一些情况下,CIOS中心102可以使用Java数据库连接(JDBC)等将群组元数据、计划和状态存储在中心DB 118中。在一些示例中,ANS 106可以被配置为在新工件已被发布时通知变更监控服务114。ANS 106可以使用HTTPS,并且认证和授权两者都可以由相互传输层安全服务来处理。附加地,在一些情况下,变更监控服务114可以轮询SCVMS 104以获取群组配置变更。此轮询可以使用安全外壳(SSH)或其他协议执行。变更监控服务114的认证可以由CIOS系统帐户处理,并且授权可以由SCVMS 104处理。

在一些示例中,工程师108可以使用查看/计划/批准服务112来进行以下操作中的一个或多个。工程师108可以通过调用CIOS中心102以生成和批准计划来计划和/或批准。工程师108可以通过调用CIOS中心102以查看全世界范围正在进行的CIOS活动的状态来查看。附加地,工程师108可以CIOS中心102查看全世界范围CIOS管理的资源的状态的副本。这些API调用(等)可以经由HTTPS协议或类似协议执行。附加地,相关的ACL可以由LAN 124控制,并且认证和授权两者都可以由预约服务处理。在一些示例中,查看/计划/批准服务112可以请求计划并(例如,使用HTTPS等)将计划批准推送到CIOS区域120的所有区域。相关的ACL可以使用由广域网(WAN)网关126管理的安全列表来控制。认证可以通过相互传输层安全来处理,并且授权可以通过各种身份策略来处理。此外,状态摄取器服务116可以监视CIOS区域120以获取作业状态或状态变更,使得CIOS可以根据请求(例如,也使用HTTPS等)提供它们的中心视图。针对此的ACLS也可以由WAN网关126处理,并且认证和授权两者都可以由相互传输层安全服务处理。

图2描绘了用于图示用于至少实现CIOS区域202的技术的架构200。在一些示例中,CIOS区域202是声明性供应和计划的大部分工作以及被批准的发布应用程序可以发生的地方。在一些情况下,CIOS区域202的每个实例都可以有可以在“执行目标”级别处理操作的区域前端服务。它可被配置为执行以下:

·处理来自CIOS中心102的传入操作的所有CIOS认证。

·实行针对给定的执行目标一次只有一个“执行”(计划/导入资源/应用计划)可以正在进行的规则。

·在声明性基础设施供应执行期间管理用于输入和输出的声明性供应工件的二进制工件存储。输入的示例是声明性基础设施供应配置文件和输入状态文件。典型的输出是最终状态文件。

·对于任何给定的执行,请求来自CIO执行器的工作以及对来自CIO执行器的结果的轮询。

在一些情况下,CIOS前端可以依赖于CIOS执行器206(本文中也被称为“调度器”),其可以处理实际执行。在一些示例中,CIOS执行器在“执行”级别运行,并且它可以:

·跟踪可用工作者节点池

·查询传入的作业请求,并在可用时将它们分配给符合条件的工作者

·跟踪工作者状态和执行更新以用于向客户端报告

·经由租用协议检测死节点,并可以使分配给死节点的任务失败,这依赖于任务状态。

·提供取消/终止/暂停/恢复执行的设施,并可以将那些执行映射到设施上,以将取消/终止/恢复信息传递到工作者节点。

在一些情况下,CIOS执行器可以依赖于CIOS工作者,该CIOS执行器可以将用于执行的任务分配给工作者,并为工作者提供设施以更新作业进度。工作者服务在“任务”的粒度上操作。每个工作者是执行分配给该工作者的任务并报告任务状态和输出的代理。每个工作者可以:

·针对分配的工作项轮询执行器工作者API,并采取动作

以使分配状态与其本地状态匹配:

ο启动用于轮询本地不存在的任务项的容器

ο针对本地运行的没有对应分配任务项的容器终止容器

·报告作业状态

·使作业容器执行的输入和输出发生

·启动和监控声明性基础设施供应容器以用于进行针对执行目标的发布的实际工作。

CIOS工作者可以依赖于CIOS执行器来轮询来自CIOS执行器的工作者端点的工作并向其报告结果。对于所有协调,工作者可以依赖执行器。附加地,CIOS工作者还可以依赖于CIOS区域202,其中工作者服务从与区域前端服务相关联的一个或多个API读取输入并向其写入输出。输入示例是配置和启动状态文件以及导入映射。输出示例是声明性供应过程、输出声明性供应状态文件以及导入结果状态。

在一些示例中,CIOS区域202可以是用于管理CIOS的区域实例/部署的区域服务。CIOS区域202负责权威地存储和管理与特定区域有关的计划和状态。区域DB 204可以是用于特定区域中的状态和计划的CIOS DB。这是图1的中心DB 118的区域子集的权威副本。调度器206可以负责管理工作者群集容量,将任务分配给工作者,并保持对任务状态的跟踪。在一些情况下,任务DB 208是用于任务状态的另一个CIOS DB。此DB中的数据主要用于操作目的。附加地,工作者210可以是管理声明性供应镜像的Java虚拟机(JVM)群集。这些从调度器206接收指令并将结果传送给调度器206和CIOS区域202两者。CIOS容器212可以在其自己的私有docker214容器中运行声明性供应动作。此容器不需要包含秘密。附加地,在一些示例中,签名代理216可以被配置为经由声明性供应工具防止秘密渗漏,以避免将秘密放入声明性供应镜像中。相反,CIOS可以在代理中执行请求签名或发起相互传输层安全(mTLS)服务。这也使得使用遵循FIPS的加密库更容易。

在一些示例中,CIOS中心102可以调用CIOS区域202以创建计划、推送批准、监视作业状态(服务主体)和提取声明性供应器状态(服务主体)。入口代理218可以被配置为ACL,并且各种身份策略可以用于认证和授权两者。替代地,在一些示例中,入口代理218可以用被配置为平衡传入请求、计划等的负载的负载平衡器代替。在一些情况下,CIOS区域202可以通过要求调度器206运行声明性供应器来运行声明性供应器。工作者210可以询问调度器206它应该运行什么,并且可以在完成时向调度器206报告状态。在一些情况下,mTLS可以为CIOS区域202和工作者210处理认证和授权两者。附加地,当工作者210需要运行声明性供应器时,它通过与本地docker 214交互来在docker容器中这么做。此阶段的认证可由本地unix套接字处理。docker协议可用于此最后一步;但是,HTTPS可以用于先前的步骤。

在一些示例中,CIOS容器212使声明性供应器能够(经由API)与签名代理216交互,而声明性供应器认为它正在调用各种CIOS服务。签名代理216对声明性供应器的每个调用实例侦听只有该声明性供应器知道的一个临时端口。签名代理216可以发起请求签名或mTLS,并且可以将声明性供应器的调用传递给服务飞地(enclave)内的其他CIOS服务。在一些情况下,签名代理216还可以与一个或多个公共CIOS服务220通信。例如,签名代理216将在可能的情况下使用公共服务的内部端点。对于没有内部端点的服务,它必须使用出口代理222以到达外部端点。签名代理216的此使用可能不用于跨区域通信;例如,每个区域中的出口代理白名单可能仅用于该区域的公共IP范围。在一些示例中,工作者210然后可以将来自CIOS区域202中的声明性供应器的状态和日志持久保存,使得它们可以被渗漏到CIOS中心102。

使用CIOS,存在代表性客户经历的几个阶段:登录、预发布、全世界范围发布和战术发布。对于预发布阶段,以下是在新工件正被构建和发布工件至发布一(例如,R1)之间发生了什么的示例。这应该代替当前变更管理过程的一些或大部分。随着相关的工件被构建,CIOS可以使用“群组中一切东西的最新版本”自动生成发布。发布是具有具体输入(例如工件版本、领域、区域和ad)的群组config的具体版本。发布包含每区域一个前滚计划和描述区域排序的元数据。每个区域计划是声明性供应器将采取以实现该区域中的群组配置的操作集合。具有预发布环境的团队可以使用CIOS在所述环境中自动发布和测试软件。团队可以配置CIOS以自动测试回滚计划。团队将能够通过CIOS UI检查和批准发布。团队可以批准发布内的区域计划中的一些但不是全部。如果“一切东西的最新版本”没有产生合适的计划,则团队可以要求CIOS为精心挑选的工件版本生成计划。

对于全世界范围发布阶段,以下是团队如何执行今天的“正常CM”的明天版本的示例。一旦发布被批准,CIOS就将每个被批准的区域计划推送到相应的区域。CIOS在每个区域内独立行动以应用被批准的计划。CIOS将仅执行该区域计划中明确描述的动作集合。它将失败,而不是“独立思考”。CIOS UI向团队示出执行进度。CIOS UI在需要手动批准时提示团队。如果由于CIOS或下游服务中断而执行失败,则CIOS可以通知团队并可以提示他们下面的步骤(例如,中止、重试)。CIOS确实执行重试,但一些下游系统中断将超出其重试的意愿。如果由于服务健康状况下降或测试失败而执行失败,则CIOS将协助团队将群组回滚到其开始状态。CIOS将在其发起自动回滚时通知(例如,寻呼)团队。团队必须批准回滚计划,然后CIOS将执行它。

对于战术发布阶段,以下是团队可以如何执行“紧急CM”的明天版本的示例。当生成计划时,团队可能要求CIOS以若干方式将计划针对具体资源:以拓扑(例如,领域、区域、AD等)方式、按资源类型(例如,“仅度量config”或“仅部署编排服务部署”等)或以上的组合(例如,以分离的方式)。团队批准战术发布就像全世界范围发布一样。CIOS以类似方式编排它们。如果团队需要在存在活跃的全世界范围发布时部署战术发布,CIOS将停止在目标区域执行全世界范围发布,然后开始执行战术发布。

在一些示例中,声明性供应器的状态(例如,传统上是文件)是由声明性供应器管理的资源组的权威记录。它包含来自配置文件的每个资源的逻辑标识符与资源的实际标识符之间的映射。当声明性供应器正创建资源时,某些种类的故障可能阻止实际标识符被记录在状态中。当这发生时,对于声明性供应器,实际标识符丢失。这些可被称为“孤立资源”。

对于大多数资源,孤儿表示浪费——声明性供应器启动(例如)其忘记的实例,但相反在它下次运行时将启动另一个实例。对于具有唯一性约束或客户端提供的标识符的资源,孤儿阻止声明性供应器取得进展。例如,如果声明性供应器创建用户“nglass”并且失败孤立了它,那么声明性供应器的下一次运行将尝试创建“nglass”并失败,因为具有该用户名的用户已经存在。在一些情况下,孤儿只是向状态添加新资源时的问题。在一些情况下,声明性供应器的刷新行为可以自然地从失败中恢复以记录更新和删除。

CIOS需要在下游服务中断或CIOS自身中断的情况下是健壮的。因为CIOS可以利用声明性供应器来应用变更,这意味着围绕运行声明性供应器和维护声明性供应器状态应该存在健壮性。声明性供应器执行“小规模”重试——足以避免持续少量分钟数的中断。例如,云提供商将重试长达30分钟。持续超过30分钟的下游系统中断将导致声明性供应器失败。当声明性供应器失败时,它记录它在状态中成功做出的所有变更,然后退出。为了重试,CIOS必须重新执行声明性供应器。重新执行声明性供应器还允许CIOS在CIOS本身故障的情况下重试。在一些情况下,CIOS可以循环运行以下操作:

·刷新——声明性供应器调用GET API来检索在其状态中描述的每个资源的新快照。

·计划——考虑到最近刷新的当前状态,声明性供应器生成将实现期望的状态的计划(一组具体的API调用)。

·应用——声明性供应器执行计划中的步骤集合。

当执行声明性供应器时,CIOS可以总是运行所有这三个步骤。刷新操作有助于从未被记录的任何更新或删除中恢复。CIOS检查计划操作的结果并将其与被批准的发布计划进行比较。如果新生成的计划包含未在被批准的发布计划中的操作,则CIOS可能会失败并可以通知服务团队。

图3描绘了用于图示示例群组302的有向无环图(DAG)300。对于CIOS中的单个群组config,代码/config从签入到生产的进程可以从首次测试部署到最后生产(prod)部署自始至终被描述。在内部,CIOS引用进程中的每个元素,执行目标(ET)——这是内部API规范,并且不泄漏到群组config中。CIOS基于群组config中定义的DAG 300执行ET。每个ET(例如,ET-1、ET-2、ET-3、ET-4、ET-5、ET-6和ET-7)大致是群组config描述的服务的一个副本。

图4描绘了图示示例群组402的DAG 400。在群组config中,CIOS关于团队如何表达此进程非常固执己见——他们必须使用云基础设施租赁和区域对其进行建模。团队不应使用领域来对进程建模。CIOS允许团队使用一个领域内的多个租赁和一个租赁内的多个区域。但是,CIOS不允许团队在一个租赁内使用相同的区域两次(尽管他们可以在一个领域内使用相同区域两次——在不同的租赁中)。DAG 400图示了用租赁和区域表达的来自图3的DAG 300的版本。此示例是用于覆盖服务,其中预生产ET位于生产区域中。服务飞地服务将在发布一中具有不稳定和稳定的租赁。在DAG 400中,IAD是华盛顿特区杜勒斯机场的区域机场代码,YYZ是安大略多伦多的区域机场代码,PHX、LHR和FRA分别是凤凰城、伦敦和法兰克福的区域机场代码,并且LUF和LFI用于两个不同的空军基地。

在一个实施例中,本文描述的CIOS和/或其他技术是对Terraform(声明性供应工具)、Tanden(代码生成工具)和Oracle部署编排器(ODO)中的每一个的改进。附加地,在一些示例中,本文描述的CIOS和/或其他技术可以使用Terraform、Tanden和ODO工具的至少部分来实现。

描述了用于实现基础设施编排服务的技术。在一些示例中,一种方法可以包括调度器,该调度器可以接收用于在执行目标处的资源的第一部署的配置文件,该配置文件可以包括第一发布标识符。资源可以在执行目标处根据文件被部署。资源的当前状态可被存储。调度器可以接收用于在执行目标处的新部署的文件的第二版本,其可以包括第二发布标识符。至少一个工作者节点可以执行插件以将第一标识符与第二标识符进行比较。如果第一标识符与第二标识符不同,则插件可以将资源的当前状态与根据第二标识符的期望状态进行比较。如果期望状态与当前状态不同,则资源在执行目标处根据第二标识符被部署。

在其他示例中,系统可以包括至少一个处理器和至少一个存储器,该至少一个存储器可以存储计算机可执行指令,当这些计算机可执行指令由处理器执行时,配置处理器以执行操作。操作可以包括调度器接收用于在执行目标处的资源的第一部署的配置文件,该配置文件可以包括第一发布标识符。资源可以在执行目标处根据配置文件被部署,并且资源的当前状态可被存储。调度器可以接收用于在执行目标处的新部署的配置文件的第二版本,其可以包括第二发布标识符。至少一个工作者节点可以执行插件以将第一发布标识符与第二发布标识符进行比较。如果第一发布标识符与第二发布标识符不同,则插件可用于将资源的当前状态与根据第二配置文件的资源的期望状态进行比较。如果期望状态与当前状态不同,则资源可以在执行目标处根据配置文件的第二版本被部署。

在另外的示例中,计算机可读存储介质可以存储计算机可执行指令,当这些计算机可执行指令由至少一个处理器执行时,可以使处理器执行操作。操作可以包括调度器接收用于在执行目标处的资源的第一部署的配置文件,该配置文件可以包括第一发布标识符。资源可以在执行目标处根据配置文件被部署,并且资源的当前状态可被存储。调度器可以接收用于在执行目标处的新部署的配置文件的第二版本,其可以包括第二发布标识符。至少一个工作者节点可以执行插件以将第一发布标识符与第二发布标识符进行比较。如果第一发布标识符与第二发布标识符不同,则插件可用于根据第二配置文件将资源的当前状态与资源的期望状态进行比较。如果期望状态与当前状态不同,则资源可以在执行目标处根据配置文件的第二版本被部署。

图5描绘了根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的架构的组合框图500。框图500示出了CIOS中心502(例如,图1的CIOS中心102)和CIOS区域504。CIOS中心502可以包括控制平面506(例如,图1的控制平面110)、查看/计划/批准服务508(例如,图1的查看/计划/批准服务112)、变更管理服务510(例如,图1的变更管理服务114)和状态摄取器服务512(例如,图1的状态摄取器服务116)。

用户514(例如,图1的工程师108)可以创建发布,该发布可以包括至少一个部署、至少一个测试、这两者或合适的声明性基础设施供应工具操作的任何其他组合,并且用户514可以通过LAN网关516(例如,图1的LAN 124)将发布发送到CIOS中心502。CIOS中心502可以对发布进行后处理。可以是群组管理组件的控制平面506可以生成随机发布ID并将此随机生成的发布ID分配给该发布。控制平面506可以用在后处理中生成的至少一个代码文件来扩充发布。在这些代码文件中可以有可以包括被称为提供者的至少一个声明性基础设施供应工具插件的提供者文件和本地文件。本地文件可以包括生成随机发布ID的操作,并且在本地文件中生成的随机发布ID被注入到提供者文件。控制平面506进行后处理的结果可以是具有由用户产生的原始代码和通过后处理生成的扩充代码的发布(扩充的发布)。

查看/计划/批准服务508可以通过WAN网关518(例如,图1的WAN网关126)将扩充的发布发送到CIOS区域504。扩充的发布可以由CIOS区域520(例如,图2的CIOS区域202)接收,该区域可以是生成状态报告并保持对进入CIOS区域504的任务的跟踪的计算设备。CIOS区域520可以从扩充的发布向调度器522(例如,图2的调度器206)发送任务,该调度器可以是可以将任务分配给工作者524(例如,图2的工作者210)(通常分配给具有最少工作量的工作者)的计算设备。在一些实施例中,CIOS区域520和调度器522可以在相同的计算设备上。工作者524可以是可以执行由调度器522分配的任务以及插件的计算设备,并且工作者524可以是可以包括许多工作者524的工作者群集的一部分。工作者524可以与CIOS容器526(例如,图2的CIOS容器212)交互,该容器可以存在于docker 528(例如,图2的docker 214)内。CIOS容器526可以检查执行目标的期望状态与和分配给工作者524的任务相关的执行目标的实际状态相比的差异。如果CIOS容器526识别出差异,则工作者524可以执行任务,并且如果CIOS容器526没有识别出差异,则工作者524可能不执行任务。通过执行任务,可以做出对云服务的API调用,并且API调用可以通过签名代理532(例如,图2的签名代理216)。签名代理532可以是通用HTTP代理,并且签名代理532可以控制CIOS区域504的传出网络流量。具体地,签名代理532可以在某些情况下切断所有传出网络,这将在图10和图11中进一步讨论。

在一些实施例中,期望在执行目标处执行的发布可以包括与当前在执行目标处的资源(执行目标资源)相同的资源(发布资源)。在此情况下,可能仍然期望执行发布,但现有的声明性基础设施供应工具操作可能不执行发布资源,因为发布资源与执行目标资源相同。但是,本文描述的技术可用于通过强制执行diff(例如,识别配置文件中的差异的比较函数)在执行目标处执行发布资源。因此,通过本文描述的技术实现的一项技术改进是如下能力:强制声明性基础设施供应工具处理发布,本质上是重新部署已经存在和/或已被部署的资源,即使声明性基础设施供应工具并非被设计为处理绑定到发布的资源的自动重新部署。

强制执行差异可以涉及指示声明性基础设施供应工具存在当前状态和期望状态之间的差异。在一些实施例中,强制执行差异可以至少部分地通过生成随机发布ID来实现。用户514可能期望在执行目标处使发布的资源被执行而不管执行目标处的资源的当前状态如何,即使执行目标资源与发布资源相同。在此情况下,用户514可以选择用于在控制平面506进行的后处理中生成随机发布ID的选项。然而,在一些情况下,控制平面506可以总是生成随机发布ID。然后,用户514可以通过编写更多config(例如,其覆盖默认的“使用发布id来强制执行差异”行为)来选择是否使用它。在一些实施例中,一旦被生成,随机发布ID可以永久地绑定到发布。发布可以被发送到CIOS区域504,并且发布的任务可以由调度器522分配给工作者524。工作者524可以与可以运行声明性基础设施供应工具操作的CIOS容器526通信。CIOS容器526可以检查资源的当前状态与资源的期望状态相比的差异。在此检查内,CIOS容器526可以确定发布是否包括随机生成的发布ID,这可以被视为强制执行差异。如果随机生成的发布ID是唯一的并且被CIOS容器526检测到,则CIOS容器526可以确定当前状态和期望状态之间确实存在差异,即使要被部署的资源与已被部署的资源相同。响应于识别此差异,新发布的资源可被部署。

图6描绘了根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的CIOS区域602(例如,图5的CIOS区域504)架构的框图600。类似于图5的部分,CIOS区域602可以包括CIOS区域604(例如,图5的CIOS区域520)和调度器606(例如,图5的调度器522),两者都可以是计算设备。在一些实施例中,CIOS区域604和调度器606可以在相同计算设备上。调度器606可以通信地耦合到可以帮助保持对分配的任务的跟踪的任务DB608,以及可以是执行任务的计算设备的工作者610。工作者610可以是可以包括许多工作者610的工作者群集的一部分。工作者610可以通信地耦合到CIOS容器612(例如,图5的CIOS容器528),其可以是可以在docker 614(例如,图5的docker 530)内运行声明性基础设施供应工具操作的计算设备。工作者610可以与CIOS容器612通信并向CIOS容器612发送发布,并且CIOS容器612可以确定当前状态和期望状态之间是否存在差异。如果差异存在,则工作者610可以执行分配的任务,并且根据执行分配的任务,工作者610可以执行传出API调用,该API调用可以通过签名代理616(例如,图5的签名代理532)。在某些情况下,签名代理616可以允许传出API调用或切断所有传出网络流量,这将在图10和图11中进一步讨论。虽然任务DB 608被示为调度器606的数据库,但它还可以(或替代地)被配置为所有CIOS区域604的数据库。该数据库608可以是关于区域中发生的更改活动的权威。“权威”的含义的示例:关于CIOS区域602内的特定执行目标发生了什么,CIOS中心(例如,图5的502)可能已经过时,这可能使其要求CIOS区域604在做出更改是不安全的时做出更改。在本例中,CIOS区域的数据库6008可以确定这样做是否安全(例如,存在/不存在针对该执行目标已发生的更改活动)。在此示例中,CIOS区域604将检查数据库608,并将HTTP 409(例如,冲突)返回给CIOS中心502。

在一些实施例中,用户(例如,图5的用户514)可能希望重试相关资源的部署、测试或任何其他合适的执行。重试资源执行的原因的一些非限制性示例可以是先前执行的随机失败、先前执行的代码中的漏洞等。除了确定唯一的发布ID是否与发布绑定之外,CIOS容器612还可以检查执行ID和相关资源的状态。资源的执行每次被尝试时,调度器610可以生成唯一的执行ID,该执行ID可以与资源的执行绑定。在用户发送用于发布的重试命令的非限制性示例中,调度器610可以生成执行ID并且可以将与重试命令相关联的任务分配给工作者612。工作者612可以向CIOS容器612发送发布ID、执行ID以及资源状态。如果发布ID与当前状态不同,则CIOS容器612可以识别差异并且工作者610可以执行任务。如果期望状态的发布ID与当前状态的发布ID相同,则CIOS容器612可以检查执行ID和发布状态。如果CIOS容器612确定当前执行的执行ID与先前执行的执行ID不同,并且如果CIOS容器612确定先前执行的发布状态为“已失败”或任何合适的类似状态,则工作者610可以再次尝试执行资源的任务。如果CIOS容器612确定执行ID与先前的执行相同或者发布状态不是已失败,则工作者610可以不执行任务。

图7示出了根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的代码片段700。片段700描绘了用于定义可以在执行目标处执行部署的资源的代码。片段700可以包括资源类型702、资源名称704、发布ID 706和资源状态708。资源类型702可以包括相关资源的部署、测试或任何其他合适的资源类型。如片段700中所描绘的资源名称704是“executor_ad1”,但资源名称704可以是适合描述相关资源的任何名称。如片段700中描绘的发布ID 706是“7e29d6aa-7dc6-4268-9f90-e57caf76e714”,但发布ID 706可以是用于识别唯一发布的任何随机生成的字符串。如片段700中描绘的资源状态708是“已成功”,但是资源状态708可以是用于描述相关资源的任何合适的状态(例如,“已成功”、“已失败”、“已批准”、“需要批准”等)。

在一些实施例中,片段700可以用作某个资源的地址或标识符。工作者节点(例如,图6的工作者610)可以接收用于执行资源的任务。工作者节点可以将资源发送到CIOS容器(例如,图6的CIOS容器612),并且CIOS容器可以至少部分地使用片段700来确定资源是否是唯一的。CIOS容器可以将来自资源的资源类型702、资源名称704和发布ID 706(期望状态)与当前在执行目标处的资源的相同项目(当前状态)进行比较。如果期望状态和当前状态之间存在差异,则CIOS容器可以识别出差异存在,工作者节点可以在执行目标处执行资源。

在一些实施例中,片段700可以包括用于识别唯一执行尝试的另一行代码,被称为执行ID。执行ID可以是一串字符,其可以由调度器节点(例如,图6的调度器606)随机生成。调度器节点可以为资源的每次执行尝试生成随机执行ID,并将具有执行ID的资源发送给工作者节点。工作者节点可以将具有执行ID的资源发送到CIOS容器,CIOS容器可以确定当前状态和具有执行ID的资源(期望状态)之间是否存在差异。如果期望状态的执行ID与当前状态不同并且当前状态的资源状态708为“已失败”,则CIOS容器可以确定当前状态与期望状态之间存在差异。根据CIOS容器识别出差异,工作者节点可以在执行目标处执行资源。此操作可以类似于先前讨论的重试操作。

图8示出了根据至少一个实施例的用于实现云基础设施编排服务的至少一些元素的代码的片段800和802。片段800和802描绘了在用户(例如,图5的用户514)创建的发布的后处理期间可以由群组管理组件(例如,图5的控制平面506)生成的代码。片段800示出了可以包括提供者的提供者文件的示例,该提供者可以是声明性基础设施供应工具插件。提供者文件可以包括发布ID标注804和执行ID标注806。提供者文件还可以包括用于相关发布的任何其他合适的提供者或插件。发布ID标注804可以是将发布ID(例如,图7的发布ID 706)注入资源中的操作,并且如片段800中描绘的,发布ID标注804是“local.release.id”,但可以是用于将发布ID注入资源的任何合适的标注。执行ID标注806可以是将执行ID注入资源的操作,并且如片段800中描绘的,执行ID标注806是“local.execution.id”,但可以是用于将执行ID注入资源的任何合适的标注。

片段802示出了本地文件的示例,其可以由群组管理组件在资源的后处理中生成。本地文件可以包括发布ID 808和执行目标信息810。如片段802中描绘的,发布ID 808是“39ed7b9c-5519-4069-896d-8e17ed4fc29e”,但发布ID 808可以是适合唯一识别发布的任何字符串。执行目标信息810可以包括关于旨在在其上执行发布的执行目标的各种信息。如片段802中描绘的,执行目标信息810包括执行目标名称812,但是执行目标信息可以是与执行目标相关的任何合适的信息。如片段802中描绘的,执行目标名称812是“ap-melbourne-1”,但是执行目标名称812可以是旨在将资源部署到其处的执行目标的任何合适名称。

片段802的本地文件可以包括发布ID 808和执行ID两者。在可能发生在CIOS中心(例如,图1的CIOS中心102)处的发布的后处理期间,群组管理组件可以生成发布ID 808,该发布ID 808可被包括在本地文件中。执行ID可以由调度器节点生成,该调度器节点可以用执行ID更新本地文件。通过利用发布ID标注804和执行ID标注806,可以向片段800的提供者文件注入发布ID 808和执行ID两者。

图9图示了根据本公开的某些实施例的示出用于实现CIOS的技术的过程900的示例流程图。此过程被图示为逻辑流程图,其中每个操作可以以硬件、计算机指令或其组合实现。在计算机指令的上下文中,操作可以表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当这些计算机可执行指令由一个或多个处理器执行时,执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且任何数量的描述的操作可以以任何顺序和/或并行组合以实现过程。

附加地,过程900可以在配置有可执行指令的一个或多个计算设备或计算机系统的控制下被执行,并且可被实现为在一个或多个处理器上、通过硬件或其组合共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。如上所述,代码可以例如以包括由一个或多个处理器可执行的多个指令的计算机程序的形式存储在计算机可读存储介质上。在一些实施例中,过程900可以由多个处理器并行执行。计算机可读存储介质可以是非暂时性的。

图9描绘了根据至少一个实施例的示出用于实现CIOS的技术以在执行目标处部署资源的过程900的示例流程图。过程900可以在框902处开始,其中调度器节点(例如,图2的调度器206)接收用于在执行目标处的资源的第一部署的配置文件,该配置文件可以包括下文被称为第一发布ID的第一发布标识符(例如,图8的发布ID808)。调度器节点可以将配置文件发送到工作者节点(例如,图2的工作者210),该工作者节点可以是包括许多工作者节点的工作者群集的一部分。

在框904中,在执行目标处执行根据配置文件的资源的第一部署,在一些实施例中,这由工作者节点执行。在一些示例中,执行目标可以是空的或者以其他方式没有部署到它的任何资源。工作者节点可以将配置文件发送到CIOS容器(例如,图2的CIOS容器212),以用于确定当前在执行目标处的资源(当前状态)与配置文件中的资源(期望状态)之间是否存在差异。由于在框904中,执行目标可能没有任何资源,因此差异可能存在并且工作者节点可以在执行目标处执行资源的第一部署。

在框906中,存储执行目标处的资源的当前状态。在一些示例中,一旦工作者节点执行了执行目标处的资源的第一次部署,执行目标处的资源的当前状态就可以被存储。当前状态可以在后续比较中至少部分地用于确定是否在执行目标处部署后续发布。

在框908中,调度器节点接收用于在执行目标处的资源的第二部署的第二配置文件,该第二配置文件可以包括下文被称为第二发布ID的第二发布标识符。调度器节点可以将第二配置文件与任务一起发送到工作者节点,以在执行目标处执行资源的第二部署。

在框910中,工作者节点执行插件以将第一发布ID与第二发布ID进行比较。工作者节点可以将第二配置文件发送到CIOS容器。在一些示例中,CIOS容器可以通过将第一发布ID与第二发布ID进行比较来确定如在过程900的框906中存储的当前状态与如在第二配置文件中定义的期望状态之间是否存在差异。

在框912中,根据CIOS容器确定第一发布ID和第二发布ID之间不存在差异,工作者节点不采取动作,并且第二部署可能不发生。在框914中,根据CIOS容器确定第一发布ID和第二发布ID之间存在差异,CIOS容器可以将执行目标处的资源的当前状态与第二配置文件中定义的资源的期望状态进行比较。在一些示例中,根据CIOS容器在框910处确定第一发布ID和第二发布ID之间存在差异,CIOS容器可以直接跳到框916。

在框916中,根据CIOS容器确定资源的当前状态与如第二配置文件定义的资源的期望状态不同,资源可以根据第二配置文件被部署在执行目标处。工作者节点可以通过在执行目标处执行资源的第二部署来完成由调度器节点分配给它的任务。在一些示例中,CIOS容器可以确定第一发布ID和第二发布ID相同,这可以指示用户希望重试部署。在此情况下,CIOS容器可以比较第一配置文件的第一执行ID和第二配置文件的第二执行ID。根据CIOS容器确定第一执行ID和第二执行ID不同,CIOS容器可以检查第一配置文件的发布状态。如果第一配置文件的发布状态为“已失败”,或者指示资源的第一部署可能没有已经成功的任何其他类似状态,则工作者节点可以执行如第二配置文件定义的资源的第二部署。

图10描绘了根据至少一个实施例的用于图示用于防止声明性基础设施供应工具的并发执行的技术的简化架构1000。简化架构1000可以包括CIOS区域1002(例如,类似于图2的CIOS区域202)、调度器1004(例如,类似于图2的调度器206)、工作者1006(例如,类似于图2的工作者210)、CIOS容器1008(例如,类似于图2的CIOS容器212)、docker 1010(例如,类似于图2的docker214)和签名代理1012(例如,类似于图2的签名代理216)。调度器1004可以负责管理工作者群集的工作者1006的容量、将任务分配给工作者1006以及保持对任务状态的跟踪。工作者群集可以是管理声明性供应镜像的JVM群集。工作者群集从调度器1004接收指令并将结果传送给调度器1004和CIOS区域1002两者。CIOS容器1008可以在其自己的私有docker 1010容器中运行声明性供应动作。

签名代理1012可以控制CIOS区域1002的网络连接性,这可以规定是否对云服务1014做出任何API调用。签名代理1012可以测试调度器1004和来自工作者群集的每个工作者1006之间的租用1016。在示例实施例中,租用1016是心跳通知,其中每个工作者1006可以不断地向调度器1004发送其正在运行并且正在从事分配的任务的通知。心跳通知的频率在工作群集中的所有工作者1006之间可以是相同的,可以由调度器1004选择,或者可以由系统的用户/开发者配置。在一些示例中,频率可以是两秒、三秒、四秒、五秒或用于监控工作者1006的进度的任何其他合适的时间量。如果租用1016有效,从而意味着调度器1004接收到来自工作者1006的心跳通知,则签名代理1012可以执行对云服务1014的调用1018。如果租用1016无效,从而意味着调度器1004没有接收到心跳通知,则签名代理1012可以不执行对云服务的调用1018,并且相反,签名代理1012可以切断所有传出网络流量,不产生API调用,以防止分配给工作者群集的任务的并发执行。在签名代理1012切断所有传出网络流量的示例情况下,工作者1006、CIOS容器1008或任何其他合适的组件可以继续运行声明性供应器,但可能由于缺少对云服务1014的API调用而可能没有取得进展。

在示例实施例中,工作者群集中的每个工作者1006被调度器1004给予最多一个唯一任务,并且每个工作者向调度器1004发送心跳通知,从而让调度器1004知道租用1016是有效的。成功发送心跳通知的工作者1006可以被认为是健康的工作者,没有成功发送心跳通知的工作者1006可以被认为是不健康的工作者。工作者1006未发送心跳通知的原因包括工作者的主机失败、工作者的过程失败、工作者1006和调度器1004之间的关系(例如,负载平衡器、网络连接性等)失败,或不发送心跳通知的任何其他合适的原因。如果工作者群集中有不健康的工作者,则可能存在任务的并发执行的风险。如果任务被并发执行,则可能存在对基础设施的破坏的风险。当签名代理1012没有接收到心跳通知并且识别出不健康的工作者时,当签名代理1012切断所有传出网络流量,从而防止任何API调用时,可以减轻或消除这种风险。

图11示出了根据本公开的某些实施例的示出用于实现CIOS的技术的过程1100的示例流程图。此过程被图示为逻辑流程图,其中每个操作可以以硬件、计算机指令或其组合实现。在计算机指令的上下文中,操作可以表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当这些计算机可执行指令由一个或多个处理器执行时,执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且任何数量的描述的操作可以以任何顺序和/或并行组合以实现过程。

附加地,过程1100可以在配置有可执行指令的一个或多个计算设备或计算机系统的控制下被执行,并且可被实现为在一个或多个处理器上、通过硬件或其组合共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。如上所述,代码可以例如以包括由一个或多个处理器可执行的多个指令的计算机程序的形式存储在计算机可读存储介质上。在一些实施例中,过程1100可以由多个处理器并行执行。计算机可读存储介质可以是非暂时性的。

图11描绘了根据至少一个实施例的示出用于实现CIOS的技术以防止声明性基础设施供应器的并发执行的过程1100的示例流程图。过程1100可以在框1102处开始,其中工作者节点(例如,图10的工作者1006)接收用于部署基础设施资源的任务。任务可以由调度器节点(例如,图10的调度器1004)给予工作者节点,并且在任何给定时间工作者节点只能被给予一个唯一的任务。但是,在一些示例中,工作者节点可以一次处理许多任务。

在框1104中,工作者节点向调度器节点提供心跳通知。心跳通知可以是工作者节点正在运行以及工作者节点正在执行调度器节点给予工作者节点的任务的通知。从工作者节点到调度器节点的心跳通知的运送可以被称为租用(例如,图10的租用1016)。

在框1106中,签名代理(例如,图10的签名代理1012)跟踪工作者节点发送到调度器节点的心跳通知。工作者群集中的每个工作者节点可以向调度器节点发送心跳通知,并且签名代理可以跟踪这些心跳通知中的每一个,以尝试识别可能不健康的任何工作者节点。

在框1108中,签名代理从工作者节点接收与分配给工作者节点的任务的执行相对应的请求。请求可以涉及对云服务(例如,图10的云服务1002)做出API调用。

在框1110中,签名代理确定例如在框1108中做出请求的工作者节点的租用是否有效。签名代理可以确定来自工作者节点的心跳通知是否被正确地发送到调度器节点。如果心跳通知没有正确地从工作者节点发送到调度器节点,则签名代理可以认为工作者节点不健康。

在框1112中,根据签名代理确定租用有效,签名代理代表工作者节点对云服务做出调用。如果工作者节点成功地将心跳通知发送到调度器节点,则签名代理可以确定工作者节点是健康的。签名代理可以代表健康的工作者节点执行对云服务的API调用。

在块1114中,根据签名代理确定租用无效,签名代理不对云服务做出调用,并且相反地,阻止工作者节点对云服务的访问。如果工作者节点没有成功地向调度器节点发送心跳通知,则签名代理可以确定工作者节点不健康。不健康的工作者节点可以执行已经由不同的健康工作者节点正在执行的任务。以此方式并发执行任务可能冒着破坏基础设施的风险。为了减轻或消除此风险,签名代理可以切断所有传出的网络流量并防止工作者节点访问云服务,这可以防止被分配给工作者节点的任务的并发执行。

图12-图13图示了根据各种实施例的用于实现本公开的方面的示例环境的方面。图12描绘了用于实现本公开的实施例的分布式系统1200的简化图。在所示实施例中,分布式系统1200包括一个或多个客户端计算设备1202、1204、1206和1208,它们被配置为通过一个或多个网络1210执行和操作客户端应用程序,诸如网络浏览器、专有客户端(例如,Oracle Forms)等。服务器1212可以经由网络1210与远程客户端计算设备1202、1204、1206和1208通信地耦合。

在各种实施例中,服务器1212可以适于运行诸如提供身份管理服务的服务和应用程序之类的一个或多个服务或软件应用程序。在某些实施例中,服务器1212还可以提供其他服务或软件应用程序可以包括非虚拟和虚拟环境。在一些实施例中,这些服务可以作为基于网络的服务或云服务或在软件即服务(SaaS)模型下被提供给客户端计算设备1202、1204、1206和/或1208的用户。操作客户端计算设备1202、1204、1206和/或1208的用户继而可以利用一个或多个客户端应用程序与服务器1212交互以利用由这些组件提供的服务。

在图12中描绘的配置中,系统1200的软件组件1218、1220和1222被示为在服务器1212上实现。在其他实施例中,系统1200的一个或多个组件和/或由这些组件提供的服务也可以由客户端计算设备1202、1204、1206和/或1208中的一个或多个来实现。操作客户端计算设备的用户然后可以利用一个或多个客户端应用程序来使用由这些组件提供的服务。这些组件可以以硬件、固件、软件或其组合实现。应当理解,可以不同于分布式系统1200的各种不同的系统配置是可能的。因此,图12中所示的实施例是用于实现实施例系统的分布式系统的一个示例并且不旨在进行限制。

客户端计算设备1202、1204、1206和/或1208可以包括各种类型的计算系统。例如,客户端设备可以包括运行诸如Microsoft Windows

尽管图12中的分布式系统1200被示出为具有四个客户端计算设备,但是任何数量的客户端计算设备可以被支持。其他设备(诸如具有传感器的设备等)可以与服务器1212交互。

分布式系统1200中的(一个或多个)网络1210可以是本领域技术人员熟悉的可以支持使用多种可用协议中的任一种的数据通信的任何类型的网络,这些协议包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络架构)、IPX(互联网分组交换)、AppleTalk等。仅举例来说,(一个或多个)网络1210可以是局域网(LAN),基于以太网、令牌环的网络、广域网、互联网、虚拟网络、虚拟专用网络(VPN)、内联网、外联网、公共交换电话网络(PSTN)、红外网络、无线网络(例如,在电气和电子学会(IEEE)1002.11协议套件、

服务器1212可由一个或多个通用计算机、专用服务器计算机(举例来说,包括PC(个人计算机)服务器、

服务器1212可以运行操作系统,包括上面讨论的那些中任一个,以及任何可商用的服务器操作系统。服务器1212还可以运行各种附加服务器应用程序和/或中间层应用程序中的任一个,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、

在一些实现中,服务器1212可以包括一个或多个应用程序以分析和整合从客户端计算设备1202、1204、1206和1208的用户接收的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可包括但不限于

分布式系统1200还可以包括一个或多个数据库1214和1216。这些数据库可以提供一种用于存储诸如用户身份信息之类的信息和本公开的实施例使用的其他信息的机制。数据库1214和1216可以驻留在多种位置。举例来说,数据库1214和1216中的一个或多个可以驻留在服务器1212本地(和/或驻留在服务器1212中)的非暂时性存储介质上。替代地,数据库1214和1216可以远离服务器1212并且经由基于网络的连接或专用的连接来与服务器1212通信。在一组实施例中,数据库1214和1216可以驻留在存储区域网络(SAN)中。类似地,用于执行归属于服务器1212的功能的任何必要文件可以被本地存储在服务器1212上和/或远程存储,视情况而定。在一组实施例中,数据库1214和1216可以包括关系数据库,诸如由Oracle提供的数据库,其适于响应于SQL格式的命令来存储、更新和检索数据。

图13图示了可以用于实现本公开的实施例的示例计算机系统1300。在一些实施例中,计算机系统1300可用于实现上述各种服务器和计算机系统中的任何一个。如图13所示,计算机系统1300包括各种子系统,包括经由总线子系统1302与多个外围子系统通信的处理子系统1304。这些外围子系统可以包括处理加速单元1306、I/O子系统1308、存储子系统1318和通信子系统1324。存储子系统1318可以包括有形的计算机可读存储介质1322和系统存储器1310。

总线子系统1302提供了用于让计算机系统1300的各种组件和子系统按预期相互通信的机制。尽管总线子系统1302被示意性地示为单个总线,但是总线子系统的替代实施例可以利用多个总线。总线子系统1302可以是使用多种总线架构中的任何一种的若干类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线和本地总线。例如,这样的架构可包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和可以被实现为按照IEEE P1386.1标准制造的夹层总线的外围组件互连(PCI)总线等。

处理子系统1304控制计算机系统1300的操作并且可以包括一个或多个处理单元1332、1334等。处理单元可以包括一个或多个处理器,包括单核或多核处理器、处理器的一个或多个核或其组合。在一些实施例中,处理子系统1304可以包括一个或多个专用协处理器,诸如图形处理器、数字信号处理器(DSP)等。在一些实施例中,处理子系统1304的一些或所有处理单元可以使用诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)之类的定制电路来实现。

在一些实施例中,处理子系统1304中的处理单元可以执行存储在系统存储器1310或计算机可读存储介质1322中的指令。在各种实施例中,处理单元可以执行多种程序或代码指令并且可以维护多个并发执行的程序或过程。在任何给定时间,要被执行的一些或全部程序代码可以驻留在系统存储器1310和/或计算机可读存储介质1310上,包括潜在地在一个或多个存储设备上。通过合适的编程,处理子系统1304可以提供上述各种功能以用于响应于使用模式来动态地修改文档(例如,网页)。

在某些实施例中,处理加速单元1306可被提供用于执行定制处理或用于卸载由处理子系统1304执行的一些处理以便加速由计算机系统1300执行的整体处理。

I/O子系统1308可以包括用于向计算机系统1300输入信息和/或用于从或经由计算机系统1300输出信息的设备和机制。通常,术语“输入设备”的使用旨在包括用于将信息输入到计算机系统1300的设备和机制的所有可能的类型。用户接口输入设备可包括,例如,键盘、诸如鼠标或轨迹球之类的指点设备、并入显示器中的触摸板或触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、带有语音命令识别系统的音频输入设备、麦克风和其他类型的输入设备。用户接口输入设备还可以包括运动感测和/或姿势识别设备,诸如使用户能够控制输入设备(Microsoft

用户接口输入设备的其他示例包括但不限于三维(3D)鼠标、操纵杆或指点杆、游戏手柄和图形输入板,以及音频/视觉设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码读取器3D扫描仪、3D打印机、激光测距仪和眼睛注视跟踪设备。附加地,用户接口输入设备可以包括例如医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层扫描、医学超声设备。用户接口输入设备还可以包括例如音频输入设备,诸如MIDI键盘、数字乐器等。

用户接口输出设备可包括显示子系统、指示灯或诸如音频输出设备之类的非视觉显示器等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备之类的平板设备、投影设备、触摸屏等。通常,术语“输出设备”的使用旨在包括用于将信息从计算机系统1300输出到用户或其他计算机的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于以视觉方式运送文本、图形和音频/视频信息的多种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备和调制解调器。

存储子系统1318提供用于存储由计算机系统1300使用的信息的储存库或数据存储库。存储子系统1318提供用于存储提供一些实施例的功能的基本编程和数据构造的有形非暂时性计算机可读存储介质。当由处理子系统1304执行时提供上面描述的功能的软件(程序、代码模块、指令)可以被存储在存储子系统1318中。这些软件可以由处理子系统1304的一个或多个处理单元执行。存储子系统1318还可以提供用于存储根据本公开被使用的数据的储存库。

存储子系统1318可以包括一个或多个非暂时性存储器设备,包括易失性和非易失性存储器设备。如图13所示,存储子系统1318包括系统存储器1310和计算机可读存储介质1322。系统存储器1310可以包括多个存储器,包括用于在程序执行期间存储指令和数据的易失性主随机存取存储器(RAM)和存储固定指令的非易失性只读存储器(ROM)或闪存。在一些实现中,包含有助于诸如在启动期间在计算机系统1300内的元素之间传输信息的基本例程的基本输入/输出系统(BIOS)可被存储在ROM中。RAM可以包含当前由处理子系统1304操作和执行的数据和/或程序模块。在一些实现中,系统存储器1310可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。

举例来说,而非限制,如图13所示,系统存储器1310可以存储可以包括客户端应用程序、网络浏览器、中间层应用程序、关系数据库管理系统(RDBMS)等的应用程序1312、程序数据1314和操作系统1316。举例来说,操作系统1316可以包括各种版本的Microsoft

计算机可读存储介质1322可以存储提供一些实施例的功能的编程和数据构造。当由处理子系统1304执行时处理器提供上面描述的功能的软件(程序、代码模块、指令)可以被存储在存储子系统1318中。举例来说,计算机可读存储介质1322可以包括非易失性存储器,诸如硬盘驱动器、磁盘驱动器、诸如CD ROM、DVD、Blu-

在某些实施例中,存储子系统1300还可以包括可以进一步被连接到计算机可读存储介质1322的计算机可读存储介质读取器1320。计算机可读存储介质1322与系统存储器1310一起并且,可选地与系统存储器1310组合,可以综合地表示远程、本地、固定和/或可移动存储设备以及用于存储计算机可读信息的存储介质。

在某些实施例中,计算机系统1300可以为执行一个或多个虚拟机提供支持。计算机系统1300可以执行诸如管理程序之类的程序以用于促进对虚拟机的配置和管理。每个虚拟机可以被分配存储器资源、计算资源(例如,处理器、核)、I/O资源和联网资源。每个虚拟机可以运行其自己的操作系统,该操作系统可以与由计算机系统1300执行的其他虚拟机执行的操作系统相同或不同。因此,多个操作系统可以潜在地由计算机系统1300并发运行。每个虚拟机通常独立于其他虚拟机运行。

通信子系统1324提供到其他计算机系统和网络的接口。通信子系统1324用作用于从计算机系统1300接收来自其他系统的数据以及向其他系统发送数据的接口。例如,通信子系统1324可以使计算机系统1300能够经由互联网建立到一个或多个客户端设备的通信信道,用于从客户端设备接收信息并将信息发送到客户端设备。附加地,通信子系统1324可用于将成功登录的通知或重新输入密码的通知从特权帐户管理器传送给请求用户。

通信子系统1324可以支持有线和/或无线通信协议两者。例如,在某些实施例中,通信子系统1324可以包括用于(例如,使用蜂窝电话技术、高级数据网络技术,诸如3G、4G或EDGE(全球演进的增强数据速率)、WiFi(IEEE 902.11系列标准,或其他移动通信技术,或其任何组合)访问无线语音和/或数据网络的射频(RF)收发器组件、全球定位系统(GPS)接收器组件和/或其他组件。在一些实施例中,除了无线接口之外或替代无线接口,通信子系统1324可以提供有线网络连接(例如,以太网)。

通信子系统1324可以接收和发送各种形式的数据。例如,在一些实施例中,通信子系统1324可以接收结构化和/或非结构化的数据馈送1326、事件流1328、事件更新1330等形式的输入通信。例如,通信子系统1324可以被配置为从社交媒体网络和/或其他通信服务的用户实时接收(或发送)数据馈送1326,诸如

在某些实施例中,通信子系统1324可以被配置为接收连续数据流形式的数据,该数据可以包括实时事件的事件流1328和/或事件更新1330,其本质上可以是连续的或无界的,而没有明确的结束。生成连续数据的应用程序的示例可以包括例如传感器数据应用程序、金融报价机、网络性能测量工具(例如,网络监控和流量管理应用程序)、点击流分析工具、汽车交通监控等。

通信子系统1324还可以被配置为将结构化和/或非结构化的数据馈送1326、事件流1328、事件更新1330等输出到一个或多个数据库,该一个或多个数据库可以与耦合到计算机系统1300的一个或多个流数据源计算机通信。

计算机系统1300可以是各种类型中的一种,包括手持便携式设备(例如,

由于计算机和网络的不断变化的性质,图13中描绘的计算机系统1300的描述仅旨在作为具体示例。具有比图13中描绘的系统更多或更少组件的许多其他配置是可能的。基于本文提供的公开和教导,本领域的普通技术人员将理解实现各种实施例的其他方式和/或方法。

可以以各种配置来提供图中的一些图中描绘的系统。在一些实施例中,系统可以被配置为分布式系统,其中系统的一个或多个组件跨一个或多个云基础设施系统中的一个或多个网络分布。

云基础设施系统是一个或多个服务器计算设备、网络设备和/或存储设备的集合。这些资源可以以一些方式由云服务提供商划分并分配给其客户。例如,云服务提供商(诸如加利福尼亚州红木海岸的Oracle公司)可以提供各种类型的云服务,包括但不限于在软件即服务(SaaS)类别下提供的一项或多项服务、在平台即服务(PaaS)类别下提供的服务、在基础设施即服务(IaaS)类别下提供的服务或包括混合服务的其他类别的服务。SaaS服务的示例包括但不限于构建和交付一套按需应用程序(诸如Oracle Fusion应用程序)的能力。SaaS服务使客户能够利用在云基础设施系统上执行的应用程序,而无需客户为应用程序购买软件。PaaS服务的示例包括但不限于使组织(诸如Oracle)能够在共享的公共架构上整合现有应用程序的服务,以及构建利用平台提供的共享服务(诸如Oracle Java云服务(JCS)、Oracle数据库云服务(DBCS)以及其他服务)的新应用程序的能力。IaaS服务可以促进利用由SaaS平台和PaaS平台提供的服务的客户管理和控制底层计算资源,诸如存储、网络和其他基础计算资源。

图14是根据本公开的实施例的系统环境1400的一个或多个组件的简化框图,通过该系统环境1400由实施例系统的一个或多个组件提供的服务可以被提供为云服务。在所示实施例中,系统环境1400包括一个或多个客户端计算设备1404、1406和1408,用户可以使用该一个或多个客户端计算设备与提供云服务的云基础设施系统1402交互。客户端计算设备可以被配置为操作客户端应用程序,诸如网络浏览器、专有客户端应用程序(例如,OracleForms)或一些其他应用程序,客户端计算设备的用户可以使用客户端应用程序与云基础设施系统1402交互以使用云基础设施系统1402提供的服务。

应当理解,图中所描绘的云基础设施系统1402可以具有所描绘的那些组件以外的其他组件。此外,图中所示的实施例仅是可以结合本公开的实施例的云基础设施系统的一个示例。在一些其他实施例中,云基础设施系统1402可以具有比图中所示的更多或更少的组件,可以组合两个或更多个组件,或者可以具有不同的组件配置或布置。

客户端计算设备1404、1406和1408可以是与上面针对1202、1204、1206和1208描述的设备类似的设备。

尽管示例性系统环境1400被示为具有三个客户端计算设备,但是任何数量的客户端计算设备可以被支持。其他设备(诸如具有传感器的设备等)可以与云基础设施系统1402交互。

(一个或多个)网络1410可以促进客户端1404、1406和1408与云基础设施系统1402之间的通信和数据交换。每个网络可以是本领域技术人员熟悉的可支持使用多种可商用协议中的任何一种的数据通信的任何类型的网络,这些协议包括上面针对(一个或多个)网络1210描述的那些协议。

云基础设施系统1402可以包括一个或多个计算机和/或服务器,这些计算机和/或服务器可以包括上面针对服务器1212描述的那些。

在某些实施例中,云基础设施系统提供的服务可以包括按需提供给云基础设施系统的用户的大量服务,诸如在线数据存储和备份解决方案、基于网络的电子邮件服务、托管办公室套件和文档协作服务、数据库处理、受管理的技术支持服务等。云基础设施系统提供的服务可以动态缩放以满足其用户的需求。由云基础设施系统提供的服务的具体实例化在本文中被称为“服务实例”。通常,从云服务提供商的系统经由通信网络(诸如互联网)对用户可用的任何服务都被称为“云服务”。在公共云环境中,组成云服务提供商的系统的服务器和系统不同于客户自己的内部部署的服务器和系统。例如,云服务提供商的系统可以托管应用程序,并且用户可以经由诸如互联网之类的通信网络按需订购和使用应用程序。

在一些示例中,计算机网络云基础设施中的服务可以包括对存储装置、托管的数据库、托管的网络服务器、软件应用程序或由云供应商提供给用户的或如本领域以其他方式所已知的其他服务的受保护的计算机网络访问。例如,服务可以包括通过互联网对云上的远程存储装置进行受密码保护的访问。作为另一示例,服务可以包括基于网络服务的托管的关系数据库和供网络开发者专用的脚本语言中间件引擎。作为另一示例,服务可以包括对托管在云供应商网站上的电子邮件软件应用程序的访问。

在某些实施例中,云基础设施系统1402可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式交付给客户的一套应用程序、中间件和数据库服务产品。这样的云基础设施系统的示例是本受让人提供的Oracle公共云。

在各种实施例中,云基础设施系统1402可以适于自动供应、管理和跟踪客户对云基础设施系统1402提供的服务的订阅。云基础设施系统1402可以经由不同的部署模型提供云服务。例如,可以在公共云模型下提供服务,在该公共云模型中云基础设施系统1402由销售云服务的组织拥有(例如,由Oracle拥有)并且服务对一般公众或不同行业企业可用。作为另一示例,可以在私有云模型下提供服务,在该私有云模型中云基础设施系统1402仅针对单个组织被操作并且可以为组织内的一个或多个实体提供服务。还可以在社区云模型下提供云服务,在该社区云模型中云基础设施系统1402和由云基础设施系统1402提供的服务由相关社区中的若干组织共享。也可以在混合云模型下提供云服务,该混合云模型是两个或多个不同模型的组合。

在一些实施例中,由云基础设施系统1402提供的服务可以包括在软件即服务(SaaS)类别、平台即服务(PaaS)类别、基础设施即服务(IaaS)类别下提供的一个或多个服务,或包括混合服务的其他类别的服务。客户经由订阅订单可以订购由云基础设施系统1402提供的一项或多项服务。云基础设施系统1402然后执行处理以提供客户的订阅订单中的服务。

在一些实施例中,云基础设施系统1402提供的服务可以包括但不限于应用程序服务、平台服务和基础设施服务。在一些示例中,应用程序服务可以由云基础设施系统经由SaaS平台提供。SaaS平台可以被配置为提供属于SaaS类别的云服务。例如,SaaS平台可以提供在集成开发和部署平台上构建和交付一套按需的应用程序的能力。SaaS平台可以管理和控制用于提供SaaS服务的底层软件和基础设施。通过利用SaaS平台提供的服务,客户可以利用在云基础设施系统上执行的应用程序。客户可以获得应用程序服务,而不需要客户购买单独的许可和支持。可以提供各种不同的SaaS服务。示例包括但不限于为大型组织提供销售业绩管理、企业集成和业务灵活性的解决方案的服务。

在一些实施例中,平台服务可以由云基础设施系统经由PaaS平台提供。PaaS平台可以被配置为提供属于PaaS类别的云服务。平台服务的示例可以包括但不限于使组织(诸如Oracle)能够在共享的公共架构上整合现有应用程序的服务,以及构建利用平台提供的共享服务的新应用程序的能力。PaaS平台可以管理和控制用于提供PaaS服务的底层软件和基础设施。客户可以获得云基础设施系统提供的PaaS服务,而不需要客户购买单独的许可和支持。平台服务的示例包括但不限于Oracle Java云服务(JCS)、Oracle数据库云服务(DBCS)及其他。

通过利用PaaS平台提供的服务,客户可以采用云基础设施系统支持的编程语言和工具,并且还可以控制部署的服务。在一些实施例中,云基础设施系统提供的平台服务可以包括数据库云服务、中间件云服务(例如,Oracle Fusion中间件服务)和Java云服务。在一个实施例中,数据库云服务可以支持共享服务部署模型,该模型使组织能够汇集数据库资源并以数据库云的形式向客户提供数据库即服务。在云基础设施系统中,中间件云服务可以为客户提供平台以开发和部署各种业务应用程序,并且Java云服务可以为客户提供平台以部署Java应用程序。

各种不同的基础设施服务可以由云基础设施系统中的IaaS平台提供。基础设施服务促进利用SaaS平台和PaaS平台提供的服务的客户对底层计算资源(诸如存储、网络和其他基础计算资源)的管理和控制。

在某些实施例中,云基础设施系统1402还可以包括基础设施资源1430,用于提供用于向云基础设施系统的客户提供各种服务的资源。在一个实施例中,基础设施资源1430可以包括硬件(诸如服务器、存储装置和联网资源)的预集成和优化的组合,以执行由PaaS平台和SaaS平台提供的服务。

在一些实施例中,云基础设施系统1402中的资源可以由多个用户共享并且按需求动态地重新分配。附加地,资源可以被分配给不同时区中的用户。例如,云基础设施系统1430可以使第一时区中的第一组用户能够利用云基础设施系统的资源指定的小时数,然后使相同的资源能够重新分配给位于不同时区中的另一组用户,从而最大化对资源的利用。

在某些实施例中,可以提供由云基础设施系统1402的不同组件或模块以及由云基础设施系统1402提供的服务共享的多个内部共享服务1432。这些内部共享服务可以包括但不限于安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。

在某些实施例中,云基础设施系统1402可以提供对云基础设施系统中的云服务(例如,SaaS、PaaS和IaaS服务)的综合管理。在一个实施例中,云管理功能可以包括用于供应、管理和跟踪由云基础设施系统1402接收的客户的订阅的能力等。

在一个实施例中,如图中所描绘的,云管理功能可以由一个或多个模块(诸如订单管理模块1420、订单编排模块1422、订单供应模块1424、订单管理和监控模块1426、和身份管理模块1428)提供。这些模块可以包括一个或多个计算机和/或服务器或使用一个或多个计算机和/或服务器来提供,该一个或多个计算机和/或服务器可以是通用计算机、专用服务器计算机、服务器场、服务器集群或任何其他适当的布置和/或组合。

在示例性操作1434中,使用诸如客户端设备1404、1406或1408之类的客户端设备的客户可以通过请求由云基础设施系统1402提供的一个或多个服务并下订单订阅由云基础设施系统1402提供的一个或多个服务来与云基础设施系统1402交互。在某些实施例中,客户可以访问云用户接口(UI),云UI 1412、云UI 1414和/或云UI1416,并经由这些UI下订阅订单。响应于客户下订单而由云基础设施系统1402接收的订单信息可以包括识别客户和客户旨在订阅的由云基础设施系统1402提供的一个或多个服务的信息。

在客户已经下订单之后,订单信息经由云UI 1412、1414和/或1416被接收。

在操作1436处,订单被存储在订单数据库1418中。订单数据库1418可以是由云基础设施系统1418操作并结合其他系统元素操作的若干数据库之一。

在操作1438处,订单信息被转发到订单管理模块1420。在一些情况下,订单管理模块1420可以被配置为执行与订单相关的计费和记账功能,诸如验证订单,并且在验证后,预订订单。

在操作1440处,关于订单的信息被传送到订单编排模块1422。订单编排模块1422可以利用订单信息来编排用于客户下的订单的服务和资源的供应。在一些情况下,订单编排模块1422可以编排资源的供应以使用订单供应模块1424的服务来支持订阅的服务。

在某些实施例中,订单编排模块1422使得能够管理与每个订单相关联的业务过程并应用业务逻辑来确定订单是否应该进行供应。在操作1442处,在接收到新订阅的订单时,订单编排模块1422向订单供应模块1424发送请求以分配资源并配置满足订阅订单所需的那些资源。订单供应模块1424使得能够为客户订购的服务分配资源。订单供应模块1424在由云基础设施系统1400提供的云服务与用于供应资源以提供所请求的服务的物理实现层之间提供抽象级别。订单编排模块1422因此可以与实现细节隔离,实现细节诸如服务和资源实际是被即时供应还是被预先供应并且仅在请求时才被分配/指派。

在操作1444处,一旦服务和资源被供应,所提供的服务的通知就可以由云基础设施系统1402的订单供应模块1424发送到客户端设备1404、1406和/或1408上的客户。在操作1446处,客户的订阅订单可以由订单管理和监控模块1426管理和跟踪。在一些情况下,订单管理和监控模块1426可以被配置为收集订阅订单中的服务的使用统计信息,诸如使用的存储装置的量、传输的数据量、用户数量以及系统运行时间和系统停机时间的量。

在某些实施例中,云基础设施系统1400可以包括身份管理模块1428。身份管理模块1428可以被配置为提供身份服务,诸如云基础设施系统1400中的访问管理和授权服务。在一些实施例中,身份管理模块1428可以控制关于希望利用云基础设施系统1402提供的服务的客户的信息。这样的信息可以包括认证这样的客户的身份的信息和描述那些客户被授权相对于各种系统资源(例如,文件、目录、应用程序、通信端口、存储器段等)执行哪些动作的信息。身份管理模块1428还可以包括对关于每个客户以及关于可以如何以及由谁访问和修改该描述性信息的描述性信息的管理。

尽管本公开的具体实施例已被描述,但是各种修改、改变、替代构造和等价物也包含在本公开的范围内。本公开的实施例不限于某些具体数据处理环境内的操作,而是可以在多个数据处理环境内自由操作。附加地,尽管已经使用特定系列的事务和步骤描述了本公开的实施例,但是本领域技术人员应该清楚本公开的范围不限于所描述的事务和步骤系列。上述实施例的各种特征和方面可以单独或联合使用。

此外,虽然本公开的实施例已经使用硬件和软件的特定组合被描述,但是应当认识到硬件和软件的其他组合也在本公开的范围内。本公开的实施例可以仅以硬件、或仅以软件、或使用其组合来实现。本文描述的各种过程可以在相同处理器或不同处理器上以任何组合实现。因此,在组件或模块被描述为被配置为执行某些操作的情况下,这样的配置可以通过例如设计电子电路以执行操作、通过对可编程电子电路(诸如微处理器)进行编程以执行操作或其任何组合来实现。过程可以使用多种技术进行通信,这些技术包括但不限于用于过程间通信的常规技术,并且不同的过程对可以使用不同的技术,或者相同过程对可以在不同的时间使用不同的技术。

因此,说明书和附图被认为是说明性的而不是限制性的。然而,将明显的是,在不背离权利要求所阐述的更广泛精神和范围的情况下,可以对其做出添加、减少、删除以及其他修改和变更。因此,尽管具体的公开实施例已被描述,但这些并不旨在进行限制。各种修改和等价物都在以下权利要求的范围内。修改包括所公开的特征的任何相关组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号