首页> 中国专利> 用于基于云的服务交换的实时配置和管理的互连平台

用于基于云的服务交换的实时配置和管理的互连平台

摘要

在一个示例中,基于云的服务交换,包括:多个互连资产,被配置为将基于云的服务交换的客户连接到一或多个云服务提供商,该多个互连资产包括虚拟电路,客户通过该虚拟电路访问来自一或多个云服务提供商的云服务;以及编排引擎,被配置为修改所述多个互连资产。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-08-09

    授权

    授权

  • 2017-03-22

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20151030

    实质审查的生效

  • 2017-02-22

    公开

    公开

说明书

相关申请的引证

本申请要求在2014年10月30日提交的美国临时专利申请号62/072,976;在2015年9月28日提交的美国临时专利申请号62/233,933;在2015年10月29日提交的美国专利申请号14/927,451的权益,上述专利申请各自的全部内容通过引用结合于此。

技术领域

本发明涉及计算机网络,并且更具体地,涉及有利于在云服务客户和云服务提供商者之间互连互通的平台。

背景技术

云计算是指可经由诸如互联网的网络访问的动态可扩展计算资源的使用。往往被称为“云”的计算资源向用户提供一或多个服务。这些服务可根据服务类型来分类,服务类型可包括例如应用/软件、平台、基础设施、虚拟化以及服务器和数据存储。服务类型的名称通常在短语“as-a-service”之前,使得作为示例的应用/软件和基础设施的交付可被分别称为软件即服务(SaaS)和基础设施即服务(IaaS)。

术语“基于云的服务”或者更简单地,“云服务”不仅指由云提供的服务,而且还指云客户与云服务提供商针对在线交付由云提供的服务而签约的服务提供的形式。云服务提供商管理公共、专用或混合云,以有利于向一或多个云客户在线交付云服务。

发明内容

本公开大体描述用于动态配置和管理基于云的服务交换或“云交换”、以有利于从多个云服务提供商至一或多个云客户的云服务交付的虚拟连接的互连平台。云交换可允许云客户绕过公共互联网以直接连接到云服务提供商,以便提高性能、降低成本、增加连接的安全性和保密性并利用另外应用的云计算。这样,例如,企业、网络运营商和SaaS客户可将云服务与其内部应用集成,就好像此类服务是其自己的数据中心网络的一部分或以其它方式直接耦合到它们自己的数据中心网络。

在一些示例中,用于云交换的互连平台暴露一组软件接口,其在本文中也被称为应用程序编程接口(API)并根据该应用程序编程接口(API)来描述,其允许以可编程的方式访问互连平台的性能并评估该互连平台。因此,软件接口提供可扩展框架,其允许与交换的客户和合作伙伴相关联的软件开发者构建访问互连平台的软件应用,该软件应用自动地管理参与互连平台的多个云服务提供商的互连。换句话说,来自网络服务提供商、云服务提供商、托管服务提供商和其它企业的开发者可使用由互连平台暴露并由API定义的软件接口来构建用于和互连平台无缝互连以有利于从云服务提供商至云服务客户的云服务交付的定制应用和框架。

由API定义的这些软件接口允许接近实时的互连设置和更改的机器对机器通信,并且也可消除或减少整个互连设置和管理过程的人机交互的需要。这样,软件接口提供建立、卸载和管理与参与互连平台的多个云提供商的互连的自动化和无缝方式。

在一个示例中,互连平台包括内部编排引擎,其组织、命令和集成用于管理云交换的互连的各个方面的底层软件和网络子系统。编排引擎可例如提供在API和交换的底层互连平台之间运行的规则驱动工作流引擎。这样,编排引擎可被用于在云交换的互连平台内直接参与的客户专用应用和API使用。

如本文所述,编排引擎合成信息和动作以针对客户应用做出的动态请求制定智能下一步骤和做出响应。因此,编排引擎通过提供访问互连平台的一致的、简化和安全的方式来提取云交换的底层软件和网络子系统的复杂性。

在一些示例中,基于云的服务交换包括网络数据中心,其包括相应的端口,多个网络通过该端口连接到网络数据中心,每一网络具有不同的网络地址空间并与多个客户或云服务提供商中的不同客户或云提供商相关联;在网络数据中心内的多个互连资产,其被配置成通过该网络数据中心的交换结构将与基于云的服务交换的多个客户相关联的每个网络连接到与云服务提供商相关联的一或多个网络,多个互连资产包括用于与多个客户相关联的每个网络的一组相应的一或多个虚拟电路并提供在与多个客户相关联的网络和从多个云服务提供商相关联的网络内执行的云服务之间的网络数据中心内的网络连通性;以及在网络数据中心内的一或多个管理装置上执行并呈现软件接口的互连平台,该软件接口可由与多个客户相关联的网络可达并且被配置成响应于接收到由在与客户相关联的任一网络内执行的应用发出的请求,访问多个互连资产以满足该请求。

在一些示例中,基于云的服务交换包括多个互连资产,被配置成将基于云的服务交换的客户连接到一或多个云服务提供商,该多个互连资产包括虚拟电路,客户通过该虚拟电路访问来自一或多个云服务提供商的云服务;以及编排引擎,被配置成更改多个互连资产。

在一些示例中,方法包括由在网络数据中心内的一或多个管理装置上的基于云的服务交换执行互连平台以呈现与多个客户相关联的网络可达的软件接口;并且响应于接收到由在与客户相关联的任一网络内执行的应用发出的请求,访问网络数据中心的多个互连资产以满足该请求,其中,该网络数据中心包括相应的端口,多个网络通过该端口连接到该网络数据中心,每个网络具有不同的网络地址空间并与多个客户或云服务提供商中的不同客户或云服务提供商相关联,并且其中,网络数据中心内的多个互连资产通过该网络数据中心的交换结构将与基于云的服务交换的多个客户相关联的每个网络连接到与云服务提供商相关联的一或多个网络,多个互连资产包括用于与多个客户相关联的每个网络的一组相应一或多个虚拟电路并提供在与多个客户相关联的网络和从多个云服务提供商相关联的网络内执行的云服务之间的网络数据中心内的网络连通性。

本发明的一或多个实施例的细节在附图和下面的具体实施方式中阐述。本发明的其它特征、目标和优点通过说明书和附图以及权利要求将是显而易见的。

附图说明

图1A为示出提供基于云的服务交换的操作环境的数据中心的高级视图的框图。

图1B为示出根据本文所述的一些示例实施方案的基于云的服务交换的框图。

图1C示出基于云的服务交换的另一示例实施方案。

图1D为示出根据本公开的技术,由互连平台管理的云交换的多个云交换点提供在地理上分布的运营商之间的交叉连接可用性的示例的框图。

图2为示出根据本文所述的技术的用于云交换的示例架构的细节的框图。

图3A至图3B描绘根据本文所述的技术的用于互连软件接口的流程图。

图4为示出根据在本公开中所述的技术的用于云交换的互连平台103的替代表示的框图。

图5至图11中的每个为示出如在本公开中描述的由用于云交换的互连平台的示例组件执行的调用流程和操作的流程图。

图12为示出根据本公开的一或多个技术运行的计算装置的一个示例的进一步细节的框图。

图13为示出进一步详细示出根据本文所述的技术的编排引擎的逻辑架构的示例系统的框图。

图14为示出进一步详细示出根据本文所述的技术的编排引擎的参考架构的示例系统的框图。

图15为示例根据本公开的示例方面的由编排引擎执行的示例工作流的流程图。

图16为示出根据本公开的示例方面的关于形成虚拟电路的示例编排引擎工作流的示例逻辑示意图。

图17为示出根据本公开的示例方面的关于获得员工工资信息的示例编排引擎工作流的示例逻辑示意图。

图18A至图18B为示出根据在本公开中描述的技术的示例网络架构和由用于云交换的可编程网络平台提供的服务的框图,其中,该云交换聚合多个云服务提供商向云交换提供商的客户提供的云服务并聚合多个客户对一或多个云服务提供商的访问。

图19为示出根据本文所述的技术的基于数据中心的云交换点的示例的框图,其中,该云交换点的路由器被互连平台配置有用于从多个云服务提供商网络向客户网络路由和转发聚合服务业务的虚拟专用网络路由和转发实例。

图20为示出根据在本公开中描述的技术的开发框架的逻辑视图的概念图。

图21为进一步详细示出根据在本公开中描述的技术的用于有利于构架构建、构建、测试和部署基于微服务的应用的开发框架的组件的框图。

图22为示出使用在本公开中描述的开发框架和技术,根据基于微服务的应用架构的用于开发应用的示例开发过程的流程图。

图23为示出根据在本公开中描述的技术,由开发框架执行并通过编排和微服务定义执行的开发框架项目的组件和端对端构架构建过程的概念图。

图24至图26描绘根据本文所述的技术的用于开发框架的示例界面和输入/输出。

图27为描绘根据在本公开中描述的技术的使用开发框架进行开发的基于云的服务交换的互连平台的组件的框图。

图28为示出根据本公开的一或多个技术运行的计算装置的一个示例的进一步细节的框图。

相同的附图字符代表整个附图和文本中的相同元件。

具体实施方式

本公开大体描述了用于基于云的服务交换(“云交换”)的实时配置和管理的互连平台。如本文所述,互连平台向交换客户例如企业、网络运营商和SaaS客户提供至全球的多个云服务提供商(CSP)的安全、专用、虚拟连接。多个CSP借助于他们在云交换中具有至少一个可访问端口来参与云交换,通过这些端口,客户可以分别连接至由CSP提供的一或多个云服务。

根据本文所述的各种示例,描述了云交换,其允许任何客户的专用网络在公共点直接交叉连接到任何其它客户,从而允许客户的网络之间的网络业务的直接交换。客户可包括网络运营商(或网络服务提供商)、企业和由一个或多个云服务提供商所提供的云服务的其他用户。

图1A为示出提供基于云的服务交换100的操作环境的数据中心101的高级视图的框图。基于云的服务交换100(“云交换100”)允许客户网络104D、104E和任何运营商106A至106C(统称为“运营商106”)的运营商网络104A至104C(统称为“专用网络104”)或包括客户107A、107B的其它云客户中的对应一个经由虚拟层2(L2)或层3(L3)连接直接交叉连接到任何其它客户网络和/或云服务提供商110A至110N(统称为“CSP110”)中的任一者,从而允许客户网络和CSP 110之间的网络业务的直接交换。

运营商106各自可以表示与传输网络相关联的网络服务提供商,运营商106的网络用户通过该传输网络经由云交换100可访问由CSP 110提供的云服务。一般来说,CSP 110的客户可包括网络运营商、大型企业、托管的服务提供商(MSPS)以及软件即服务(SaaS)、平台即服务(PaaS)、基础设施即服务(IaaS)、虚拟化即服务(VaaS)和数据存储即服务(dSaaS)的CSP 110经由云交换100所提供的此类基于云的服务的客户。

这样,云交换100以透明和中立的方式精简和简化合作CSP 110和客户(经由运营商106或直接)的过程。云交换100的一个示例应用为共址和互连数据中心,CSP 110和运营商106和/或客户107可在此共址和互连数据中心中有网络存在,诸如通过具有可用于数据中心内的互连的一或多个可访问端口。这允许参与的运营商、客户和CSP在相同设施中具有范围广泛的互连互通选项。数据中心101的云交换100包括提供L2/L3交换结构的网络基础设施122,CSP 110和客户/运营商通过该交换结构互连。这使得运营商/客户能够具有创建只能一次性连接到云交换100的交换结构和下层互连平台103的多对多互连的选项。换句话说,代替必须建立跨传输网络以访问不同云服务提供商或一或多个云服务提供商的不同云服务的独立连接,云交换100允许客户使用数据中心101内的网络基础设施122在多个CSP和云服务之间互连。

通过被连接到并利用云交换100,客户可以购买服务并联系在许多不同的地理区域中的许多终端用户,而不会引起通常与安装和维护与多个CSP 110的多个虚拟连接相关联的相同费用。例如,运营商106A可以使用运营商106D的网络104D来扩展其服务。通过连接到云交换100,运营商106可能够通过向其它运营商提供其网络服务来产生额外的收入。例如,运营商106D可以向其它运营商提供使用运营商网络104D的机会。

在本文所述的一些示例实施方案中,云交换100包括暴露软件接口集合的互连平台103,该软件接口在这里也被称为应用程序编程接口(API)114,因为API 114定义方法、字段和/或其它软件原语,应用可以通过其调用互连平台103。软件接口允许运营商106和客户107可编程地访问云交换100的能力和资产。

在买方侧,由底层互连平台呈现的软件接口提供可扩展的框架,其允许与云交换100的客户相关联的软件开发者创建允许和利用对互连平台的访问的软件应用,通过该互连平台,应用可请求云交换建立至由CSP 110中的任一者所提供的云服务的连接。例如,这些买方软件接口(或API 114的“买方API”)可允许NSP和企业客户的客户应用,例如获得客户访问云交换的授权、获得关于可用云服务的信息、获得有效端口和城域详细信息、创建访问云服务的不同带宽的虚拟电路(包括基于购买的云服务的带宽动态选择,为云服务提供商创建按需和基于需求的虚拟电路)、删除虚拟电路、获得有效虚拟电路信息、获得与云交换提供商合作的周围CSP的详细信息、获得定制的分析数据并验证合作伙伴对互连资产的访问。

在云提供商(卖方)侧,软件接口可允许与云提供商相关联的软件开发者管理他们的云服务并且使客户能够连接到他们的云服务。例如,这些卖方侧软件接口(或API 114的“卖方API”)可允许云提供商应用获得访问云交换的授权、获得关于可用云服务的信息、获得提供商的有效端口和城域详细信息、获得在供应商的给定数据中心中的有效端口详细信息、批准或拒绝由客户创建的改变访问云服务的带宽的虚拟电路、获得等待添加的虚拟电路并确认虚拟电路的添加、获得等待删除的虚拟电路并确认虚拟电路的删除、获得定制的分析数据并验证合作伙伴对互连资产的访问。

如本文进一步所述,API 114有利于机器对机器通信以实现用于互连客户和提供商网络的云交换中的虚拟电路的动态分配。这样,互连平台103实现云服务调配的各方面的自动化。例如,软件接口可为客户提供自动化和无缝的方式来建立、卸载和管理与参与云交换的多个不同云提供商的互连。

在一些示例中,云交换100包括API网关112,其具有执行一或多个应用的一或多个处理器,该一或多个应用暴露根据API 114定义的软件接口。应用可调用对应于API 114的端点的服务,并且服务本身可调用编排引擎118的云交换平台服务。API网关112可在诸如数据中心101的一或多个虚拟机和/或真实服务器的管理装置上执行。尽管在图1A中被示为单个元件,但是API网关112可包括在一或多个物理处理器上执行的一或多个物理和/或虚拟计算机器的集群。

在一些示例中,云交换包括组织、命令和集成底层软件子系统120的用于管理网络基础设施122内的互连的各个方面以及云服务管理的编排引擎118。编排引擎118例如可提供在API 114和包括子系统120和网络基础设施122的云交换100的底层互连平台之间运行的规则驱动工作流引擎。这样,编排引擎118可以被客户专用应用和API 114用来直接参与云交换100的互连平台103。换句话说,编排引擎118提供具有各种应用引擎或工作流的“云交换平台服务”来处理API网关112服务请求。

子系统120和编排引擎118可各自为集中式或分布式应用,并且可在诸如数据中心101的一或多个虚拟机和/或真实服务器的管理装置上执行。

网络基础设施122表示云交换交换结构,并且包括可根据本文所述的技术通过调用API 114与虚拟电路动态互连的多个端口。每个端口与运营商106、客户107和CSP 110中的一个相关联。虚拟电路可指的是例如诸如第2层VPN或虚拟专用LAN(例如,E-LINE、E-LAN、E-TREE或E-Access)的以太网连接、基于互联网交换以及云交换的互连,其中,在基于互联网交换的互连中,互连客户的相应路由器直接对等并交换经由交换100所交换的服务业务的层3路由,其中,在云交换互连中,客户路由器对等交换100(或“提供商”)路由器而不是直接对等其他客户。下面参考图18A、18B和19提供云交换的示例细节。

对于在层3或更高层处的互连,客户107和运营商106可以经由层3对等和至交换100的物理连接直接地接收服务或经由运营商106之一间接地接收服务。运营商106通过在一或多个交换内保持物理存在以及聚合来自一或多个客户107的层3访问来提供“转接”。运营商106可在层3处直接对等一或多个交换,并且这样做提供间接层3连接并且对等一或多个客户107,客户107可据此从交换100获得服务。

图1B为示出根据本文所述的一些示例实施方案的基于云的服务交换100的框图。在该示例架构中,云交换100包括多个云交换点128A至128C(也被描述为“云交换点”并且统称为“云交换点128”),其可表示城域内的地理上分布的数据中心,其中,云交换100可以直接或间接(经由NSP 106)将云服务提供商110与访问云服务的云客户108互连。

由CSP 110、NSP 106和客户108开发和部署的应用130调用互连平台103的API 114以例如自动控制用于与一或多个云提供商/客户互连的方面的云交换100的调配和管理方面,包括:(1)互连调配、(2)运营商的识别和授权、(3)管理和履行订单、(4)交付网络服务、(5)管理库存和容量、(6)管理和报告/报警事件和(7)内容管理。

在该示例中,API 114包括端点116A至116K(统称为“端点116”),每个端点表示由互连平台103暴露的资源。端点的示例在下面关于图3A进一步详细地描述。应用130可根据客户端/服务器模型与API网关112交互。应用130可发送针对API 114的任何端点116的请求。API网关112响应于请求调用编排引擎118的云交换平台服务,编排引擎118可为底层子系统120编排服务任务的工作流以满足该请求。响应于该请求,例如,在工作流完成时,API网关112可以从被调用的端点116向请求应用130发送响应。

在一些示例中,API 114可符合表示性状态转移模型,即为RESTful接口,其中,端点116表示RESTful接口的不同方法。应用130可使用用于传送指定该方法的应用数据(例如,HTTP)的通信协议、资源统一资源标识符(URI)以及该方法的可选参数来调用任何端点116。API网关112将资源URI和可选参数转换为云交换平台相关构造,并且根据与由应用数据指定的端点116对应的创建、读取、更新和删除(CRUD)或确认动作中的一个来调用编排引擎118的云交换平台。例如,在HTTP用语中,创建动作对应于POST方法、读取对应于GET方法以及确认对应于PATCH方法。

子系统120可应用由编排引擎118编排的服务任务,其可包括更改任何云交换点128以执行例如CSP 110和客户108之间的虚拟电路的按需设置,或者以其它方式管理云交换点128互连资产,诸如端口、城市(metro)、数据中心、虚拟电路和虚拟电路带宽、配置文件和配置。

图1B的云交换100示出根据本文描述的技术提供多个云交换点的基于城市的云交换。基于云的服务交换100的每个基于云的服务交换点128A-128C可表示地理上位于相同的城市区域(“基于城市的”,例如在纽约州的纽约市;加利福尼亚州的硅谷;华盛顿州的西雅图-塔科马;明尼苏达州的明尼阿波利斯-圣保罗;英国的伦敦;等)内的不同的数据中心以提供弹性和独立的基于云的服务交换,基于云的服务客户(“云客户”)和基于云的服务提供商(“云提供商”)据此连接以分别接收和提供云服务。在各种示例中,云交换100可包括更多或更少的云交换点128。在一些情况下,云交换100仅包括一个云交换点128。如本文所使用,提及“云交换”或“基于云的服务交换”可指的是云交换点。云交换提供商可在多个不同的城市区域中部署云交换100的实例,云交换100的每个实例具有一或多个云交换点128。

云交换点128中的每者包括网络基础设施和云客户108A-108D(统称为“云客户108”)从多个云服务提供商110A-110N(统称为“云服务提供商110”)接收云服务的运行环境。云客户108可经由层3对等和与云交换点128之一的物理连接直接或者经由网络服务提供商106A-106B(统称为“NSP 106”或“运营商106”)之一间接接收云服务。NSP 106通过保持在一或多个交换点128内的物理存在以及聚合来自一或多个客户108的层3访问来提供“云转接”。NSP 106可以在层3处直接对等一或多个云交换点128,并且这样做提供间接层3连接和对一或多个客户108的对等,客户108可据此从云交换100获得云服务。在图1B的示例中,云交换点128中的每者可被指定不同的自主系统号(ASN)。例如,云交换点128A可被分配ASN1、云交换点128B可被分配ASN 2,等等。因此,每个云交换点128为从云服务提供商110至客户108的路径向量路由协议(例如,BGP)路径的下一跳。因此,尽管不是具有一或多个广域网链路和伴随的互联网接入和转接策略的转接网络,每个云交换点128可经由外部BGP(eBGP)或其它外部网关路由协议对等多个不同的自主系统,以便交换、聚合和路由从一或多个云服务提供商110至客户的服务业务。换句话说,云交换点128可内化云服务提供商110和客户108将保持成对的eBGP对等关系。相反,客户108可配置与云交换点128的eBGP对等关系并经由云交换从一或多个云服务提供商110接收多个云服务。而本文所述主要涉及云交换点和客户、NSP或云服务提供商网络之间的eBGP或其它层3路由协议的对等,云交换点可以其它方式,诸如通过静态配置或经由路由信息协议(RIP)、开放式最短路径优先(OSPF)、中间系统对中间系统(IS)或其它路由分配协议从这些网络学习路由。

在上面的示例中,客户108D被视为与云交换100的云交换供应商签约以经由云交换点128C、128D直接访问层3云服务。这样,客户108D例如接收至云服务提供商110A的冗余层3连接。相反,客户108C被示为已与云交换100的云交换提供商签约以经由云交换点128C直接访问层3云服务并且也被示为已与NSP 106B签约以经由NSP 106B的传输网络访问层3云服务。客户108B被示为已与多个NSP 106A、106B签约以经由NSP 106A、106B的各自传输网络冗余云访问云交换点128A、128B。通过NSP 106和云交换点128的交换装置内的L3对等配置和L3连接,例如,在云交换点128内建立的将云服务提供商110网络互连至NSP 106网络和客户108网络的层3虚拟电路,上述契约在云交换点128的网络基础设施中被实例化,所有这些使得至少一个端口提供在一或多个云交换点128内的连接。

对于层3的云服务,虚拟电路可表示在将客户网络连接至云交换点的附接电路和将云服务提供商网络连接至云交换点的附接电路之间的通过一或多个云交换点128的IP/MPLS结构的层3路径。每个虚拟电路可包括至少一个隧道(例如,LSP和/或通用路由封装(GRE)隧道),其在云交换点的提供商边缘/自主系统边界具有端点。

云交换点128可被配置成实现多个层3虚拟电路以使客户/NSP网络和云服务提供商网络与端对端IP路径互连。云服务提供商和客户/NSP中的每者可为多个虚拟电路的端点,其中,多个虚拟电路跨越一或多个云交换点128以连接各端点。云交换点的示例实施方案在下面参考图18A至图18B和图19更详细描述。

图1C示出基于云的服务交换的另一示例实施方案。在该示例中,云交换100为交叉连接运营商网络205、210、215、220提供高速附接电路208、213、218和223以及用于调配直接的虚拟电路150、155、160、165、170的路由和交换基础设施,该虚拟电路也被统称为互连平台。

如图1B的示例所示,云交换100暴露一组软件接口114,其在本文中也被称为应用程序编程接口(API),其允许客户系统196可编程地访问云交换100的互连平台103的能力和资产。也就是说,软件接口114提供可扩展的框架,其允许与云交换100的客户相关联的软件开发者可在允许和利用交换100的访问子系统120的客户系统196上执行的软件应用。交换100的下层子系统120可例如控制交换100的所有方面的调配和管理,包括:(1)调配客户系统196之间的互连、(2)运营商的识别和授权、(3)管理和履行订单、(4)交付网络服务、(5)管理库存和容量、(6)管理和报告/报警事件和(7)内容管理。

因此,云交换100的运营商106和其他客户,诸如网络服务提供商、云服务提供商、托管服务提供商和其它企业可利用由互连平台暴露的软件接口来管理它们与其它运营商的直接交叉连接。也就是说,在网络基础设施和位于不同运营商网络205、210、215和220内的调配/计费/结算/AAA系统之间的软件接口114支持机器对机器通信,如图1C中的虚线箭头所示,以用于运营商106建立和管理直接交叉连接。因此,软件接口114支持互连,例如图1C的虚拟电路的近似实时设置和更改,并且还可消除或减少对于整个互连建立和管理过程的人机交互的需要。这样,软件接口为运营商106提供建立、卸载和管理与参与互连平台103的多个不同客户的互连的自动化和无缝方式。

此外,如图1B的示例中进一步示出的,云交换100包括组织、指挥和集成用于管理由云交换100提供的互连服务的各个方面的底层软件和网络子系统120的内部编排引擎118。编排引擎118例如可提供在API 114和由云交换100的子系统120所提供的底层互连平台之间运行的规则驱动工作流引擎。这样,借助于直接参与云交换的互连平台的API 190,编排引擎118可以由在客户系统196上执行的客户专用应用来调用。

如本文所述,编排引擎118合成来自互连平台的底层子系统120的信息和动作,以针对客户应用制定智能的下一步骤和做出响应。因此,编排引擎118通过提供访问互连平台的一致的、简化和安全的方式来提取云交换100的底层软件和网络子系统120的复杂性。

图1D为示出根据本公开的技术,由互连平台管理的云交换100的多个云交换点提供在地理上分布的运营商之间的交叉连接可用性的示例的框图。尽管未示出,但是每个云交换点可以实现关于图1A-图1C的云交换100所述的示例技术,包括图1B的云交换点128。

图2为示出根据本文所述的技术的用于云交换的示例架构的细节的框图。如该示例所示,示例云交换100更详细地示出了API 114、内部编排引擎118和子系统120。

开发者社区300示出可开发使用API 114来访问云交换100的互连平台的应用的实体。这些实体包括网络服务提供商300A、托管服务提供商300B、企业300C、云服务提供商300D、第三方开发者300E和其他300F。由这些实体开发的应用利用云交换100作为互连平台,其根据各种实体的策略和配置文件将客户互连至由云服务提供商所提供的云服务。

在该示例中,API 114根据功能包括各种API方法或端点的束。发现API 304A可用于执行位置发现、资产发现和云服务发现的可用性。可发现信息可包括可用的城域、数据中心、端口、服务、虚拟电路和客户可通过其获得或管理云服务的其它互连资产。例如,事务API 304B可用于通过机器对机器的交互动态地调配变化带宽的端到端虚拟电路、验证客户所请求的虚拟电路以及确认虚拟电路的删除。例如,使用API 304C可用于允许提供商和客户动态获得由云交换100的推荐引擎执行的推荐信息、获得关于竞争者存在、云服务存在/可用性和客户存在/可用性的定制分析、获得使用统计并管理内容。例如,支持API 304D可由客户或提供商用来管理帐户、执行自动化的计费/开票、验证信用并为实体配置配置文件和配置信息。

在该示例中,编排引擎118(被示为“互连编排引擎118”)组织、指挥和集成用于管理互连的各个方面的底层软件和网络子系统120。例如,通过与诸如客户账户和配置文件管理系统、客户资产管理系统、库存管理系统、容量管理系统、网络系统、信用管理系统、内容管理系统和故障单管理系统(未全部在图2中示出)等无数的互连启用子系统120通信,编排引擎118可处理用于调配互连资产的整个报价到现金的循环。为此,编排引擎118包括工作流和规则引擎306,其根据所配置的交换策略308A、配置文件308B和配置308C来响应操作以合成来自子系统120的信息和动作,以针对经由API 114所接收到的请求制定智能的下一步骤和做出响应。微服务组件308D组合多种互连服务,并且在一些情况下全部互连服务,以提高水平可扩展性、性能效率和低到零的停机时间特征升级和增强。这样,编排引擎118可提取通过提供统一、简化和安全的方式来访问互连平台以访问和管理互连资产的底层软件和子系统120的复杂性。

在图2的示例中由编排引擎118编排的子系统120包括身份(ID)和访问管理系统310A。在一些示例中,ID和访问管理系统310A包括容纳客户、资产和许可分层结构的许可数据存储(PDS)。ID和访问管理系统310A可使用生成安全断言标记语言(SAML)断言并且还能够提供单点登录(SSO)能力的第三方系统来完成联合。

编排引擎118可编排多个订单管理系统310B(例如,针对诸如亚太地区、欧洲、中东和非洲以及北美洲的不同地区)。编排引擎118将相关的虚拟电路订单创建信息传递到这些订单管理系统310B,使得可以对合作伙伴进行计费。编排引擎118可通过与网络服务系统310C无缝集成以与底层网络系统交互来提取底层网络系统的复杂性。编排引擎118可结合许可数据存储来利用资产库存和容量管理系统310D以获得关于客户端口库存的信息。编排引擎118可利用该信息将虚拟电路请求置于适当的端口。资产库存和容量管理系统310D可被用于在调配虚拟电路之前评估每个端口上的可用带宽。

编排引擎118接受来自合作伙伴和客户的事件请求,并与底层事件管理系统310E通信以提高服务票据。编排引擎118与内容管理系统310F通信,以例如基于客户的语言偏好为客户呈现国际化和本地化的内容。内容管理系统310F有助于透明传递在网络门户、移动装置上或在经由API 114的机器对机器通信中显示的所有标签、错误消息、成功消息和响应。

图3A–图3B描绘根据本文所述的技术的用于互连软件接口的流程图。在该示例中,API网关403暴露具有多个端点406A-406L(统称为“端点406”)的API 114,API消费者402可通过这些端点来管理云交换互连。API网关403继而调用编排引擎407的云服务平台,编排引擎407通过云交换API服务409来编排图3A-图3B中表示的服务任务的工作流。API网关403可表示图1A-1D的API网关112的示例实例,编排引擎407可表示图1A-图1D的编排网关118的示例实例,以及图1-图2的子系统120可提供云交换API服务409。

API消费者402可包括买方应用402A和卖方应用402B,以及可开发此类应用的API开发者402C。API网关403包括促进API网关403的操作的多个客户适配器404。定制适配器404包括安全性404A、API密钥验证404B、变换404C、高速缓存404D、威胁保护404E、尖峰阻滞404F、定制分析404G和HTTP标注(callout)404H。

端点406表示API消费者402可访问的可用逻辑和/或物理资源。也就是说,API消费者406可访问端点406以访问云交换的互连平台,以获得关于云交换的相应资源创建、更改、删除和/或确认请求的信息。端点406可表示图1B-图1C的端点116的示例实例。

在该示例中,端点406包括登录406A、端口406B、城市406C、资产406D、虚拟电路406E、云服务406F、服务配置文件406G、分析406H、流量统计406I、带宽406J、服务票据406K和推荐406L。通常,API消费者406可使用相应的方法调用任何端点406,以及在一些情况下调用确定互连平台如何执行该方法的参数。

端点406可表示RESTful接口的不同方法。API消费者402可使用用于传送指定该方法的应用数据(例如HTTP)的通信协议、URI以及该方法的可选参数来调用任何端点406。API网关403将用于端点406的资源URI和可选参数转换为云交换平台相关的构造,并且根据与由应用数据指定的端点406相对应的创建、读取、更新、删除或确认动作中的一者调用编排引擎407的云交换平台。

API-示例

以下部分包含用于云交换100的API 114的所选端点406的示例细节。API 114提供用于允许开发者访问互连平台以用于排序和查看虚拟电路的功能。该API功能包括获得关于登录406A、端口406B、虚拟电路406E、城市406C和云服务406F的信息并对其执行操作。

在一个示例中,API 114的端点406可以被分类为三个主要类别:

·基础API-这些API对买方和卖方都是常用的。

·买方API-这些是为企业、网络服务提供商(NSP)和托管服务提供商(MSP)用来建立与不同云服务提供商(CSP)所提供的云服务的连接的API。

·卖方API-这些API被CSP用来管理在云交换100处的他们的云服务,并使买方能够连接到他们的服务。

API被大致分为可以在不同资源上执行的操作。本部分还详细说明了需要作为每个请求的一部分所包含的公共请求标头,以及每个API响应返回的响应标头。此外,本部分还将描述在发生任何错误情况时作为API响应一部分所使用的HTTP状态和自定义错误代码。

下表示出API资源、各自的URI和每个资源上支持的操作的概述。API被分为三个主要部分:买方、卖方和基础API。本文中提及的XML是指可扩展标记语言,而JSON是指JavaScript对象符号。

基础API概述

买方API概述

卖方API概述

HTTP状态码

下面的表格列出可以被API 114所利用的示例HTTP状态码。存在在错误情形下返回的特定的错误码和消息,其连同适当的API规范来定义。

常用请求标头

下面的标头在所有API的请求中是必要的。

常用响应标头

下面的标头作为所有API响应的一部分被包含

错误响应语法

来自所有API的错误响应遵循下面所示的常用语法。

错误响应消息字段

错误

描述错误列表类型列表需要默认示例

状态

描述HTTP状态码类型字符串需要默认示例409

代码

描述内部ECX错误代码类型字符串需要默认示例40902

属性

消息

more_info

描述关于开发者门户的错误的更多信息。类型字符串默认示例https://api.developer.cloudexchange.com/docs/api/errors/40902需要

样本错误响应:

内容类型:应用/json

{

"errors":[

{

"code":40007,

"message":"Invalid Field Value",

"more_info":"The field value port_name already exists for the

specified profile name",

"property":"port_name",

"status":400

}

]

}

在一些示例中,开发者可能希望在调用API之前使用开发者平台来生成API消费者密钥和消费者秘密。

认证

开发者在调用任何API 114之前通过有效登录来获取访问令牌。详细参考描述登录406A的部分。

基础API

资源:访问令牌或登录406A。

描述:用于访问API 114的OAuth2.0令牌。

HTTP方法请求URIPOST/oauth2/v1/token

POST访问令牌

描述:本API处理认证和API开发者的认证。在认证成功时,返回作为响应的一部分的访问令牌。在尝试不成功时,返回错误消息。

请求

请求URI:POST http://<HostName>/ecx/v1/oauth/token

过滤器参数:

请求标头:

请求字段:

grant_type

描述OAuth授予操作。可接受的值:密码类型字符串需要默认示例client_credentials

user_name

user_password

描述登录密码类型字符串需要默认示例xxxxxxx

client_id

描述AP消费者密钥类型字符串需要默认示例QWERTY1234567afgaaaa

password_encoding

样本请求

POST http://<HostName>/ecx/v2/oauth/token

作为纯文本的密码:

用md5编码并然后用b64编码的密码:

响应:

响应字段:

access_token

token_timeout

描述访问令牌数秒的超时类型字符串需要默认示例3599

user_name

描述用户名类型字符串需要默认示例用户名

token_type

描述访问令牌的类型类型字符串需要默认Bearer示例Bearer

refresh_token

描述刷新可以被用于获得新访问令牌的令牌类型字符串需要默认示例QvJdZg7nMSTNYBfeDLgECpe5b9FvgWgdpZRwv4u0nZ

refresh_token_timeout

样本响应:

HTTP/1.1 200正常

API-Version:v1

内容类型:应用/json

接受:应用/json

响应的错误代码:

POST刷新令牌:描述:该API允许开发者刷新在60分钟内发出否则就超时的现有的OAuth令牌。有效刷新令牌是检索将作为响应的一部分所返回的新成功认证访问令牌所需的。

请求

请求URI:POST http://<HostName>/oauth2/v1/refreshaccesstoken过滤器参数:

请求标头:

请求字段:

grant_type

描述OAuth授予操作。可接受的值:刷新令牌。类型字符串需要默认示例密码

client_id

描述AP消费者密钥类型字符串需要默认示例QWERTY1234567afgaaaa

refresh_token

描述刷新令牌,可以被用于获得新访问令牌类型字符串需要默认示例5f752714hsdf07a3e41c2a3311f514e1

样本请求

POST http://<HostName>/oauth2/v1/refreshaccesstoken

Refresh Token

{

"grant_type":"refresh_token",

"client_id":"QWERTY1234567abcdefg",

"client_secret":"tstCLNT123scrt",

"refresh_token":"5f752714hsdf07a3e41c2a3311f514e1"

}

响应:

响应字段:

access_token

描述必须在HTTP标头中传递以访问所有API的访问令牌类型字符串需要默认示例HihiOtaY2JAT0QaTFaYYyzHOqqmb

token_timeout

描述访问令牌的超时秒数类型字符串需要默认示例3599(1hr)

user_name

描述用户名类型字符串需要默认示例用户名“adrew”

token_type

描述访问令牌的类型类型字符串需要默认Bearer示例Bearer

refresh_token

描述刷新令牌,可以被用于获得新访问令牌类型字符串需要默认示例QvJdZg7nMSTNYBfeDLgECpe5b9FvgWgdpZRwv4u0nZ

refresh_token_timeout

描述刷新令牌的超时秒数类型字符串需要默认示例86376

资源:城市

描述:提供云交换服务的城市。

HTTP方法请求URIGET/ecx/v1/metros

GET Metros:

描述:此GET操作的实施方案返回用户具有端口或云交换被启用的所有城市的列表。

请求

请求URI:GET http://<HostName>/ecx/v1/metros

过滤器参数:

cloud_exchange_enabled

Request Header:

标头属性描述授权需要。指定Oauth Bearer令牌

样本请求GET http://<HostName>/ecx/v1/metros?cloud_exchange_enable=true

响应:

响应字段:

metros

描述城市列表类型列表需要默认示例

name

描述城市名称类型字符串需要默认示例新加坡

code

描述城市代码类型字符串需要默认示例SG

样本响应:

内容类型:应用/json

响应的错误代码:

HTTP状态码错误代码错误描述40040001无效参数值40140102令牌过期。再次登录40140104无效访问令牌40140105用户并不具有足够的优先权来执行该操作406不可接受的415不受支持的媒体类型500内部服务器错误

资源:云服务

描述:在云交换100的云服务

GET Cloud Services

描述:此GET操作的实施方案在云服务交换100返回所有云服务的列表。

请求

请求URI:GET http://<HostName>/ecx/v1/cloudservices,

GET http://<HostName>/ecx/v1/cloudservices/{cloud_service_name}

过滤器参数:

请求标头:

标头属性描述授权需要。指定Oauth Bearer令牌

样本请求GET http://<HostName>/ecx/v1/cloudservices

响应:

响应字段:

cloud_services

描述云服务的列表类型列表需要默认示例

name

描述云服务名称类型字符串需要默认示例

metros

描述通过云服务来服务的城市的列表类型列表需要默认示例

name

code

描述城市代码类型字符串需要默认示例SG

ibxs

样本响应:

HTTP/1.1 200正常

内容类型:应用/json

响应的错误代码:

HTTP状态码错误代码错误描述40140102令牌过期。再次登录40140104无效访问令牌40140105用户无足够的优先权来执行该操作406不可接受的415不受支持的媒体类型500内部服务器错误

买方API

在本部分中,我们描述与买方相关的API。

资源:端口

描述:在云交换交换结构上的端口

GET Ports:

描述:本GET操作的实施方案返回由请求的验证卖方拥有的所有端口的列表。该端口可以被城市和IBX名称过滤。如果发现没有端口匹配该标准,则返回没有有效载荷的HTTP代码204响应。

请求

请求URI:

GET http://<HostName>/ecx/v1/ports?metro_code=SV&ibx_name=SV1

过滤器参数:

metro_code

ibx_name

Bandwidth

Encapsulation

描述端口的封装。类型字符串默认示例Dot1Q或Qinq(不区分大小写)需要

is_buyout

描述端口类型、标准端口或买断端口。类型字符串默认示例Y或N(不区分大小写)需要

Request Header

标头属性描述授权需要。指定Oauth Bearer令牌

样本请求

GET http://<HostName>/ecx/v1/ports?metro_code=SV&ibx=SV1

GET http://<HostName>/ecx/v1/ports?bandwidth=100

GET http://<HostName>/ecx/v1/ports?encapsulation=Dot1Q

GET http://<HostName>/ecx/v1/ports?is_buyout=Y

响应

响应字段:

ports

描述端口列表类型列表需要默认示例

name

描述端口名称类型字符串需要默认示例GSE_QA-R-EE-02

metro_code

描述端口所处的城市的代码类型字符串需要默认示例SV

metro_name

ibx_name

描述端口所处的IBX的名称类型字符串需要默认示例SV1

bandwidths

描述端口的带宽(滞后端口的值数组)类型阵列默认示例10G,10G需要

encapsulation

描述端口封装类型字符串默认示例dot1q或qinq需要

is_buyout

描述买断端口或标准端口类型字符串需要默认示例Y或N

cross_connect_ids

描述交叉连接序列号类型阵列需要默认示例11111111、23222

样本响应1:

HTTP/1.1 200正常

内容类型:应用/json

样本响应2:

HTTP/1.1 200正常

内容类型:应用/json

{"ports":[

{"bandwidth":"10G",

"bandwidths":[

"10G","10G"],

"cross_connect_ids":[

"123456"

"100000",],

"encapsulation":"Qinq",

"ibx_name":"SV3",

"is_buyout":"N",

"metro_code":"SV",

"metro_name":"BAYM",

"name":"QinqVirtualPort"

}

响应的错误代码:

HTTP状态码错误代码错误描述40040001无效参数值40140102令牌过期。再次登录40140104无效访问令牌406不可接受的415不受支持的媒体类型500内部服务器错误

资源:卖方服务

描述:在云交换的卖方服务

HTTP方法请求URI

GET/ecx/v1/sellerservices

/ecx/v1/sellerservices/{seller_service_name}

GET Seller Services

描述:本GET操作的实施方案返回在云交换的所有卖方服务的列表。

请求

请求URI:GET http://<HostName>/ecx/v1/sellerservices,

GET http://<HostName>/ecx/v1/sellerservices/{seller_service_name}

过滤器参数:过滤城市的结果。如果未包含该参数,则响应含有在云交换的所有卖方服务

样本请求

GET http://<HostName>/ecx/v1/sellerservices/{seller_service_name}

http://<HostName>/ecx/v1/sellerservices?metro_code=SV

响应:

响应字段:

seller_services

allow_custom_speed

availability_status:如在“在试用测试中”或可用于订单的服务配置文件的可用性状态。

encapsulation

require_redudancy

standard_speeds:当卖方不允许自定义速度时,与服务配置文件相关联的允许标准速度。

Seller service name

城市:由卖方服务的城市的列表。城市名称。城市代码。在城市中的IBX名称的列表。

样本响应:

HTTP/1.1200正常

内容类型:应用/json

资源:用户资产

描述:获取买方在给定城市位置拥有的集合的详细信息。

HTTP方法请求URI

GET/ecx/v1/assets

GETAssets

描述:买方的本GET操作的实施方案返回包括在给定城市中的端口和虚拟电路的买方资产的列表。

请求

请求URI:GET http://<HostName>/ecx/v1/assets

过滤器参数:

metro_code

描述过滤城市的结果。类型字符串需要默认示例SV

asset_type

请求标头:

标头属性描述

授权需要指定Oauth Bearer令牌

请求

GET http://<HostName>/ecx/v1/assets?metro_code=SV&asset_type=buyer

响应:

响应字段:

buyer_assets

seller_assets

ports

name

cross_connect_ids

metro_code

metro_name

ibx_name

Bandwidths

encapsulation

is_buyout

virtual_circuits

id虚拟电路的Id。这个ID是在虚拟电路API(如DELETE或GET虚拟电路)上执行操作所必需的

redundant_id

cross_connect_id[已弃用,而是指的是字段“Ports”.“cross_connect_ids”]

port_speed[已弃用,而是指的是字段‘Ports’.‘port_speeds’]

name

created_by

Email

created_date

seller_service_name

availability_status-如“在试用测试中”的服务配置文件的可用性状态

service_key

state

status

样本响应:

HTTP/1.1200正常

内容类型:应用/json

资源:虚拟电路

描述:虚拟电路

HTTP方法请求URIGET/ecx/v1/virtualcircuits/ecx/v1/virtualcircuits/{virtual_circuit_id}POST/ecx/v1/virtualcircuits

GET Virtual Circuits:

描述:本GET操作的实施方案返回由请求的验证的发送器拥有的所有虚拟电路的列表。如果发送器不具有虚拟电路,则返回没有有效载荷的HTTP代码204的响应。

请求

Request Header

标头属性描述授权需要。指定Oauth Bearer令牌

请求URI:/ecx/v1/virtualcircuits

过滤器参数

请求字段

样本请求

GET http://<HostName>/ecx/v1/virtualcircuits/{virtual_circuit_id}

响应

响应字段

id

描述虚拟电路ID类型字符串需要默认示例4D34239266A3952695956A

redundant_id

描述与冗余虚拟电路相关联的虚拟电路ID类型字符串需要默认示例4D34239266A3952695956B

name

描述虚拟电路的名称类型字符串需要默认示例Steve CSP_A测试VC-7

buyer_port

cross_connect_id

描述物理端口的Id类型字符串需要默认示例11111111

port_speed

描述端口的容量,例如,1G类型字符串需要默认示例1G

cloud_service_name

描述云服务名称类型字符串需要默认示例CSP_A_1

service_key

描述从云服务获得的服务密钥类型字符串需要默认示例xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

buyer_vlan

描述买方侧VLAN Id类型字符串需要默认示例2004.*

bandwidth

描述带宽类型字符串需要默认示例200MB

state

status

描述虚拟电路的状态类型字符串需要默认示例计费

created_date

created_by

描述创建虚拟电路的用户类型字符串需要默认示例tempuser1

Email

描述用户的电子邮件类型字符串需要默认示例test@cloudexchange.com

seller_port

描述卖方侧端口类型字符串需要默认示例GSE_QA-SJC-port-CIS-2-SEC-A

metro_code

描述该虚拟电路所处的城市的代码类型字符串需要默认示例SV

ibx_name

seller_service_name

描述虚拟电路的卖方服务配置文件的名称类型字符串需要默认示例直接连接

metadata

“key:value”

描述API用户可以在元数据对象中传递的密钥和关联值类型字符串需要默认示例

样本响应:

HTTP/1.1 200正常

内容类型:应用/json

响应的错误代码:

POST Virtual Circuits:

描述:创建虚拟电路。

请求

Request Header:

标头属性描述授权需要。指定Oauth Bearer令牌

请求URI:POST http://<hostname>/ecx/v1/virtualcircuits

过滤器参数

请求字段

metro_name

描述该虚拟电路所处的城市的名称类型字符串需要默认示例硅谷

metro_code

描述该虚拟电路所处的城市的代码类型字符串需要默认示例SV

cloud_service_name

seller_service_name

primary_vc_name

描述主虚拟电路名称类型字符串需要默认示例twtca93

primary_port_name

描述主买方端口名称类型字符串需要默认示例GSE_QA-SJC-06GMR-CIS-2-SEC-A

secondary_vc_name

描述次虚拟电路名称类型字符串需要默认示例twtca94

secondary_port_name

描述次买方端口名称类型字符串需要默认示例GSE_QA-SJC-06GMR-CIS-2-SEC-A

secondary_vlan_id

描述次买方VLAN Id类型字符串需要默认示例188

service_key

描述从云服务获得的服务密钥类型字符串需要默认示例xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

virtual_circuit_speed

描述虚拟电路的速度类型字符串需要默认示例200MB

email

描述用户的电子邮件类型字符串需要默认示例test@cloudexchange.com

其它示例字段可包括卖方服务提供商帐号、从卖方服务获得的数字授权密钥、边界网关协议配置号、到VPC的虚拟专用网关的id、买方对等ip(分配给买方/客户端接口的IP地址)、分配给卖方服务提供商接口的IP地址、用户的电子邮件、元数据(如上所述)、密钥(这个密钥,API用户在VC创建期间在元数据对象中传递的关联值)以及虚拟电路的速度。

样本请求

POST http://<HostName>/ecx/v1/virtualcircuits

授权:Bearer<accessToken>

接受:应用/xml或应用/json

响应

响应字段:

result

描述指示操作是否成功的结果。有效值为成功和错误类型字符串需要默认示例成功

message

描述成功消息类型字符串需要默认示例您的虚拟电路请求是成功的

其它示例字段可包括“更多信息”、主虚拟电路id、次虚拟电路id。

样本响应:

HTTP/1.1 201创建

位置:4D34239266A3952695956A

响应的错误代码:

在一些示例中,可提供用于删除虚拟电路的API。DELETE操作将移除所提供的虚拟电路,如果操作是成功的,则返回HTTP代码200的响应。如果虚拟电路属于某些卖方服务提供商,这些卖方服务提供商将必须确认虚拟电路的删除。

样本请求

DELETE http://<HostName>/ecx/v1/virtualcircuits/{virtual_circuit_id}

样本响应:

HTTP/1.1 200删除

{

"result":"SUCCESS"

"message":"Your Virtual Circuit has been deleted successfully."

"more_info":""

}

在一些示例中,可提供用于PATCH启用连接的API。如果在启用买方连接请求之前,卖方需要另外的认证步骤,则PATCH操作的该实施方案让用户启用虚拟电路。

样本响应:

HTTP/1.1 201创建

{

"result":"SUCCESS",

"message":"Connection enabling request successful"

"more_info":""

在一些示例中,提供用于由卖方在云交换中创建的卖方服务配置文件的API。需要云交换卖方来定义和建立他们连接至他们的卖方服务的服务配置文件。卖方可以创建他们所提供的每个独立服务的配置文件。

在一些示例中,GET操作的“GET虚拟电路有效载荷元数据”实施方案返回针对给定卖方服务配置文件创建虚拟电路所需的有效载荷元数据。

样本请求

GET http://<HostName>/ecx/v1/sellerserviceprofiles/CloudSigmaProfile/metadata

样本响应:

HTTP/1.1 200正常

内容类型:应用/json

卖方API

资源:端口

描述:在云交换交换结构上的端口

GET Ports:

描述:本GET操作的实施方案返回由请求的验证卖方拥有的所有端口的列表。该端口可以通过城市和IBX名称过滤。如果发现没有端口匹配该标准,则返回没有有效载荷的HTTP 204响应。

请求

请求URI:

GET http://<HostName>/ecx/v1/ports?metro_code=SV&ibx_name=SV1

过滤器参数:

metro_code

ibx_name

bandwidth

端口的带宽。如果未提供带宽,则返回具有任何带宽容量的端口。

Request Header:

标头属性描述授权需要。指定OAuth Bearer令牌

样本请求:

GET http://<HostName>/ecx/v1/ports?metro_code=SV&ibx=SV1

响应

响应字段:

ports

描述端口列表。类型列表需要默认示例

name

描述端口名称类型字符串需要默认示例GSE_QA-R-EE-02

metro_code

描述端口所处的城市的代码类型字符串需要默认示例SV

metro_name

ibx_name

描述端口所处的IBX的名称类型字符串需要默认示例SV1

其它示例响应字段:带宽、封装、is_buyout、cross_connect_ids(cross connectserial numbers)。

样本响应:

HTTP/1.1 200正常

内容类型:应用/json

响应的错误代码:

资源:卖方服务配置文件

描述:由卖方在Equinix云交换中创建的卖方服务配置文件需要Equinix云交换卖方来定义和建立他们连接至他们的卖方服务的服务配置文件。卖方可以创建他们所提供的每个独立服务的配置文件。

POST卖方服务配置文件。POST操作的该实施方案创建登录用户的新卖方服务配置文件。示例请求字段包括:名称、可用性状态(如“在试用测试中”或“可用于订单”的服务配置文件的可用性状态)、虚拟电路标记、服务类型、可用api(指示该服务是否可用API集成。API集成允许完成虚拟服务调配。可接受值为真和假)、授权密钥标记(这就是卖方组织调用授权密钥)、用于卖方侧的端口封装方法、该连接可以达到的卖方服务的类型、需要冗余-这将定义当买方从这个卖方服务提供商请求虚拟电路时,是否需要创建次虚拟电路。如果是的话,则卖方将提供主和次端口和VLAN ID。可接受值为真和假;secondary_vlan_same-如果该字段具有“TRUE”的值,则买方将被迫为主虚拟电路和次虚拟电路提供相同的vlan id;capture_buyer_peer_ip-指示是否捕获买方对等IP地址。可接受值为真和假;捕获买方BGPASN;捕获虚拟专用网关;capture_seller_peer_ip-指示是否捕获买方对等IP地址。可接受值为真和假。

其它示例请求字段包括:带宽阈值告警联系人。多个电子邮件地址可以用逗号分开。通知联系人:将被通知虚拟电路请求和删除的联系人。警告百分比:每端口的带宽阈值;卖方服务提供商将为买方启用以建立虚拟电路连接的端口;所提供的虚拟电路速度;allow_custom_speed:如果买方有买断港口,卖方可以选择允许买方选择自定义速度。

样本请求

响应字段:

Result

message

more_info

样本响应:

HTTP/1.1200创建

{

"result":"SUCCESS",

"message":"TheSellerServiceProfile hasbeenCreatedsuccessfully",

"more_info":""

}

POST至卖方服务配置文件的端口

描述:POST操作的该实施方案使得能够提供用于卖方交换服务的给定端口(由用户拥有)。具体地,操作将端口添加到现有卖方服务配置文件。

注意:必须批准卖方服务配置文件才能进行此操作。拒绝或待审卖方服务配置文件将不允许被编辑,并且端口在处于“已批准”状态之前无法添加。

请求URI:

POST

http://<HostName>/ecx/v1/sellerserviceprofiles/{profile_name}/ports

作为另一示例,DELETE操作将从卖方服务配置文件中移除该端口,如果操作成功,则返回具有HTTP代码200的响应。不能有与正在删除的端口相关联的有效VC,如果端口上已经存在虚拟电路,则显示错误消息,指示端口上存在现有虚拟电路。

至少一个端口必须存在于服务配置文件中。

作为另一个示例,PUT操作将用于编辑现有的卖方服务简档,如果操作成功,则返回具有HTTP代码200的响应。简档状态(已批准或待批准)在编辑操作期间不会改变。

可以在put操作中更新的字段包括:

又如,“GET My Seller Service Profiles”可以被卖方用来获得他们已创建的所有卖方服务配置文件的列表。GET操作的此实施方案返回作为profile_name路径参数的一部分传递的卖方服务配置文件。通过设置参数,过滤卖方服务状态也是可用的。

样本请求:

GET http://<HostName>/ecx/v1/sellerserviceprofiles(获得所有我的卖方服务配置文件)

GET http://<HostName>/ecx/v1/sellerserviceprofiles/{profile_name}(获得按名称的卖方服务配置文件)

GET

http://<HostName>/ecx/v1/sellerserviceprofiles/{profile_name}?status={valid_status}(获得按名称和状态的卖方服务配置文件)

GET http://<HostName>/ecx/v1/sellerserviceprofiles?status={valid_status}(获得按状态的卖方服务配置文件)

又如,GET资产可以被卖方用来获得卖方在给定城市位置中所拥有

的资产的细节。卖方的GET操作的此实施方案返回在给定城市中的

包括端口和虚拟电路的所有资产的列表。卖方也可以为买方,并因此,

卖方的“资产类型”可以是“买方”和“卖方”两者。

资源:虚拟电路

描述:虚拟电路

HTTP方法请求URIGET/ecx/v1/virtualcircuits/ecx/v1/virtualcircuits/{virtual_circuit_id}POST/ecx/v1/virtualcircuits

GET Virtual Circuits:

描述:本GET操作的实施方案返回由用户所拥有的虚拟电路的列表。虚拟电路可以基于它们的状态来过滤。如果发现虚拟电路与标准匹配,则返回没有有效载荷的HTTP代码204的响应。

请求

请求URI:

GET http://<HostName>/ecx/v1/virtualcircuits?pending=add

过滤器参数:

待审

Request Header:

标头属性描述授权需要。指定Oauth Bearer令牌

请求字段:

样本请求:

GET http://<HostName>/ecx/v1/virtualcircuits?pending=add

响应

响应字段

id

描述虚拟电路ID类型字符串需要默认示例4D34239266A3952695956A

name

buyer_port

描述买方侧端口id类型字符串需要默认示例“GSE_QA-R-EE-01

cross_connect_id

描述物理端口的Id类型字符串需要默认示例11111111

port_speed

描述端口的容量,例如:1G或10G类型字符串需要默认示例1G

cloud_service_name

描述云服务名称类型字符串需要默认示例CSP_A_1

service_key

buyer_vlan

描述买方侧VLAN Id类型字符串需要默认示例2004.*

bandwidth

描述带宽类型字符串需要默认示例200MB

status

描述虚拟电路的状态类型字符串需要默认示例计费

created_date

描述创建虚拟电路的日期类型字符串需要默认示例05/23/2014 01:21:54

created_by

email

描述用户的电子邮件类型字符串需要默认示例test@cloudexchange.com

seller_port

描述卖方端口类型字符串需要默认示例GSE_QA-SJC-06GMR-CIS-2-SEC-A

metro_code

描述该虚拟电路所处的城市的代码。类型字符串需要默认示例SV

ibx_name

描述该虚拟电路所处的IBX的名称类型字符串需要默认示例SV1

其它字段,诸如上面被包含在其它示例中的字段可被使用。

样本响应:

HTTP/1.1 200正常

内容类型:应用/json

响应的错误代码:

HTTP状态码错误代码错误描述40040001无效的参数值40140102令牌过期,需要重新登录40140104无效的访问令牌40140105用户无足够的优先权来执行该操作406不可接受的415不支持的媒体类型500内部服务器错误

PATCH虚拟电路:

描述:PATCH操作可以被用来由卖方对虚拟电路执行下面的三种类型的操作:

·接受由买方创建的虚拟电路

·拒绝由买方创建的虚拟电路

·确认买方对虚拟电路的删除

请求

请求URI:

PATCH http://<HostName>/ecx/v1/virtualcircuits/{virtual_circuit_id}

Request Headers:

标头属性描述授权需要。指定Oauth Bearer令牌

请求字段:

action

port_name

描述卖方侧端口名称类型字符串需要默认示例GSE_QA-SJC-06GMR-CIS-2-SEC-A

vlan_id

描述卖方侧VLAN Id类型字符串需要默认示例xxxx-xxxxxx

redundant_vlan_id

reject_comment–卖方侧评论以解释对虚拟电路的拒绝

样本请求

响应:

响应字段:

result

样本响应:

HTTP/1.1 200正常

{

"result":"SUCCESS",

"message":"The requested virtual circuit has been rejected and thebuyer has been notified.",

"more_info":"https://api.developer.cloudexchange.com/docs/api/messages/vcs/2”

}

响应的错误代码:

所有错误代码

其它端点406可具有类似于上面为登录406A、端口406B、城市406C、虚拟电路406E和云服务406F所提供的请求/响应方案的请求/响应方案。

登录406A实现了通过认证和授权的合作伙伴和客户访问互连资产的安全信道。此外,互连平台提供了开箱即用的能力来解决安全问题(威胁保护、SQL注入保护、DDoS攻击预防、JSON炸弹保护等)。在一些示例中,实体使用其凭证(例如,用户名、密码、API密钥和/或API秘密)使用登录406A获得安全令牌(例如,OAuth 2.0令牌),其后确保由现在授权的实体发到其它端点406的请求的安全令牌来自授权的客户或合作伙伴。

在一些示例中,API网关403将根据请求格式化的应用数据转换到任何端点406,并使用转换后的应用数据来对编排引擎407进行调用。在该示例中,编排引擎407可表示被配置为实现云交换平台服务408A-408H(统称为“平台服务408”)的一或多个真实服务器和/或虚拟机。响应于API网关403的调用,编排引擎407的工作流和规则引擎(未在图3B中示出)可应用所定义的规则和策略来生成云交换API服务409的工作流,其通常适合于与平台服务408之一相关联的整体功能。如图所示,平台服务408包括策略管理408A、配置文件和配置408B、计费和发票408C、卖方API集成408D、虚拟电路管理408E、网络接口管理408F、搜索和推荐408G以及库存和位置发现408H。每个平台服务可表示用于云服务调配的不同方面的工作流和规则引擎。

云交换API服务409A-409R(统称为“云交换服务409”)表示例如由互连平台所提供的用于更改云交换网络基础设施、管理内容、管理事件、管理库存和容量、确保安全访问以及管理提供商和客户的订单/计费的服务。云交换服务409中的任一者本身可表示用于由管理工作流的编排引擎407调用的请求/响应事务的一组微服务。

云交换服务409包括请求确认409A、授权和审计409B、帐户和配置文件管理409C、库存管理409D、容量管理409E、网络调配409F、信用检查验证器409G、计费409H、卖方API集成409I、位置409J、故障单管理409K、本地化409L、使用统计409M、推荐409N、调度器和批处理器409O、通知409P、错误解析器409Q和内容管理409R。卖方API集成409I可以使编排引擎407能够调用CSP的卖方应用的软件接口,以例如请求卖方应用代表卖方确认添加或删除虚拟电路(由NSP/客户请求)。

图4为示出根据在本公开中所述的技术的用于云交换的互连平台103的替代表示的框图。在该图中,用于互连平台103的技术架构包括用于验证和满足API查询、验证和满足API命令以及将子系统120与互连编排引擎407集成的API服务层420。数据中心的一或多个真实服务器和/或虚拟机可执行互连编排引擎407、API服务层420的服务和子系统120中的每一者。互连API端点406为API消费者402(图3A)可管理云交换互连的示例API端点。

工作流管理和路由组件410管理工作流并路由到端点406到引擎412A-412J(统称为“引擎412”)的API调用,其通过调用API服务层420的各种微服务来执行合并的功能。引擎412包括认证和授权引擎412A;配置、审计和跟踪引擎412B;API命令控制器412C;API查询控制器412D;服务组合引擎412E;订单管理引擎412F;通知引擎412G;推荐和分析引擎412H;互连接口引擎412I;和API工作流和规则库412J。

如图所示,API服务层的示例API服务包括具有请求参数验证器服务424A和查询提供器服务424B的API查询服务422A;具有请求主体验证器服务424C和命令提供程序服务424D的API命令服务422B;以及具有请求委托器和服务适配器424E以及响应解析和变换424F的集成外观服务422C。

子系统120的示例在图4中示出。身份和访问管理系统426A执行认证和授权以有效地访问互连平台服务。卖方API集成模块426B促进互连平台103与云服务提供商API的集成,用于创建和验证与云服务提供商网络的互连,如本文其它地方所描述的。云交换数据库428表示描述由互连平台103管理的云交换的配置的配置数据库。网络系统426C调配、配置、查询和以其它方式控制由互连平台103管理的云交换的网络基础设施。订单管理系统426D对例如虚拟电路执行客户订单的端到端管理。事件管理系统426E便于处理由互连平台管理的云交换中的错误,诸如通过提醒云交换提供商、通知客户等等。内容管理系统426F管理互连平台103的内容。

图5至图11中的每者为示出如在本公开中描述的由用于云交换的互连平台的示例组件执行的调用流程和操作的流程图。

在图5的示例中,API开发者402(例如,买方/卖方/第三方)可以利用服务409来管理云交换互连。图5示出了可用于可应用于所有云服务提供商(CSP)的虚拟电路创建的过程。例如,API开发者402之一可以向API网关403(454A)传递登录信息,诸如用户名、密码、API密钥和API秘密中的一或多者。API网关403执行API密钥和API秘密验证(454B)、与身份管理和联合450(454C、454D)交互并且将OAuth 2.0令牌提供回API开发者402(454E)。API开发者402接收OAuth 2.0令牌并且可以通过向API网关403(454F)提供OAuth 2.0令牌和一或多个参数来调用API端点(例如,API端点406之一)。API网关403可执行数据格式转换(例如,XML、JSON)(454G)和OAuth 2.0令牌验证(454H)。API网关403然后联系编排引擎407以调用云交换平台服务(456A)。

编排引擎407基于定义的规则和响应来编排API工作流。例如,编排引擎407的工作流和规则引擎306可以基于策略308A、配置文件308B、配置308C和微服务308D(图2)中的一或多者来编排API工作流。一般来说,编排引擎407可以基于所配置的规则和/或策略并行地或以所定义的顺序调用一或多个服务409。在图5的示例中,编排引擎407调用服务409的服务A(460A)和服务B(460B),然后从服务A(460C)接收响应并从服务B接收响应(460D)。然后,编排引擎407调用服务C(460E)并从服务C接收响应(460F)。编排引擎407向API网关403发送来自云交换平台服务的响应(456B)。API网关403从云交换平台服务接收响应,并且可以对在响应中接收到的信息执行数据格式转换(例如,XML、JSON)(454I)。API网关403向调用API端点的API开发者402发送一或多个响应标头和主体(454J)。

这样,编排引擎407提供用于云交换的互连平台,使得互连资产信息通过机器对机器交互可用于API开发者402。在图5中概述的过程可被应用于不同的使用情况,诸如用于允许API开发者获得关于一或多个虚拟电路的信息、允许API开发者获得关于一或多个互连资产(例如,基于城市的云交换、云交换点、云交换端口)、允许卖方定义用于连接的参数、允许API开发者获得关于云服务配置文件和用于创建虚拟电路所期望的属性的信息,或者接近买方的虚拟电路的实时删除。

图6为示出由用于云交换的互连平台的示例组件执行的,通过机器对机器交互使得互连资产信息对API开发者402是可用的调用流程和操作的流程图。图6包括类似于上面关于图5描述的一些操作。响应于从API网关403接收调用云交换平台服务的请求,编排引擎407可以基于所定义的规则和响应来编排API工作流。例如,图6允许API开发者402通过机器对机器交互从许可数据存储452获得诸如OAuth 2.0令牌的信息。具体地,API网关403可以在验证(454B)之后向身份管理和联合450(454C)发送从API开发者402(454A)接收的用户名和密码,其继而将该信息提供给许可数据存储452(462A),其向身份管理和联合450返回用户名和用户密钥(462B)。身份管理和联合450可执行SAML到OAuth映射(462C),并且向API网关403提供OAuth令牌(454D)。API网关403可以执行OAuth令牌到网关OAuth 2.0映射(462D),并且可以可选地执行XML/JSON转换(462E)。API网关403然后向API开发者402提供OAuth2.0令牌(454E)。

图7为示出由用于云交换的互连平台的示例组件执行的,通过机器对机器交互使得互连资产信息对API开发者402是可用的调用流程和操作的流程图。图7包括类似于上面关于图5所描述的那些操作。响应于从API网关403接收到调用云交换平台服务的请求(470E),编排引擎407可以基于所定义的规则和响应来编排API工作流。例如,图7示出编排引擎407如何可以调用服务409的端口请求参数验证服务,其指定被包含在来自API开发者402调用端口端点的初始请求中的端口参数(470F)。编排引擎407从端口请求参数验证服务接收指示端口请求参数是否有效的响应(470G)。然后,编排引擎407可以调用端口查询服务(470H)并从端口查询服务接收响应(470I),例如基于端口请求参数指定特定端口信息。编排引擎407可以在从云交换平台服务到API网关403的响应中包括端口信息(470J),API网关403继而可以向API开发者402提供端口信息(470L)。

图8为示出由用于云交换的互连平台的示例组件执行的,通过机器对机器交互使得互连资产信息对API开发者402是可用的调用流程和操作的流程图。图8包括类似于上面关于图5描述的一些操作。响应于从API网关403接收调用云交换平台服务的请求(472E),编排引擎407可以基于所定义的规则和响应来编排API工作流。例如,图8示出编排引擎407如何可以调用服务409的城市请求参数验证服务,其指定被包含在来自API开发者402调用城市端点的初始请求中的城市参数(472F)。编排引擎407从城市请求参数验证服务接收例如指示城市请求参数是否有效的响应(472G)。然后,编排引擎407可以调用城市查询服务(472H)并从城市查询服务接收响应,例如基于城市请求参数指定特定的城市信息(472I)。编排引擎407可以在从云交换平台服务到API网关403的响应中包括城市信息(472J),API网关403继而可以向API开发者402提供城市信息(472L)。

图9为示出由用于云交换的互连平台的示例组件执行的,通过机器对机器交互使得互连资产信息对API开发者402是可用的调用流程和操作的流程图。图9包括类似于上面关于图5描述的一些操作。响应于从API网关403接收调用云交换平台服务的请求(474E),编排引擎407可以基于所定义的规则和响应来编排API工作流。例如,图9示出编排引擎407如何调用指定云服务参数的服务409的云服务请求参数验证服务,该云服务参数被包含在来自调用云服务端点的API开发者402的初始请求中(474F)。编排引擎407从云服务请求参数验证服务接收响应,例如,指示云服务请求参数是否有效(474G)。然后,编排引擎407可以调用云服务查询服务(474H)并从云服务查询服务接收响应,例如基于云服务请求参数指定特定云服务信息(474I)。编排引擎407可以在从云交换平台服务到API网关403的响应中包括云服务信息(474J),API网关403继而可以向API开发者402提供云服务信息(474L)。

图10为示出由用于云交换的互连平台的示例组件执行的,通过机器对机器交互使得互连资产信息对API开发者402是可用的调用流程和操作的流程图。图10包括类似于上面关于图5描述的一些操作。响应于从API网关403接收查看虚拟电路并调用云交换平台服务的请求(476E),编排引擎407可以基于所定义的规则和响应来编排API工作流。例如,图10示出编排引擎407如何调用指定虚拟电路参数的服务409的虚拟电路请求参数验证服务(476F),该虚拟电路参数被包含在来自调用虚拟电路端点的API开发者402的初始请求(476A)中。编排引擎407从虚拟电路请求参数验证服务接收例如指示虚拟电路请求参数是否有效的响应(476G)。然后,编排引擎407可以调用虚拟电路查询服务(476H)并从虚拟电路查询服务接收响应,例如基于虚拟电路请求参数指定特定云服务信息(476I)。编排引擎407可以在从云交换平台服务到API网关403的响应中包括虚拟电路信息(476J),API网关403继而可以向API开发者402提供虚拟电路信息(476L)。

图11为示出通过机器对机器交互,由在用于API开发者402的动态管理互连资产中的云交换的互连平台的示例组件执行的调用流程和操作的流程图。图11包括类似于上面关于图5描述的一些操作。响应于从API网关403接收调用云交换平台服务的请求(480E),编排引擎407可以基于所定义的规则和响应来编排API工作流。例如,图11示出编排引擎407如何调用城市服务(480F)以验证被包含在来自调用虚拟电路端点(480A)的API开发者402的初始请求中的城市代码。编排引擎407接收来自城市服务的响应(480G)。

编排引擎407然后可以用云服务验证云服务提供商名称(480H),并从云服务接收响应(480I)。编排引擎407然后可以调用端口服务以验证卖方和买方端口(480J),并且从端口服务接收指示端口对于所请求的虚拟电路是否有效的响应(480K)。然后,编排引擎407可以调用网络服务调配服务(例如,图3B的网络调配服务409F)以自动配置云交换内的虚拟电路(480L),并从网络服务调配服务接收响应(480M)。然后,编排引擎407可以调用计费服务(例如,图3B的计费服务409H)(480N),并从计费服务接收响应(480O)。然后,编排引擎407可以调用CSP API以完成虚拟电路创建(480P),并从CSP API接收响应(480Q)。编排引擎407可以在从云交换平台服务到API网关403的响应中包括描述例如虚拟电路创建是否成功、确认参数和连接参数的虚拟电路信息(480R),以及API网关403继而可以向请求API开发者402提供虚拟电路信息(480T)。

这样,本公开的技术可以用于使互连资产信息诸如虚拟电路和端口的信息能够通过机器对机器交互提供给开发者。在一些示例中,本公开的技术可以允许访问互连平台以使得能够通过机器对机器交互来创建或更改变化带宽的虚拟电路。在一些示例中,本公开的技术可以允许卖方(例如,CSP、NSP和受托SP(MSP))访问互连平台以通过机器对机器的交互获得关于竞争对手在不同城市和数据中心中存在的定制分析。

在一些示例中,本公开的技术可以允许买方(例如,NSP、企业)访问互连平台以通过机器对机器交互获得关于已具有端口存在的区域中的云服务存在的定制分析。在一些示例中,本公开的技术可以允许卖方(CSP、NSP和MSP)访问互连平台,以通过机器对机器交互获得关于跨越不同城市和数据中心的买方端口密度的定制分析。在一些示例中,本公开的技术可以允许自动化API请求拦截以验证合作伙伴对互连资产的访问,从而通过机器对机器交互来确保合作伙伴资产的安全性。在一些示例中,本公开的技术可以允许按需访问以通过机器对机器交互来动态设置和拆除虚拟电路并直接访问互连平台资源。在一些示例中,本公开的技术可以允许按需访问通过机器对机器交互按预定间隔调度设置和拆除虚拟电路和直接访问互连平台资源。在一些示例中,本公开的技术可以在某些预先安排的时间通过机器对机器交互接受并允许买方(NSP和企业)利用较低带宽使用率和能更快地完成批处理任务的虚拟电路速度突发的请求,诸如数据备份或恢复(速度突发)。

在一些示例中,本公开的技术可以通过机器对机器交互来允许跨越数据中心、城市和区域的虚拟电路业务使用的详细和定制的分析。在一些示例中,本公开的技术可以通过机器对机器交互通过API向合作伙伴开发者和业务团队提供关于设置其端口和虚拟电路以用于最佳性能、低延迟和更好的互连性的详细的和定制的建议。在一些示例中,本公开的技术可以允许通过使用API基于机器的对互连资产的访问。在一些示例中,本公开的技术可以允许通过使用API生态系统在买方和卖方之间按需设置虚拟电路。在一些情况下,API可以通过以下方式实现买方和卖方之间更好的连接:位置发现、资产发现、云服务发现、定制的业务分析、定制的使用分析、上级推荐引擎和端到端自动化虚拟电路调配系统的可用性,同时提取整个互连平台的复杂性。API还可以启用安全信道,以通过认证和授权的合作伙伴和客户访问云交换域之外的互连资产。API平台提供了开箱即用的能力来解决安全问题(例如,威胁防护、SQL注入保护、DDoS攻击预防、JSON炸弹保护等)。

基于云的服务交换的示例细节在于2015年4月17日提交的题为“Cloud-basedServices Exchange”的美国临时专利申请No.62/149,374中找到,其通过引用整体并入本文。

用于以太网和L3/互联网的L3/BGP直接对等的服务交换的进一步示例细节在2012年9月13日提交的题为“REAL TIME CONFIGURATION AND PROVISIONING FOR A CARRIERETHERNET EXCHANGE”的美国专利8,537,845;在2010年9月2日提交的题为“REAL TIMECONFIGURATION AND PROVISIONING FOR A CARRIER ETHERNET EXCHANGE”的美国实用新型专利实用申请序列第12/875,054号,其要求下面三个专利申请的益处和优先权:1)在2009年12月10日提交的题为“ETHERNET EXCHANGE”的美国临时专利申请第61/285,371号,并且其全部内容通过引用结合于本文;2)在2009年9月4日提交的题为“PRIVATE NETWORKCONNECTIVITY PLATFORM”的美国临时申请第61/239,997号,并且其全部内容通过引用结合于本文;以及3)在2010年4月12日提交的题为“ETHERNET EXCHANGE”的美国临时专利申请第61/323,066号,其全部内容通过引用结合于本文,以及在2010年9月2日提交的名称为“REALTIME CONFIGURATION AND PROVISIONING FOR A CARRIER ETHERNET EXCHANGE”的美国专利申请第12/875,054号。上述专利和专利申请中的每一个通过引用以其各自的整体结合于本文。

图12为示出根据本公开的一或多个技术运行的计算装置的一个示例的进一步细节的框图。图12可示出服务器或其他计算装置500的特定示例,该服务器或其他计算装置500包括用于执行API网关112/403、编排引擎118/407、子系统120中的一或多者或本文所述的任何其它计算装置的一或多个处理器502。计算装置500的其它示例可以在其它实例中使用。虽然为了示例的目的而在图12中示出为独立的计算装置500,但是计算装置可以是包括一或多个处理器或用于执行软件指令的其它合适的计算环境的任何组件或系统,并且例如不需要包括图12中所示的一或多个元件(例如,通信单元506;并且在一些示例中,诸如存储装置508的组件可以不与其它组件位于同一位置或在相同的机架中)。计算装置500可被定位在云交换点128的任一云交换点内或者在由云交换提供商采用或使用的分支机构或云计算环境中并在其中执行另一互连设施。

如图12的具体示例所示,计算装置500包括一或多个处理器502、一或多个输入装置504、一或多个通信单元506、一或多个输出装置512、一或多个存储装置508和用户界面(UI)装置510和通信单元506。在一个示例中,计算装置500还包括可由计算装置500执行的一或多个应用522、虚拟概念构建应用524和操作系统516。组件502、504、506、508、510和512中的每一者被耦合(物理地、通信地和/或可操作地)用于组件间通信。在一些示例中,通信信道514可包括系统总线、网络连接、进程间通信数据结构或用于传送数据的任何其它方法。作为一个示例,组件502、504、506、508、510和512可通过一或多个通信信道514耦合。计算装置500可被定位在云交换点128的任一云交换点内或者在由云交换提供商采用或使用的分支机构或云计算环境中并在其中执行另一互连设施。

在一个示例中,处理器502被配置为实现用于在计算装置500内执行的功能和/或处理指令。例如,处理器502可能够处理存储在存储装置508中的指令。处理器502的示例可以包括微处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或等效的分立或集成逻辑电路中的任一或多者。

一或多个存储装置508可被配置为在运行期间在计算装置500内存储信息。在一些示例中,存储装置508被描述为计算机可读存储介质。在一些示例中,存储装置508为临时存储器,这意味着存储装置508的主要目的不是长期存储。在一些示例中,存储装置508被描述为易失性存储器,这意味着当计算机被关闭时存储装置508不保留所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和本领域已知的其它形式的易失性存储器。在一些示例中,存储装置508被用于存储供处理器502执行的程序指令。在一个示例中,存储装置508由在计算装置500上运行的软件或应用程序使用,以在程序执行期间临时存储信息。

在一些示例中,存储装置508还包括一或多种计算机可读存储介质。存储装置508可被配置为存储比易失性存储器更大量的信息。存储装置508还可以被配置为用于信息的长期存储。在一些示例中,存储装置508包括非易失性存储元件。此类非易失性存储元件的示例包括磁硬盘、光盘、软盘、闪存或电可编程存储器(EPROM)或电可擦除可编程(EEPROM)存储器的形式。

在一些示例中,计算装置500还包括一或多个通信单元506。在一个示例中,计算装置500利用通信单元506经由一个或多个网络(例如一个或多个有线/无线/移动网络)与外部装置通信。通信单元506可以包括网络接口卡,例如以太网卡、光收发器、射频收发器或可以发送和接收信息的任何其它类型的装置。这种网络接口的其它示例可以包括3G和WiFi射频接口。在一些示例中,计算装置500使用通信单元506与外部装置通信。

在一个示例中,计算装置500还包括一或多个用户界面装置510。在一些示例中,用户界面装置510被配置为通过触觉、音频或视频反馈从用户接收输入。用户界面装置510的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风或用于检测来自用户的命令的任何其它类型的装置。在一些示例中,存在敏感显示器包括触敏屏幕。

一或多个输出装置512也可被包含在计算装置500中。在一些示例中,输出装置512被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出装置512包括存在敏感显示器、声卡、视频图形适配器卡或用于将信号转换为人或机器可理解的适当形式的任何其它类型的装置。输出装置512的附加示例包括扬声器、阴极射线管(CRT)监视器、液晶显示器(LCD)或可以向用户生成可理解输出的任何其它类型的装置。

计算装置500可包括操作系统516。在一些示例中,操作系统516控制计算装置500的组件的运行。例如,在一个示例中,操作系统516促进一或多个应用522和互连平台应用524与处理器502、通信单元506、存储装置508、输入装置504、用户界面装置510和输出装置512通信。

应用522和互连平台应用524还可包括可由计算装置500执行的程序指令和/或数据。由计算装置500可执行的示例互连平台应用524可包括编排引擎模块550、API网关模块552和子系统554中的任一者或多者,每个用虚线示出,以指示这些可由或可不由计算装置500的任何给定示例执行。

编排引擎模块550可包括用于使计算装置执行关于编排引擎118和编排引擎407在本公开中描述的操作和动作中的一或多者的指令。作为一个示例,编排引擎模块550可包括使得计算装置500组织、命令和集成用于管理网络基础设施内的互连的各个方面以及云服务管理的用于云交换的互连平台的底层软件子系统的指令。编排引擎模块550可例如提供在API和包括子系统和网络基础设施的云交换的底层互连平台之间运行的规则驱动工作流引擎。

API网关模块552可包括用于使计算装置执行本公开中关于API网关112和API网关403描述的操作和动作中的一或多者的指令。作为一个示例,API网关模块403可包括使得计算装置500暴露定义方法、字段和/或应用可调用互连平台的其它软件原语的软件接口(例如,API 114)的集合的指令。这些软件接口允许运营商和客户可编程地访问云交换的能力和资产。

子系统554可包括用于使计算装置执行本公开中关于子系统120描述的操作和动作中的一或多者的指令。

图13为示出示例云交换系统700的框图,该图更详细地示出编排引擎704的示例逻辑架构。编排引擎704可表示例如编排引擎118(图1A-图1C和图2)、编排引擎407(图3A-图3B、图4-图5、图7-图11)和计算装置500的编排引擎模块550中的任一者(图12)。

编排引擎704作为整体互连平台(例如,图1B、图1C的互连平台103)的一部分来运行,以无缝地建立包括买家和卖家之间,诸如企业和云服务提供商之间的虚拟连接(例如,虚拟电路)的互连资产。在图13的示例中,编排引擎704包括两个主要组件:由云交换系统700提供的编排器706和微服务708。编排引擎704还包括服务发现引擎710和进程管理器712。编排引擎704可表示集中式或分布式应用,并且可以在诸如数据中心101(图1A)的虚拟机和/或真实服务器之类的管理装置上执行。

微服务708各自实现一组聚焦的和不同的特征或功能,并且微服务符合(或可用于)可以独立开发和部署许多数十或甚至数百个微服务的架构模式。微服务708可围绕业务能力(例如,API对接引擎726、REST接口728、套接字连接730、监测732和通知734)来组织,并且可实现用于业务能力的软件的“广泛堆栈”,包括持久存储和任何外部协作。各种微服务708暴露使得微服务708能够彼此调用以交换数据和执行相应的功能集合的接口,以便创建整体应用。在一些示例中,微服务708可表示或包括在本公开中描述的其他微服务示例,例如,用于实现云交换服务409、API查询服务422A、API命令服务422B、集成外观服务422C的微服务、由子系统120提供的任何微服务和微服务308D。

每个微服务708可以遵循良好定义的应用程序编程接口(API),并且可以根据由编排器706执行的工作流通过调用微服务708的API来编排。编排器706组件基于由编排器706(例如,经由诸如API网关112、403和718的API服务器/网关)暴露的各种API定义的规则或工作流“编排”微服务706,并且可由符合相应的API契约的API请求调用。编排器706可通过遵循所建立的一组规则或工作流来一般地处理API请求,其允许针对API消费者的每个外部信道,无论是门户、移动应用还是开发者API的完全可定制的API契约。在一些示例中,工作流可被实现为状态机。由于每个信道的请求/响应契约中的波动,在本公开中描述的编排器706可涵盖并且提供对跨不同信道的差异的相等支持。

编排引擎704组织、指挥和集成用于管理云交换的互连的各个方面的底层软件和网络子系统。编排引擎704的编排器706可例如执行在API和交换的底层互连平台之间运行的规则驱动工作流引擎。例如,编排器706可对应于根据策略308A运行的图2的工作流和规则引擎306。这样,编排引擎704可被用于在云交换的互连平台内直接参与的客户专用应用和API使用。

如本文所述,编排引擎704合成来自互连平台的底层子系统的信息和动作,以针对客户应用所做出的动态请求制定智能的下一步骤和做出响应。因此,编排引擎704通过提供访问互连平台的一致的、简化和安全的方式来提取云交换的底层软件和网络子系统的复杂性。

在图13的示例中,云交换系统700提供允许访问由云交换系统700所提供的云交换功能的多个平台,包括web代理714、SaaS web门户716和API网关718。编排引擎704服务从这些平台进入的所有请求,而不管该请求是经由云交换门户713、由云交换提供商开发但是被标记用于客户的白标签门户715还是API 717进行。例如,web代理714、SaaS web门户716和Web代理714、SaaS web门户716和API网关718表示用于访问编排器706的请求的不同信道。例如,客户可使用web应用来登录门户713并访问互连平台的服务。又如,客户或开发者可使用API来访问云交换数据。编排引擎704可以经由web代理714接收使用云交换门户713输入的请求。编排引擎704可以经由SaaS web门户716接收使用白标签门户715输入的请求。编排引擎704可使用诸如例如超文本传输协议(HTTP)的网络协议或其它网络协议与SaaS web门户716(例如,CSP门户)通信。编排引擎704可以经由API网关718接收使用API 717输入的请求。API网关718可表示本文中所描述的API网关中的任一者,且使用服务发现引擎710来识别要将经由API717所接收的请求所路由到的服务实例。

如上面简要描述的,微服务708表示云交换功能,其被分解成围绕业务能力组织的更小的服务(微服务)。微服务708可针对该业务区域执行广泛堆栈软件实施方案,包括持久存储以及诸如与第三方系统724之类的任何外部协作。

编排器706从web代理714、门户716或API网关718接收请求,并且无缝地协调微服务708的多个微服务以服务于该请求。例如,基于所接收到的请求,编排器706可确定自动调用服务该请求所需的微服务的工作流。例如,API网关718传递输入、编排引擎704处理输入、调用多个微服务708,并且获得满足API所需的契约所需的数据,并且向API发送包括API所需的数据的响应。例如,为了创建虚拟电路,编排器706需要多个微服务端点。例如,编排器706需要城市、端口和计费信息。这些都是通过编排器706无缝地编排的各个内部API,如本文所描述的。通过请求/响应操作,API(例如)可调用城市微服务,并且编排引擎调用受托的城市例程(工作流)并且经由微服务执行所需的服务以实现关于该城市例程的请求,然后发回与该操作相关的任何数据。编排引擎704可从微服务中的一者调用云服务提供商连接器。这样,编排引擎704以无缝方式提供客户所请求的服务或数据,使得客户服务顾客要求时不知道根据由编排器706所选的工作流所调用的单个微服务的底层细节。

在一些示例中,微服务708可表示由云服务提供商开发和提供的微服务。也就是说,编排器706可调用经由微服务之一可访问的云服务提供商接口。例如,Azure(由微软公司提供)可提供云服务并且暴露可由为管理云服务的目的而开发的微服务708之一访问的接口。编排器706可以调用由Azure所提供的微服务的RESTful接口(本文其它地方描述的“CSP API”的示例)以实现某些功能。例如,为了创建从云交换应用到云服务提供商的虚拟连接,编排引擎704可调用Azure提供的微服务以执行某些功能,诸如启用端口。在调用Azure提供的微服务之后,编排器可调用其它微服务来实现整体工作流。例如,编排器然后可调用排序、验证和/或认证微服务。RESTful API端点/信道可提供对微服务的可访问性。

在图13的示例中,微服务708包括内部API文档引擎API 726(“API文档引擎”)、REST接口微服务728,套接字连接微服务730、监测微服务732、通知微服务734和API服务框架722。当调用一或多个微服务708时,编排引擎704还使用内部API服务框架722以经由API与各种内部或第三方系统交互。微服务708可以向编排器706呈现API接口并在API服务框架722中执行。API 721A-721C(“API 721”)可被编排引擎704的微服务层的组件调用,并且可被认为是微服务端点。API 721不是面向客户的API。

在图13的示例中,编排引擎704使用API服务框架722以经由专用API 721A与企业系统720交互。编排引擎704使用API服务框架722以经由专用API 721B与其它系统723交互。编排引擎704使用API服务框架722以经由公共API 721C与第三方系统交互,并且将基于云的服务平台集成到云交换中。

图14为示出示例系统800的框图,该图更详细地示出编排引擎704的参考架构。编排引擎704可表示例如编排引擎118(图1A-1C和图2)、编排引擎407(图3A-3B、4-5、7-11)、计算装置500的编排引擎模块550(图12)和图13的编排引擎704中的任一者。例如,系统800可表示图13的云交换系统700的不同逻辑视图。

编排引擎704作为整体互连平台(例如,图1B、1C的互连平台103)的一部分来运行,以无缝地建立包括买家和卖家之间,诸如企业840和云服务提供商842之间的虚拟连接(例如,虚拟电路)的互连资产。例如,编排引擎704可在图1C的客户系统196之间无缝地建立虚拟电路150、155、160、165、170。

编排引擎704可表示集中式或分布式应用,并且可以在诸如数据中心101(图1A)的虚拟机和/或真实服务器之类的管理装置上执行。编排引擎704可从各种客户系统接收对互连资产的请求。例如,编排引擎704可从内部管理员(即,属于与编排引擎704相同的实体的管理员(“admin”)、网络服务提供者(NSP)、云服务提供者(CSP)842、企业840和开发者接收请求。编排引擎804可经由浏览器812A在web代理810处接收请求,在白标签SaaS 814处经由浏览器812B或者在API网关816处经由API 818接收请求。

编排器806可以管理用于执行例如管理端口、管理城市、CSP细节、订单管理、查看虚拟电路、删除虚拟电路、搜索、支持和票据、监测和统计、分析和推荐的功能的工作流。编排器806也可以执行未示出的附加功能,包括上面关于编排引擎407所描述的那些功能。在一些示例中,编排器806可保持工作流库,编排器可以响应于经由上述任何信道接收的请求,从该工作流库选择和加载合适的工作流。

在一些示例中,编排引擎704可作为在服务器网络装置上执行的一组虚拟机来运行。编排引擎704可被构建并在诸如Node.js的软件应用平台上运行。可使用web应用框架来启用微服务。微服务和工作流可作为分布式应用在软件容器中构建和运行。编排引擎704可使用内存和持久性磁盘数据库来使用内存网格缓存。

编排引擎704的方面可被构建在Node.js或其它类似的平台上,例如,提供事件驱动架构和非阻塞I/O API,其被设计为优化应用的吞吐量和用于实时web应用的可扩展性。Node.js为轻量级的开源平台,它有助于松散耦合和可扩展的系统,这些系统使用例如内置于Node.js中的HTTP和JSON进行通信。这可有助于用于创建和部署微服务708的微服务设计原则。

编排器706可使用状态机来实现以定义的顺序调用多个微服务706以满足API契约的工作流。微服务706(以及每个微服务706的多个实例)可被部署在用于隔离和模块化的单独容器中,同时还通过集成测试、记录、监测和诊断策略来提供增强的质量和可靠性。容器技术为用于跨大量计算资源部署工作单元的机制,并已成为可扩展性的战略部署策略。微服务和容器提供了构建可扩展系统的技术方法的融合。Node.js为开源平台,其针对构建高度可扩展的轻量级异步通信流程进行了优化并且向任何Web消费者暴露API。编排引擎704可利用Node.js、微服务和容器来实现和部署作为用于基于云的服务交换的基于微服务的互连平台。

编排引擎704还包括用于调用效用函数819的功能,包括例如错误框架、日志记录、管理、通知、审计和监视。效用函数819可包括用于零停机时间地保持应用活动、进程日志监测、存储器管理等的进程管理器。

图14还示出编排引擎704的多个内部微服务708,包括例如虚拟电路、端口、链路聚合组(LAG)、城市、CSP细节、服务质量(QoS)、客户服务和售票、搜索(例如CSP、NSP、位置、端口、虚拟电路)、资产和网络库存、语言和服务设置。微服务708呈现单独的内部API(即,编排引擎706的内部,并且没有经由API 818暴露)或微服务端点。在一些示例中,微服务708可以对应于图2的微服务308D。例如,微服务708的“城市”内部API对应于在编排引擎704内部的用于城市操作的微服务接口。诸如API消费者402(图3A)之一的API消费者可请求经由APIS114(图3A)的面向客户的城市API 406C的城市,并且编排器706将从面向客户的城市API406C转换到内部城市微服务806。编排器706可以选择将满足面向客户的城市API操作所需的各个微服务绑定在一起的工作流。

编排引擎704还包括用于调用异步作业817的功能,包括例如手动调配/解除调配、订单调度器、订单状态更新器、使用统计、云服务提供商位置发现。编排器706可异步地调用这些作业。

编排引擎704可以与各种子系统820A-820F(“子系统820”),诸如内容管理系统820A、业务管理系统820B、事件管理系统820C、端口管理系统820D、ID和访问管理系统820E以及订单管理系统820F交接。子系统820可对应于例如图1B、1C、2和4的子系统120。例如,内容管理系统820A包括与可经由诸如SaaS web门户716的web应用门户分发的内容相关联的数据。例如,业务管理系统820B诸如在端口级或虚拟电路级提供用于内部云交换平台业务的业务相关数据。在一个示例中,当编排器706选择工作流以提供与支持和票务相关的功能时,编排器706根据所选的工作流使用微服务708(例如,客户服务和票务微服务)中的一者与子系统820中的一者,诸如事件管理系统820C交接。微服务可连接到数据库,使用RESTAPI连接、使用JSON调用连接或其他机制来与子系统820交接。

在一些示例中,子系统820可以应用由编排引擎118编排的服务任务,其可包括更改任何云交换点128以执行例如CSP 842和企业840之间的虚拟电路的按需设置,或者以其它方式管理云交换互连资产,诸如端口、城市、数据中心、虚拟电路和虚拟电路带宽、配置文件和配置。

编排引擎704可以与用于基于云的服务交换的网络基础设施的一或多个SDN控制器832交接。SDN控制器832可驻留在云交换平台数据中心,诸如图1的数据中心101内。SDN控制器832可被用于连接在云交换网络基础设施内的点A到点B之间的交换机。在基于云的服务交换的上下文中用于编排SDN控制器的技术在2015年5月21日提交并题为“活动面板划分(Active Panel Demarcation)”的第62/164,965号美国临时专利申请;以及在2015年9月10日提交并题为“多租户互连设施内的自动化光纤交叉连接服务(Automated Fiber Cross-connect Service within a Multi-tenant Interconnection Facility)”的第62/216,804号美国临时专利申请的优先权,每个专利申请通过引用其全部内容并入本文。

图15为示例根据本公开的示例方面的由编排引擎执行的示例工作流的流程图。出于示例的目的,图15相对于图13和图14的编排引擎704进行描述,但是图15同样可应用于本文所述的编排引擎的其它示例。

编排引擎704诸如经由云交换门户814或API网关816接收对云交换平台服务的客户端请求(1500)。编排引擎704向编排器706发送对云交换平台服务的客户端请求(1502)。基于客户端请求,编排器706从工作流库或文件夹(例如,图16的包括工作流WF1、WF2、WF3和WF4的工作流文件夹1612)选择工作流,其中,所选的工作流包含通过微服务调用以实现该请求所需的一组任务(1504)。例如,编排器706可基于配置规则或策略(例如,图2的策略308A)和/或基于与客户端相关联的配置文件(例如,图2的配置文件308B)来选择工作流。编排器706将自动加载所选的工作流,并且微服务根据工作流(例如,按顺序和/或并行地)执行(1506)。工作流文件夹1612包含为每个客户端点先前定义(例如,由云交换开发者)的工作流。例如,可存在为城市客户端点定义的第一工作流和为端口客户端点定义的第二工作流。工作流提供一组逻辑,其使用一或多个状态机作为指导,以指示如何从一个状态转移到另一个状态以实现该请求。工作流定义任务编排。工作流提供了将一系列复杂操作分解为状态机内的离散任务序列并由微服务执行以满足经由不同请求信道(如门户和API)接收的请求的方式。每个请求可以具有不同的关联域契约。对于给定请求,编排器706选择使用状态机内的离散任务序列以满足与该请求相关联的域契约的工作流。

微服务然后将相应的响应返回到编排器706(1508)。响应可包括由微服务提供的数据。编排器706根据需要将来自每个工作流的响应中接收到的数据合并以实现客户端请求(1510)。然后,编排引擎704响应客户端对云交换服务的请求(1512)。

在此情况下,微服务为端点,并且任务为当前执行以实现请求的动作。一个示例任务可以是统一调用一组微服务(端点)。当调用特定端点时,在链中返回一些数据,该数据可为由下一个端点使用的数据。这样,工作流可定义要完成的任务链,其中,在一个任务中获得的数据可被用在下一个任务中和/或可确定下一个任务。

例如,云交换客户可能想要经由云交换平台连接到多个不同的云服务提供商。在此情况下,编排器706必须调用多个API。在另一示例中,云服务提供商可以创建用于登入新客户的模板并且向编排器提供模板,并且该编排器可以容易地使用该模板来登入想要与云服务提供商连接的新客户。编排器706可以编排任何类型的工作流,并且不止一个的客户可以使用该工作流。不同的客户可以使用相同的工作流来执行它们所需要的功能(例如,创建虚拟电路)。关于图5-11和图16-17示出和描述了各种示例工作流。

图16为示出与创建虚拟电路有关的示例编排引擎工作流的示例逻辑图。在该示例中,编排器706接收调用由编排器706暴露的“/虚拟电路”API端点的客户端请求1622,以在客户端和云服务提供商之间的基于云的服务交换中调配虚拟电路。编排器706从工作流文件夹1612选择用于调配虚拟电路的工作流、加载所选的工作流并将新作业推送到数据结构存储1610。编排器706还为发布-订阅服务器1620订阅作业状态。

工作流指定一组任务。例如,用于调配虚拟电路的工作流指定一组任务,包括:(i)获得端口细节、(ii)获得城市细节以及(iii)基于端口细节和城市细节来创建虚拟电路。编排器706可以跨越多个工作流运行程序1616A-1616D分配一组任务的任务,这些工作流运行程序访问一或多个微服务1630A-1630D(端点)以执行任务。工作流运行程序1616可从由数据结构存储1610维护的队列中挑选作业。在一些示例中,所选工作流中的每个任务可在不同的线程上执行。任务可以并行或按顺序执行。随着每个任务完成,发布-订阅服务器1620被更新,并且发布-订阅服务器1620通知编排器706。例如,“作业完成”为一旦工作流的执行完成就调用的方法。当编排器706确定虚拟电路已经建立时,编排器706可例如通过返回HTTP响应来通知发出请求的客户端。

在一些情况下,工作流中的任务序列可能比仅仅是在一系列中执行的任务复杂。任务可能失败,因此编排器706有时可能需要处理超时、重试、“卡住”流等等。定义工作流及其任务的一种方式是使用任意复杂的语言。另一种方式可能涉及做出一些假设,例如:(1)代码为定义语言;(2)任务是独立的,可以被用在不同的工作流中;(3)在任务之间通信的唯一方法是工作流。任务可以添加、删除或更改工作流的属性。(4)如果任务需要工作流的特定属性存在,则任务可能失败,或者在工作流内重新调度自身。系统的设计必须考虑到故障。任务可能会失败,因此,工作流可能会失败。编排器706可能需要从任务故障或从整个工作流故障中恢复。在一些示例中,编排器706使用服务发现引擎710(图13)来发现当第一任务由于微服务未正确响应或返回错误消息而失败时使用的备用微服务。

例如,如果编排器706必须执行用于提供云交换服务的五个微服务任务,则编排引擎704的进程管理器712可以决定并行地或按顺序执行任务。如果编排器706确定特定微服务没有正确响应,或微服务返回错误消息,则编排器706确定是否再次执行微服务或者是否存在编排器706可以代替使用的任何其它回退微服务。编排器708使用服务发现引擎710(图13)来发现备选微服务(例如,具有不同的统一资源定位符(URL))。

编排器706可调用微服务的第一URL,但是微服务返回错误代码。编排器706使用服务发现引擎710来确定编排器706是否应当发现备选微服务(例如,具有不同的统一资源定位符(URL))。例如,编排器706可调用端口微服务,其包括作为执行端口微服务的不同端口应用的接口的多个不同的URL。

图17为示出与获得员工工资单信息有关的示例编排引擎工作流的示例逻辑图。在该示例中,编排器706接收客户端请求1642,客户端请求1642调用由编排器706暴露的“/员工工资单”API端点,以获得员工工资单信息。编排器706从工作流文件夹1612选择用于获得员工工资单信息的工作流、加载所选的工作流并将新作业推送到数据结构存储1610。编排器706还为发布-订阅服务器1620订阅作业状态。

工作流指定一组任务。例如,用于获得员工工资单信息的工作流指定一组任务,包括:(i)获得用户细节、(ii)获得基于用户细节的用户工资单细节。编排器706可以跨越多个工作流运行程序1616A-1616D分配一组任务的任务,这些工作流运行程序访问一或多个微服务1650A-1650D(端点)以执行任务。在图17的示例中由工作流运行程序1616A-1616D访问的微服务1650A-1650D可为与图16的示例中的微服务1630A-1630D不同的微服务。工作流运行程序1616可从由数据结构存储1610维护的队列中挑选作业。在一些示例中,所选工作流中的每个任务可在不同的线程上执行。任务可以并行或按顺序执行。随着每个任务完成,发布-订阅服务器1620被更新,并且发布-订阅服务器1620通知编排器706。例如,“作业完成”为一旦工作流的执行完成就调用的方法。当编排器706确定已经获得员工工资单信息时,编排器706可例如通过返回HTTP响应来通知作出请求的客户端。

图18A–18B为示出根据在本公开中描述的技术的示例网络架构和由用于云交换的互连平台调配的服务的框图,其中,该云交换聚合多个云服务提供商向云交换提供商的客户调配的云服务并聚合多个客户对一或多个云服务提供商的访问。在该示例中,每个与不同客户相关联的客户网络1808A-1808C(统称为“客户网络1808”)访问数据中心1800内的云交换点,以便从一或多个云服务提供商网络1820接收聚合云服务,每个云服务与不同的云服务提供商110相关联。客户网络1808各自包括消费由云服务提供商网络1820提供的云服务的端点装置。示例性端点装置包括服务器、智能电话、电视机顶盒、工作站、膝上型/平板计算机、视频游戏系统、电话会议系统、媒体播放器等等。

客户网络1808A-1808B包括相应的提供商边缘/自主系统边界路由器(PE/ASBR)1810A-1810B。PE/ASBR 1810A、1810B中的每者可执行外部网关路由协议以通过接入链路1816A-1816B(统称为“接入链路1816”)之一对等PE路由器1802A-1802B之一(“PE路由器1802”或简称为“PE1802”)。在所示示例中,每个接入链路1816表示客户网络1808的边缘路由器与云交换点1803的边缘路由器(或自主系统边界路由器)之间的中转链路。例如,PE1810A和PE 1802A可经由外部网关协议,例如,外部BGP直接对等以通过接入链路1816A交换L3路由,并交换在客户网络1808A和云服务提供商网络1820之间的L3数据业务。在一些情况下,接入链路1816可表示并且可选地被称为用于在IP/MPLS结构1801中配置的IP-VPN的附接电路,如下面进一步详细描述的。接入链路1816可各自包括在客户网络1808的至少一个端口和云交换点1803的至少一个端口之间的直接物理连接,没有中间的转接网络。接入链路1816可在VLAN或堆叠VLAN(例如,QinQ)、VxLAN、LSP、GRE隧道或其它类型的隧道上运行。

虽然示出并主要关于L3连接描述,但是PE路由器1802可另外经由接入链路1816提供在客户网络1808和云服务提供商网络1820之间的L2连接。例如,PE路由器1802A的端口可被配置有L2子接口,其经由接入链路1816A向客户网络1808A提供至云服务提供商1820A的L2连接。PE路由器1802A的端口可另外配置有L3接口,该L3接口经由接入链路1816A向客户网络1808A提供至云服务提供商1820B的L3连接。

接入链路1816和聚合链路1822中的每者可包括将客户网络1808或云服务提供商1828连接至在NID与PE路由器1802,1804中的一个之间的网络链路的网络接口装置(NID)。接入链路1816和聚合链路1822中的每者可表示或包括提供L3/网络连接的多种不同类型的链路中的任何一种。

在该示例中,客户网络1808C不是具有自主系统编号的自主系统。客户网络1808C可表示企业、网络服务提供商或在云交换点的路由覆盖区内的其它客户网络。客户网络包括可执行外部网关路由协议以通过接入链路1816C对等PE路由器1802B的客户边缘(CE)装置1811。在各种示例中,PE 1810A-1810B中的任一者可替换地为或者以其它方式表示CE装置。

接入链路1816包括物理链路。PE/ASBR 1810A-1810B、CE装置1811和PE路由器1802A-1802B经由接入链路1816交换L2/L3包。在这方面,访问链路1816构成用于经由云交换点1803的云访问的传输链路。云交换点1803可表示任何云交换点128的示例。数据中心1800可表示数据中心201的示例。

在一些示例中,云交换点1803聚合客户1808对云交换点1803的访问,并且因此访问任何一或多个云服务提供商1820。图18A-18B例如示出将相应的客户网络1808A-1808B连接至云交换点1803的PE路由器1802A的接入链路1816A-1816B和将客户网络1808C连接至PE路由器1802B的接入链路1816C。PE路由器1802、1804中的任何一或多者可包括ASBR。PE路由器1802、1804和IP/MPLS结构1801可根据本文所描述的技术来配置,以将任何接入链路1816互连至云聚合链路1822中的任一者。结果,云服务提供商网络1820A例如仅需要配置单个云聚合链路(这里是接入链路1822A),以便向多个客户网络1808提供服务。也就是说,运行云服务提供商网络1802A的云服务提供商不需要调配和配置从云服务提供商网络1802A到PE路由器1810、1811中的每一者的单独的服务链路,例如以便向每个客户网络1808提供服务。云交换点1803可改为将云服务提供商网络1820A的云聚合链路1822A和PE 1812A交叉连接到多个云接入链路1816,以提供用于云服务交付的层3对等和网络可达性。

此外,单个客户网络,例如客户网络1808A仅需要配置到数据中心1800内的云交换点1803的单个云访问链路(这里是访问链路1816A),以便从经由云交换点1803提供云服务的多个云服务提供商网络1820获得服务。也就是说,运行客户网络1808A的客户或网络服务提供商不需要调配和配置将客户网络1808A连接到不同的PE路由器1812的单独的服务链路,例如以便从多个云服务提供商网络1820获得服务。云交换点1803可改为将云接入链路1816A(再次作为一个示例)交叉连接到多个云聚合链路1822,以提供用于向客户网络1808A交付云服务的层3对等和网络可达性。

云服务提供商网络1820中的每者包括被配置为向用户提供一或多个云服务的服务器。这些服务可根据服务类型来分类,服务类型可包括例如应用/软件、平台、基础设施、虚拟化以及服务器和数据存储。示例云服务可包括内容/媒体交付、基于云的存储、云计算、在线游戏、IT服务等。

云服务提供商网络1820包括每个执行外部网关路由协议(例如eBGP)以与云交换点1803的PE路由器1804A-1804B(统称为“PE路由器1804”)交换路由的PE路由器1812A-1812D。云服务提供商网络1820中的每者可表示公共云、专用云或混合云。云服务提供商网络1820中的每者可具有所分配的自主系统编号或者为云交换点1803的自主系统覆盖区的一部分。

在所示示例中,互联网协议/多协议标签交换(IP/MPLS)结构1801将PE 1802和PE1804互连。IP/MPLS结构1801包括一或多个交换和路由装置,包括PE 1802、1804,其提供IP/MPLS交换和IP包的路由以形成IP骨干。在一些示例中,IP/MPLS结构1801可实现一或多个不同的隧道协议(即,不同于MPLS)以在PE路由器之间路由业务和/或将业务与不同的IP-VPN相关联。根据本文所描述的技术,IP/MPLS架构1801实现IP虚拟专用网络(IP-VPN)以将任何客户1808与多个云服务提供商网络1820连接,以提供基于数据中心的“传输”和层3交叉连接。尽管基于服务提供商的IP骨干网络需要具有有限带宽的广域网(WAN)连接以将服务流量从层3服务提供商传输给客户,但是如本文所描述的云交换点1803“传输”服务流量并且将云服务提供商1820交叉连接到在由基于数据中心的IP/MPLS结构1801提供的数据中心1800的高带宽本地环境内的客户1808。在一些示例中,IP/MPLS结构1801使用Rosen&Rekhter在2006年2月在互联网工程任务组(IETF)网络工作组的要求注释4364中的“BGP/MPLS IP Virtual Private Networks(VPN)”中描述的技术来实现IP-VPN,该文献的全部内容通过引用合并于此。在一些示例配置中,客户网络1808和云服务提供商网络1820可经由相应的链路连接到IP/MPLS结构1801的相同PE路由器。

接入链路1816和聚合链路1822可包括将与所连接的客户网络1808或云服务提供商网络1820交换的业务与在PE 1802、1804中配置并且对应于在IP/MPLS结构1801上运行的IP-VPN的虚拟路由和转发实例(VRF)相关联的附接电路。例如,PE 1802A可在经由接入链路1816A运行的双向标签交换路径(LSP)上与PE 1810A交换IP包,该LSP为在PE 1802A中配置的VRF的附接电路。又如,PE 1804A可在经由接入链路1822A运行的双向标签交换路径(LSP)上与PE 1812A交换IP包,该LSP为在PE1804A中配置的VRF的附接电路。每个VRF可包括或表示不同路由和具有不同路由的转发表。

IP/MPLS结构1801的PE路由器1802、1804可被配置在用于云服务的各个中心和分支布置中,其中PE 1804实现云服务集线器,以及PE 1802被配置为集线器的分支(用于各种中心和分支实例/布置)。中心和分支布置确保服务业务能够在中心PE和任何分支PE之间流动,但不直接在不同的分支PE之间流动。如下面进一步描述的,在用于基于数据中心的IP/MPLS结构1801和南向服务业务(即,从CSP到客户)的中心分支布置中,PE 1802将从PE 1810接收到的路由通告给PE 1804,PE 1804向PE1812通告路由。对于北向服务业务(即,从客户到CSP),PE 1804将从PE 1812接收到的路由通告给PE 1802,PE 1802将该路由通告给PE1810。

对于云交换点1803的一些客户,云交换点1803提供商可配置全网格布置,由此一组PE 1802、1804中的每者耦合到用于客户的不同客户站点网络。在此情况下,IP/MPLS结构1801实现用于笼到笼或冗余业务(也称为东西向或水平业务)的层3VPN(L3VPN)。L3VPN可实现闭合的用户组,由此每个客户站点网络可以向彼此发送业务,但是不能在L3VPN之外发送或接收业务。

PE路由器可根据对等模型而彼此耦合而无需使用覆盖网络。也就是说,PE 1810和PE 1812可不彼此直接对等以交换路由,而是经由IP/MPLS结构1801间接交换路由。在图18B的示例中,云交换点1803被配置为实现多个层3虚拟电路1830A-1830C(统称为“虚拟电路1830”)以将客户网络1808和云服务提供商网络1822与端到端IP路径互连。云服务提供商1820和客户1808中的每者可为用于多个虚拟电路1830的端点,其中,多个虚拟电路1830穿过用于IP/MPLS结构1801的PE/PE或PE/CE对和CSP/顾客之间的一或多个附接电路。虚拟电路1830表示通过IP/MPLS结构1801的在将客户网络连接到结构1801的附接电路和将云服务提供商网络连接到结构1801的附接电路之间的层3路径。每个虚拟电路1830可包括在PE1802、1804处具有端点的至少一个隧道(例如,LSP和/或通用路由封装(GRE)隧道)。PE1802、1804可建立彼此互连的全网格隧道。

每个虚拟电路1830可包括在IP/MPLS网络1801中配置的不同的中心和分支网络,其具有使用边界网关协议对等会话,在本示例中为全网格多协议内部边界网关协议(MP-iBGP)对等会话的全部或部分网格来交换路由的PE路由器1802、1804。MP-iBGP或简单的MP-BGP为路由器交换标记路由以实现基于MPLS的VPN的协议的示例。然而,PE 1802、1804可使用其它技术和/或协议来交换路由以实现IP-VPN。

在虚拟电路1830A的示例中,云服务提供商网络1820A的PE路由器1812A可经由与PE 1804A的路由协议(例如,eBGP)对等连接来向云服务提供商网络1820A发送至PE 1804A的路由。PE 1804A将该路由与可以具有相关联的VRF的中心和分支网络相关联,该中心和分支网络包括分支PE路由器1802A。PE 1804A然后输出至PE路由器1802A的路由;PE路由器1804A可输出指定PE路由器1804A作为下一跳路由器的路由以及标识中心和分支网络的标签。PE路由器1802A经由与PE 1810B的路由协议连接将路由发送至PE路由器1810B。PE路由器1802A可在添加云交换点1803的自主系统编号(例如,至BGP自主系统路径(AS_PATH)属性)并且指定PE路由器1802A作为下一跳路由器之后发送路由。因此,即使云交换点1803可基于在数据中心内,云交换点1803也为从客户1808到云服务提供商1820(反之亦然)的自主系统的路径中的自主系统“跳”。PE路由器1810B将路由安装到路由数据库,例如BGP路由信息库(RIB),以向云服务提供商网络1820A提供层3可达性。这样,云交换点1803“泄漏”从云服务提供商网络1820至客户网络1808的路线,没有云服务提供商网络1820到需要直接层对等连接的客户网络1808。

PE路由器1810B、1802A、1804A和1812A可在相反方向上执行类似的操作,以将由客户网络1808B发起的路由转发到PE 1812A,并且因此提供从云服务提供商网络1820A到客户网络1808B的连接。在虚拟电路1830B的示例中,PE路由器1812B、1804A、1802A和1810B以与上述用于建立虚拟电路1830B类似的方式交换用于客户网络1808B和云服务提供商1820B的路由。结果,数据中心1800内的云交换点1803内部化将在PE 1810B与PE 1812A、1812B中的每者之间建立的对等连接,以便对由不同云服务提供商网络1820A、1820B所提供的多个层3云服务执行云聚合,并向具有至云交换点1803的单个访问链路1816B的客户网络1808B交付多个聚合层3云服务。缺乏本文所述的技术,完全互连客户网络1808和云服务提供商网络1820将需要针对云服务提供商网络1820中的每者的PE 1810中的每者与PE 1812中的至少一者之间的3x3对等连接。例如,PE 1810A将需要与PE 1812中的每者的层3对等连接。利用本文所述的技术,云交换点1803可以通过内部化层3对等并提供在云访问和云聚合接口之间的基于数据中心的“传输”来使客户网络1808和云服务提供商网络1820与每个站点PE的一个对等连接完全互连(即,对于PE 1810和PE 1812中的每者)。

在IP/MPLS结构1801实现使用路由目标来控制IP骨干内的路由分发的BGP/MPLSIP VPN或其它IP-VPN的示例中,PE 1804可被配置为使用不同的不对称路由目标输入来自PE 1802的路由,并且输出从PE 1812所接收到的路由。同样,PE 1802可被配置为使用非对称路由目标输入来自PE 1804的路由并且输出从PE 1810接收到的路由。因此,PE 1802、1804可被配置为实现高级L3VPN,每个高级L3VPN包括IP/MPLS结构1801的基本主干L3VPN以及任何客户网络1808的外部网络以及附接到基本主干L3VPN的任何云服务提供商网络1820。每个高级L3VPN构成从云服务提供商网络1820至一或多个客户网络1808的云服务交付网络,并且反之亦然。这样,云交换点1803使得任何云服务提供商网络1820能够与任何客户网络1808交换云服务业务,同时内部化层3路由协议对等连接,否则将在客户网络1808对和云服务提供商网络1820之间建立用于给定对之间的任何云服务连接。换句话说,云交换点1803允许客户网络1808和云服务提供商网络1820中的每者建立至基于数据中心的层3交叉连接的单个(或多个冗余或其它原因)层3路由协议对等连接。通过过滤从云服务提供商网络1820到客户网络1808的路由,并且反之亦然,PE 1802、1804从而控制虚拟电路1830的建立以及客户网络1808和数据中心1800内的云服务提供商网络1820之间的相关云服务业务的流动。分布到MP-iBGP网格183中的路由可为VPN-IPv4路由,并且与路由识别器相关联以区分具有重叠地址空间的不同站点的路由。

互连平台103可接收用于创建、读取、更新和/或删除云交换点1803的端到端服务的服务请求。作为响应,互连平台103可配置PE 1802、1804和/或IP/MPLS结构1801的其它网络基础设施,以调配或获得关于服务的性能或其它操作信息。由互连平台103执行的用于调配服务的操作可包括配置或更新VRF、安装SDN转发信息、配置LSP或其它隧道、配置BGP、配置接入链路1816和聚合链路1822或者以其它方式更改IP/MPLS结构1801的配置。其它操作可包括向云服务提供商网络1820的编排系统发出服务请求,如下面进一步详述的。

图19为示出根据本文所述的技术的基于数据中心的云交换点的示例的框图,其中,该云交换点的路由器被互连平台103被配置有用于从多个云服务提供商网络向客户网络路由和转发聚合服务业务的VPN路由和转发实例。在该示例中,为了建立虚拟电路1830A-1830B,IP/MPLS结构1801的PE路由器1802A和1804A被配置有VRF。PE 1802A被配置有VRF1902A和1904A,而PE 1804A被配置有VRF 1902B和1904B。VRF 1902A被配置为输入由VRF1902B输出的路由,以及VRF 1902B被配置为输入由VRF 1902A输出的路由。该配置可包括用于在VRF 1902A、1902B之间输入/输出的不对称路由目标。VRF 1904A被配置为输入由VRF1902B输出的路由,以及VRF 1902B被配置为输入由VRF 1902A输出的路由。该配置可包括用于在VRF 1902A、1902B之间输入/输出的不对称路由目标。

在该示例中,PE 1804A运行相应的PE 1812A、1812B的BGP或其它路由分布协议对等连接1906B、1908B,以与相应的云服务提供商网络1820A、1820B交换路由。PE 1802A运行PE 1810B的BGP或其它他路由分布协议对等连接1910以与客户网络1808B交换路由。在一些示例中,PE 1802A、1804A可被静态地配置有用于站点网络的路由。

这里针对云交换点1803所述的管理员或互连平台可用VRF1902A-1902B、1904A-1904B来配置PE 1802A、1804A,以便泄漏PE 1812和PE 1810B之间的路由,并促进这里所示的虚拟电路1830的用于端对端IP路径的层3连接,同时通过促进基于数据中心或至少基于城市的连接来潜在地优化端到端IP路径。因此,借助云服务提供商网络1820的专用和/或公共路由,云交换点1803可提供对客户网络1808B的专用云服务提供商的访问。在北行方向上,借助客户网络1808的专用和/或公共路由,云交换点1803可向多个客户网络1808提供专用云服务提供商分配。PE1810B或PE 1802A、1804A中的任一者都不需要访问完整的互联网BGP路由表,以便到达云服务提供商网络1820或客户网络1808。此外,PE1802A、1804A可被配置为基于物理、IP、服务和VRF中的任一或多者来聚合客户/CSP路由和/或服务业务。

图20为示出根据在本公开中描述的技术的可通过使用开发框架来实现的开发框架和益处的设计方法的概念图。开发框架有利于强制实施域驱动设计并支持测试驱动开发的基于微服务的应用架构。开发框架还有利于“API契约优先”方法,其中,开发者最初创建/改进微服务的API定义,从该开发框架生成软件服务基础设施的构架。然后,开发者可通过将业务逻辑重用到基础设施上来实现微服务。

再者,此开发框架有利于基于模块的设计方法,并使用最佳代码生成实践生成“样板”代码。开发框架有利于用于交互式构架构建的端到端API生成,包括通过基于开发者最初指定的API契约定义生成假冒者和存根谓词。在一些示例中,开发框架使用nodesecurity.io来审计一或多个模块。

开发框架的方面可被构建在Node.js或其它类似的平台上,例如,提供事件驱动架构和非阻塞I/O API,其被设计为优化应用的吞吐量和用于实时web应用的可扩展性。Node.js是一个轻量级的开放源代码平台,它有助于松散耦合和可扩展的系统,这些系统使用例如内置于Node.js中的HTTP和JSON进行通信。这可有利于微服务设计原则。对于web应用框架,在一些示例中,开发框架可建立在Express.js和现有节点/本地生成模块之上。

编排器可利用状态机来实现以定义的顺序调用多个微服务以满足API契约的工作流。开发框架可使用水线和/或持久对象/关系映射(ORM)或用于数据库交互的其它ORM框架。开发框架可提供与构架的其它方面一起生成的集成日志特征。开发框架可提供集成的监测和单元和集成测试模块以及构架的其它方面。

开发框架可促进快速和可扩展的部署和运行时间开发/测试以提供“云中”的开发环境。开发框架可将每个微服务部署在用于隔离和模块化的单独容器中,同时也通过集成测试、登录、监测和诊断策略来提供增强的质量和可靠性。开发框架也可有利于动态和/或静态跨源资源共享(CORS)。

容器技术为用于跨大量计算资源部署工作单元的机制,并已成为可扩展性的战略部署策略。随着访问互联网的装置的爆炸式增长,部分原因是它们的更关注、可独立部署、更易于维护和可扩展,微服务正成为主要的架构模式。微服务和容器提供了构建可扩展系统的技术方法的融合。Node.js为开源平台,其针对构建高度可扩展的轻量级异步通信流程进行了优化并且向任何Web消费者暴露API。在本公开中描述的开发框架利用Node.js、微服务和容器,以提供用于基于微服务的应用的端到端创建、实现和部署的总体开发框架(诸如用于基于云的服务交换的互连平台)。

由开发框架促进的上述设计原则可提供以下益处中的一或多者:更快的上市时间、更好的性能、更好的用户体验、更容易构建、更快响应和可扩展的基于微服务的应用、减少的开发时间和松散耦合的系统设计。开发框架可在任何合适的执行环境上执行,包括一或多个服务器、工作站和/或基于云的环境,其包括被配置为执行开发框架的组件的一或多个处理器。

图20为示出根据在本公开中描述的技术的开发框架的逻辑视图的概念图。使用六边形表示来概念性地示出开发框架,其中RESTful API 1920向基于微服务的应用的不同用户基础呈现多信道接口。开发框架包括用于API契约建模(“模型”)1922的多个概念性组件;通知1924数据库或其它持久性存储连接(“数据”),其包括内存数据库1904A、至外部源1904B的RESTful接口、基于Oracle/SQL服务器/SQL的数据库1904C和NoSQL数据库1904D(统称为“数据库1904”);自动化构架1928、使用仓库1908模式的测试驱动开发1930、工作流引擎1932,其执行由编辑器1910(例如命令行界面(CLI))设计(至少在一些情况下)、使用基于容器的框架1906完成的至少一些实例的部署。

可使用开发框架来配置RESTful API 1920以呈现针对每个信道的完全可定制的API契约1902。在图20中所示的示例信道1902包括web套接字1902A、Ajax请求1902B、API1902C、物联网(IoT)1902D和HTML5应用1902E。编排被用于基于为每个信道1902的每个API契约请求所定义的规则和/或工作流来编排微服务。然而,一般情况下,编排器可通过执行允许每个信道1902的完全可定制的API契约的一组规则来处理API请求。在图20中概念性地示出并且在此描述的开发框架和基于微服务的应用架构可支持API请求/响应契约中的变化。在一些示例中,编排器设计涵盖跨不同信道1902的差异,同时提供对这些差异的相等支持。更具体地,编排器开发平台/框架可允许创建用于每个信道1902的定制端点。因此,请求/响应模型可为专用的,并且在一些情况下,针对每个信道1902进行优化以考虑唯一或不同的要求。使用开发平台/框架构建的编排器可直接和透明地处理与不同信道的所有网络通信。基于该请求,编排器加载关联的工作流并编排不同的微服务以实现契约。为了确保不同信道的有效交互,开发框架编排器可应用各种不同的优化。

图21为进一步详细示出根据在本公开中描述的技术的用于有利于构架构建、构建、测试和部署基于微服务的应用的开发框架的组件的框图。在该示例中的开发框架包括三个组件,即编排器平台2000、微服务平台2018和插件2038。编排器平台2000包括用于微服务发现的组件/应用、服务发现引擎2002、接口文档/公布(API文档引擎2004)、代码生成(代码生成器2006)、响应聚合和路由(响应聚合器2010)、状态机布置(状态机2012)和工作流执行(工作流运行程序2014)。

服务发现引擎2002可扩展Node.js和/或express.js。API文档引擎2004可扩展express.js和/或Swagger。代码生成器2006可扩展Swagger和/或socket.io。工作流运行程序2014可延长PM2。

工作流运行程序2014执行由定义微服务执行的排序和事件的状态机构组成的工作流,以产生整体服务并实现由编排器平台2000暴露的契约。工作流运行程序通过在适当的时间利用适当的输入调用每个微服务来编排微服务,维护工作流的状态、传递数据并为工作流执行提供可靠性和透明度。

用于微服务的开发、监测和执行的微服务平台2018包括用于代码生成(代码生成器2020)、接口文档/公布(API文档引擎2022)、日志记录(日志聚合器2024)、处理监测(过程监视器2026)、通知(通知服务2028)、API开发和执行(API框架2030)和安全(安全CORS检查器2032)的组件/应用。

代码生成器2020可扩展YAML。API文档引擎2022可扩展Swagger。Logaggregator2024可扩展logstash。过程监视器2026可扩展PM2。通知服务2028可扩展Node.js。API框架2030可扩展Node.js和/或express.js。安全CORS检查器2032可扩展express.js。

在图21的示例实例中,插件组件2038包括用于促进组件连接的组件/应用(公共连接器2040)、ORM 2042、开发框架适配器(Aqua适配器2044)、用于开发框架的命令行接口(CLI)(Aqua CLI 2046),开发者可据此请求该框架生成用于微服务的构架并执行在本公开中描述的其它步骤、用于连接到企业系统的企业系统连接器2048、开发框架核心模块(Aqua核心模块2050)、插件2052、模板引擎2054和事件聚合器2056。

用户/开发者可通过加载插件(节点模块)来扩展开发框架的功能。核心开发框架特征被开发为插件;用户可进一步将任何第三方节点模块作为插件来扩展。插件机制扩展了由Node.js提供的一个核心功能,并允许用户开发和/或加载以新的有趣的方式扩展该核心功能的插件。

图22为示出使用在本公开中描述的开发框架和技术,根据基于微服务的应用架构的用于开发应用的示例开发过程的流程图。最初,开发者安装/设置开发框架(2101);创建将暴露API并接收请求的API服务器(2102);并安装底层微服务执行框架(在本例中为Node.js)的相关性(2103)。然后,开发者可通过使用例如Swagger或YAML编辑API定义来开始应用的开发(2104)。API定义可包括关于API路径的信息,以及用于API路径和相关联的请求(例如,创建、读取、更新、删除)的响应类的模型方案。然后,开发者可使用开发框架CLI或其它接口来输入API定义并执行开发框架来构架构建API服务器应用(2105)。作为响应,开发框架自动地生成例如控制器、路由器、根据模型方案的模型、配置和验证数据、样本数据、测试用例和用于API服务器应用的实现文件。在这一点上,可以在没有来自开发者的用于实现逻辑、绑定在一起的接口、设置路由和控制等的进一步动作的情况下执行构架构建的API服务器。而是,开发者可简单地运行在步骤2102创建的API服务器(2106)以执行构架构建的API服务器应用。通过调用所执行的API服务器应用的API路径,开发者可探索API并细化API(2107)。如果开发者确定更改API定义(2150的“是”分支),则开发者可再次执行步骤2104-2107,根据需要可迭代。

开发者随后实现API端点(2108)并且可执行与构架一起自动生成的自动化测试(2109)。在实现了API端点之后,开发者可探索和测试API(2110)。如果开发者确定更改API定义(2152的“是”分支),则开发者可再次初始化步骤2104-2110,根据需要可迭代。如果开发者确定更改端点(2152的“是”分支),则开发者可再次初始化步骤2108-2110,根据需要迭代地更改API端点(微服务)的实现。

开发者还也可使用开发框架(2111)来定义所编排的工作流,例如图16-17的工作流WD1-WD4并且探索和测试所编排的工作流(2112)。如果开发者确定更改端点(2158的“是”分支),则开发者可再次初始化步骤2108-2110,根据需要迭代地更改API端点(微服务)的实现。如果开发者确定更改API定义(2156的“是”分支),则开发者可再次初始化步骤2104-2110,根据需要可迭代。开发者可进一步迭代步骤2111-2112并且通过迭代地执行步骤2104-2112来改变下层微服务的接口/植入。这样,开发者可使用本文所述的开发框架来快速构架构建基于微服务的API服务器应用。因为开发框架使得能够快速重组API定义,所以开发框架可促进对API和底层实现的更容易和迭代的改变,以允许开发者避免不必每次在API定义已改变时手动地重新创建或至少更改服务基础设施。

图23为示出根据在本公开中描述的技术,由开发框架执行并通过编排和微服务定义执行的开发框架项目的组件和端对端构架构建过程的概念图。使用开发框架和本文所描述的技术开发的基于微服务的应用包括至少一个工作流和至少一个微服务。因此,工作流项目2207包括微服务API项目2201和编排API项目2209相关性(以及用于部署目的的Docker基础设施2208)。开发者定义用于编排API项目2209的至少一个编排/工作流方案(定义)2210,并且还定义用于微服务API项目2201的至少一个微服务方案(定义)2202。方案2210可为(或者来自)一或多个微服务方案2202。多用途构架过程2203处理至少一个编排/工作流方案2210以生成包括路由2212的工作流构架、控制器2213和用于编排器的工作流2214。多用途构架构建过程2203处理至少一个微服务方案2202以生成包括路由2204的微服务构架、控制器2205和实现文件2206。

基于微服务的应用的路由器不同于例如路由包的网络路由器。根据本文所述的技术,基于微服务的应用的路由器接收发布到应用的API请求,并根据路径、请求属性、客户端应用、客户身份和其它参数来路由API请求。每个参数可以由构架构建过程自动生成的一或多个路由2212指定或引用。路由解析到也由构架构建过程自动生成的控制器2213。控制器执行业务逻辑以执行和编排一或多个工作流,以执行与由路由器根据路由被路由到控制器的API请求所调用的API端点相关联的功能。例如,控制器可被配置为执行与互连平台的“创建虚拟电路”API端点相关联的功能。用于基于微服务的应用的路由器将调用“创建虚拟电路”API端点的请求路由到控制器,该控制器执行一或多个工作流以实现该请求。

图24–26描绘根据本文所述的技术的用于开发框架的示例界面和输入/输出。

图24的接口2300和2302分别描绘执行开发框架CLI和用于开发框架CLI的启动屏幕。接口2300还示出可用于容易且快速地创建微服务存根的开发框架CLI的命令。

图25的接口2400示出由开发者创建的示例API契约。

图25的接口2402描绘针对在接口2400中描绘的API契约执行的构架构建过程。构架构建过程生成控制器和路由器、API契约中每个模型方案的模型、微服务的实现文件、样本数据、测试用例、验证文件以及用于开发、UAT、QA、生产和本地信息的配置。由开发框架自动生成的微服务蓝图可允许开发者快速开始实现用于微服务的业务逻辑,并避免手动创建微服务蓝图的这些方面。也就是说,开发框架可提供快速且有组织的方式来开始开发基于微服务的应用,并使开发者能够专注于编写可重用的应用或业务逻辑,而不是花费时间构建软件基础设施。

本文所述的开发框架可被用于开发用于基于云的服务交换的互连平台,诸如互连平台103。如关于图3A-3B和其它地方所述,互连平台可包括暴露用于多个信道,例如移动、web、API 402C、买家应用402A、卖家应用402B的专用接口的API网关403。互连平台包括如关于图1、2、3、3A-3B、4、13、14的互连平台的不同描绘和在本公开中的其它地方所述的编排器(例如,编排器706)和多个微服务(例如,微服务408D、708、1630)。编排器(和相关联的工作流)和微服务可使用在本公开中描述的开发框架来进行构架构建,以促进要由互连平台执行的特征和服务的快速开发,以互连基于云的服务并且管理在基于云的服务交换的此类互连。

图26描绘接口2500,其示出根据在接口2400中描绘的API契约所生成的用于微服务接口的文档和测试页面。开发框架可自动地生成用于应用的微服务/API目录。使用多个基于HTTP的微服务,很容易在各种接口中丢失,但开发框架自动构建基于YAML API契约的描述所有微服务及其暴露的功能的API目录。API目录可以是可搜索的。框架会为JavaScript Object Notation(JSON)描述为可用的每个端点自动创建/api-docs端点。

在此示例模型中,“订单”模型方案定义订单模型的字段。由已经处理订单模型方案的开发框架生成的接口2500呈现由该开发框架自动生成的HTTP操作2500A-2500D。POST操作按钮2500A使得用户能够使用用于订单微服务的自动生成的端点,从界面2500输入和添加新的订单实例,该端点再次由开发框架自动生成。GET操作按钮2500B,DELETE操作按钮2500C和PUT操作按钮2500D为订单实例提供相应的GET、DELETE和PUT测试功能。通过使用接口2500,用户可以执行微服务的测试和迭代开发。

图27为描绘根据在本公开中描述的技术的使用开发框架进行开发的基于云的服务交换的互连平台的组件的框图。编排器2630执行微服务管理2606,并且包括工作流管理器和根据工作流执行微服务的执行引擎2608。所示的多个微服务2632包括用于建立和管理云交换中的虚拟电路互连的虚拟电路2610以及用于至外部云服务2618、2620的外部连接的其它微服务2612、2614。其它微服务可对应于微服务708、微服务817、微服务819、云交换API服务409和如本文所述的互连平台的微服务的其它示例。编排器2630经由客户门口2602和外部API2604向不同类别的用户2600A-2600D呈现专用API信道。每个此API信道可使用如上所述的完全可定制的API契约来开发。

图28为示出根据本公开的一或多个技术运行的计算装置的一个示例的进一步细节的框图。图28可示出服务器、工作站、膝上型计算装置或其他计算装置2800的特定示例,其包括用于执行基于微服务的应用开发框架或本文所述的任何其它计算装置的一或多个处理器2802。计算装置2800的其它示例可以在其它实例中使用。虽然为了示例的目的而在图28中示出为独立的计算装置2800,但是计算装置可以是包括一或多个处理器或用于执行软件指令的其它合适的计算环境的任何组件或系统,并且例如不需要包括图28中所示的一或多个元件(例如,通信单元2806;并且在一些示例中,诸如存储装置2808的组件可以不与其它组件位于同一位置或在相同的机架中)。计算装置2800可被定位在云交换点128的任一云交换点内或者在由云交换提供商采用或使用的分支机构或云计算环境中并在其中执行另一互连设施。计算装置2800的实例可以由用于云交换的互连平台的开发者使用。这样,计算装置2800可表示应用框架开发系统。

如图28的具体示例所示,计算装置2800包括一或多个处理器2802、一或多个输入装置2804、一或多个通信单元2806、一或多个输出装置2812、一或多个存储装置2808和用户界面(UI)装置2810和通信单元2806。在一个示例中,计算装置2800还包括可由计算装置2800执行的一或多个应用2822、虚拟概念构建应用2824和操作系统2816。组件2802、2804、2806、2808、2810和2812中的每一者被耦合(物理地、通信地和/或可操作地)用于组件间通信。在一些示例中,通信信道2814可包括系统总线、网络连接、进程间通信数据结构或用于传送数据的任何其它方法。作为一个示例,组件2802、2804、2806、2808、2810和2812可通过一或多个通信信道2814耦合。

在一个示例中,处理器2802被配置为实现用于在计算装置2800内执行的功能和/或处理指令。例如,处理器2802可能够处理存储在存储装置2808中的指令。处理器2802的示例可以包括微处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或等效的分立或集成逻辑电路中的任一或多者。

一或多个存储装置2808可被配置为在运行期间在计算装置2800内存储信息。在一些示例中,存储装置2808被描述为计算机可读存储介质。在一些示例中,存储装置2808为临时存储器,这意味着存储装置2808的主要目的不是长期存储。在一些示例中,存储装置2808被描述为易失性存储器,这意味着当计算机被关闭时存储装置2808不保留所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和本领域已知的其它形式的易失性存储器。在一些示例中,存储装置2808被用于存储供处理器2802执行的程序指令。在一个示例中,存储装置2808由在计算装置2800上运行的软件或应用程序使用,以在程序执行期间临时存储信息。

在一些示例中,存储装置2808还包括一或多种计算机可读存储介质。存储装置2808可被配置为存储比易失性存储器更大量的信息。存储装置2808还可以被配置为用于信息的长期存储。在一些示例中,存储装置2808包括非易失性存储元件。此类非易失性存储元件的示例包括磁硬盘、光盘、软盘、闪存或电可编程存储器(EPROM)或电可擦除可编程(EEPROM)存储器的形式。

在一些示例中,计算装置2800还包括一或多个通信单元2806。在一个示例中,计算装置2800利用通信单元506经由一个或多个网络(例如一个或多个有线/无线/移动网络)与外部装置通信。通信单元506可以包括网络接口卡,例如以太网卡、光收发器、射频收发器或可以发送和接收信息的任何其它类型的装置。这种网络接口的其它示例可以包括3G和WiFi射频接口。在一些示例中,计算装置500使用通信单元2806与外部装置通信。

在一个示例中,计算装置2800还包括一或多个用户界面装置2810。在一些示例中,用户界面装置2810被配置为通过触觉、音频或视频反馈从用户接收输入。用户界面装置2810的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风或用于检测来自用户的命令的任何其它类型的装置。在一些示例中,存在敏感显示器包括触敏屏幕。

一或多个输出装置2812也可被包含在计算装置2800中。在一些示例中,输出装置2812被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出装置2812包括存在敏感显示器、声卡、视频图形适配器卡或用于将信号转换为人或机器可理解的适当形式的任何其它类型的装置。输出装置2812的附加示例包括扬声器、阴极射线管(CRT)监视器、液晶显示器(LCD)或可以向用户生成可理解输出的任何其它类型的装置。

计算装置2800可包括操作系统2816。在一些示例中,操作系统2816控制计算装置2800的组件的运行。例如,在一个示例中,操作系统2816促进一或多个应用2822和互连平台应用2824与处理器2802、通信单元2806、存储装置2808、输入装置2804、用户界面装置2810和输出装置2812通信。

应用2822和基于微服务的开发框架应用2824(“开发框架应用2824”)还可以包括可由计算装置2800执行的程序指令和/或数据。由计算装置2800可执行的示例开发框架应用2824可包括API服务器2850、编排开发和执行应用2852、微服务开发和执行应用2854以及插件2856中的任一者或多者,每个所示的虚线指示这些可以或可以不由计算装置2800的任何给定示例执行。

API服务器2850可被配置为暴露用于微服务的API和根据本文所述的技术进行构架构建的编排器。编排开发和执行应用2852可包括图21的编排器平台2000的组件/应用。微服务开发和执行应用2852可包括图21的微服务平台2018的组件/应用。插件2856可包括图21的插件2038的组件/应用。

本文所述的技术可在硬件、软件固件或其任何组合中实现。被描述为模块、单元或组件的各种特征可一起在集成逻辑装置中实现或者作为分立装置单独实现但为可互操作的逻辑装置或其它硬件装置。在一些情况下,电子电路的各种特征可被实施为一或多个集成电路装置,例如集成电路芯片或芯片组。

如果在硬件中实施,则本公开可针对诸如处理器或集成电路装置(例如集成电路芯片或芯片组)的装置。另选地或除此以外,如果在软件或固件中实现,则所述技术可至少部分地由包括指令的计算机可读数据存储介质实现,该指令在被执行时使处理器执行上述方法中的一或多者-。例如,计算机可读数据存储介质可存储由处理器执行的此类指令。

计算机可读介质可形成计算机程序产品的一部分,计算机程序产品可包括封装材料。计算机可读介质可包括诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)等计算机数据存储介质、闪存、磁性或光学数据存储介质等。在一些示例中,制品可包括一或多个计算机可读存储介质。

在一些示例中,计算机可读存储介质可包括非暂态介质。术语“非瞬态”可指示未被包含在载波或传播信号中的存储介质。在某些示例中,非暂时性存储介质可(例如,在RAM或高速缓存中)存储可以随时间改变的数据。

代码或指令可为由包括一或多个处理器,例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)的处理电路或其它等效的集成或分离逻辑电路执行的软件和/或固件。因此,如本文所使用的术语“处理器”可指的是任何前述结构或适于实现本文所描述的技术的任何其它结构。此外,在一些方面,在本公开中描述的功能可被设置在软件模块或硬件模块内。

除了上述之外或作为上述的替代,描述了以下实例。在任何以下实例中描述的特征可与本文所述的任何其它实例一起使用。

实例1.基于云的服务交换包括网络数据中心,其包括相应的端口,多个网络通过该端口连接到网络数据中心,每一网络具有不同的网络地址空间并与多个客户或云服务提供商中的不同客户或云提供商相关联;在网络数据中心内的多个互连资产,被配置成通过该网络数据中心的交换结构将与基于云的服务交换的多个客户相关联的每个网络连接到与云服务提供商相关联的一或多个网络,多个互连资产包括用于与多个客户相关联的每个网络的一组相应的一或多个虚拟电路并提供在与多个客户相关联的网络和从多个云服务提供商相关联的网络内执行的云服务之间的网络数据中心内的网络连通性;以及在网络数据中心内的一或多个管理装置上执行并呈现软件接口的互连平台,该软件接口可由与多个客户相关联的网络可达并且被配置成响应于接收到由在与客户相关联的任一网络内执行的应用发出的请求,访问多个互连资产以满足该请求。

实例2.根据实例1所述的基于云的服务交换,其中,软件接口包括发现应用程序编程接口,该发现应用程序编程接口包括至少一种方法,该至少一种方法被配置为响应于由第二应用对该方法的调用,返回多个互连资产的描述。

实例3.根据实例1-2中任一项所述的基于云的服务交换,其中,该软件接口包括事务应用程序编程接口,该事务应用程序编程接口包括至少一种方法,该方法被配置为响应于由第二应用对该方法的调用,调配虚拟电路中的一个、验证虚拟电路中的一个以及确认虚拟电路中的一个的删除。

实例4.根据实例1-3中任一项所述的基于云的服务交换,其中,该软件接口包括使用应用程序编程接口,该使用应用程序编程接口包括至少一种方法,该至少一种方法被配置为响应于应用对该方法的调用,返回用于云服务的推荐设置信息、关于竞争对手存在、云服务存在、云服务可用性、客户存在、客户可用性的定制分析和云服务的使用统计中的一个。

实例5.根据实例1-4中任一项所述的基于云的服务交换,其中,该软件接口包括支持应用程序编程接口,该支持应用程序编程接口包括至少一种方法,该方法被配置为响应于由第二应用对该方法的调用,执行管理帐户、对客户计费、验证客户的信用、配置与应用相关联的实体的配置文件以及配置与该应用相关联的实体的策略中的至少一个。

实例6.根据实例2-5中任一项所述的基于云的服务交换,其中,第二应用包括与客户相关联的应用和与一或多个云服务提供商的云服务提供商相关联的应用中的一个。

实例7.根据实例1所述的基于云的服务交换,其中,该软件接口包括应用程序编程接口,并且其中,接收由与客户相关联的任何网络内执行的应用所发出的请求包括接收应用程序编程接口的方法的方法调用。

实例8.根据实例1-7中任一项所述的基于云的服务交换,其中,软件接口包括表示性状态转移(RESTful)接口,并且其中,请求包括指定接口方法和多个互连资产的互连资产的资源标识符的应用数据。

实例9.根据实例1-8中任一项所述的基于云的服务交换,其中,多个互连资产另外包括端口、位置、顺序(order)、云服务、虚拟电路的带宽和该虚拟电路中的至少一个。

实例10.根据实例1-9中任一项所述的基于云的服务交换,其中,互连平台包括:应用程序编程接口网关,被配置为:执行软件接口以接收请求;以及基于被包含在该请求中的安全凭证来验证客户。

实例11.根据实例1-9中任一项所述的基于云的服务交换,其中,互连平台包括:应用程序编程接口网关,被配置为:执行所述软件接口以接收请求;调用云交换平台服务以访问多个互连资产以满足该请求;从云交换平台服务接收响应;以及向在与客户相关联的任何网络中执行的应用发送该响应的表示。

实例12.根据实例1-9中任一项所述的基于云的服务交换,其中,互连平台包括:至少一个子系统,其被配置为执行多个云交换服务,该多个云交换服务中的每个云交换服务被配置为执行虚拟电路调配任务;以及编排引擎,被配置为根据工作流来编排多个云交换服务以满足请求。

实例13.根据实例12所述的基于云的服务交换,其中,编排引擎被配置为通过将工作流和规则引擎应用于所述请求以及应用于策略和云服务配置文件中的至少一个来生成工作流,其中该工作流包括用于多个云交换服务的一系列请求。

实例14.根据实例12所述的基于云的服务交换,其中,互连平台包括:应用程序编程接口网关,被配置为至少基于请求来调用编排引擎。

实例15.根据实例1所述的基于云的服务交换,其中,为了访问多个互连资产以满足请求,互连平台被配置为调配虚拟电路中的一个。

实例16.根据实例1-9中任一项所述的基于云的服务交换,其中,互连平台包括:云服务查询服务;编排引擎;应用程序编程接口网关,其被配置为响应于接收到请求而调用编排引擎以获得云服务的描述,其中,编排引擎生成并执行调用云服务查询服务的工作流,其中,该云服务查询服务向编排引擎返回云服务的描述,其中,编排引擎将该云服务的描述返回至该应用程序编程接口网关,并且其中,响应于该请求,该应用程序编程接口网关向在与客户相关联的任一网络内执行的应用返回云服务的描述。

实例17.根据实例1-9中任一项所述的基于云的服务交换,其中,互连平台另外包括:虚拟电路查询服务;编排引擎;应用程序编程接口网关,其被配置为响应于接收到请求而调用编排引擎以获得虚拟电路的描述,其中,编排引擎生成并执行调用虚拟电路查询服务的工作流,其中,该虚拟电路查询服务向编排引擎返回虚拟电路的描述,其中,所述编排引擎将该虚拟电路的描述返回至该应用程序编程接口网关,并且其中,响应于该请求,该应用程序编程接口网关向在与客户相关联的任一网络内执行的应用返回虚拟电路的描述。

实例18.根据实例1-9中任一项所述的基于云的服务交换,其中,请求包括调配所述虚拟电路以向客户提供对云服务的访问的请求,其中,互连平台进一步包括:网络服务调配服务;编排引擎;应用程序编程接口网关,被配置为响应于接收到该请求而调用编排引擎来调配虚拟电路,其中,编排引擎生成并执行调用该网络服务调配服务的工作流,其中,该网络服务调配服务根据请求的参数建立虚拟电路。

实例19.根据实例18所述的基于云的服务交换,其中,互连平台另外包括:云服务提供商集成服务,其中,编排引擎生成并执行调用云服务提供商集成服务以请求一或多个云服务提供商的云服务提供商对虚拟电路的确认的工作流,并且其中,编排引擎响应于接收到云服务提供商对虚拟电路的确认,生成并执行以调用网络服务调配服务的工作流。

实例20.根据实例19所述的基于云的服务交换,其中,请求的参数指定端口的买方端口和端口的卖方端口,并且其中,互连平台另外包括:端口服务,其中,编排引擎生成并执行调用端口服务以验证该买方端口和卖方端口的工作流,并且其中,编排引擎响应于接收到买方端口和卖方端口的验证,生成并执行调用网络服务供应服务的工作流。

实例21.根据示例18所述的基于云的服务交换,其中,请求的参数指定虚拟电路的带宽,并且其中,根据请求的参数建立虚拟电路,网络服务调配服务建立虚拟电路具有带宽的虚拟电路。

实例22.根据实例1-21中任一项所述的基于云的服务交换,其中,客户包括网络服务提供商和企业中的一个。

实例23.根据实例1-22中任一项所述的基于云的服务交换,其中,多个网络中的每个是可公共寻址的并且具有不同的公共网络地址空间。

实例24.基于云的服务交换包括多个互连资产,被配置成将基于云的服务交换的客户连接到一或多个云服务提供商,该多个互连资产包括虚拟电路,客户通过该虚拟电路访问来自一或多个云服务提供商的云服务;以及编排引擎,其被配置成更改多个互连资产。

实例25.根据实例24所述的基于云的服务交换,进一步包括:至少一个子系统,被配置为执行多个云交换服务,该多个云交换服务中的每个云交换服务被配置为执行虚拟电路调配任务,其中,为了更改多个互连资产,编排引擎被配置为根据工作流来编排多个云交换服务以满足请求。

实例26.根据实例25所述的基于云的服务交换,其中,编排引擎被配置为通过将工作流和规则引擎应用于所述请求以及应用于策略和云服务配置文件中的至少一者来生成工作流,并且其中,该工作流包括用于多个云交换服务的一系列请求。

实例27.根据实例24-26中任一项所述的基于云的服务交换,进一步包括:具有软件接口的互连平台,该软件接口被配置为响应于接收到由与客户相关联的应用发出的请求,访问多个互连资产以满足请求;应用程序编程接口网关,被配置为至少基于该请求来调用编排引擎,其中,为了更改多个互连资产,编排引擎被配置为响应于应用程序编程接口网关调用该编排而更改多个互连资产。

实例28.一种方法,包括由在网络数据中心内的一或多个管理装置上的基于云的服务交换执行互连平台以呈现与多个客户相关联的网络可达的软件接口;并且响应于接收到由在与客户相关联的任一网络内执行的应用发出的请求,访问网络数据中心的多个互连资产以满足该请求,其中,该网络数据中心包括相应的端口,多个网络通过该端口连接到该网络数据中心,每个网络具有不同的网络地址空间并与多个客户或云服务提供商中的不同客户或云服务提供商相关联,并且其中,网络数据中心内的多个互连资产通过该网络数据中心的交换结构将与基于云的服务交换的多个客户相关联的每个网络连接到与云服务提供商相关联的一或多个网络,多个互连资产包括用于与多个客户相关联的每个网络的一组相应一或多个虚拟电路并提供在与多个客户相关联的网络和从多个云服务提供商相关联的网络内执行的云服务之间的网络数据中心内的网络连通性。

实例29.根据实例28所述的方法,其中,软件接口包括发现应用程序编程接口,该发现应用程序编程接口包括至少一种发现方法,该方法另外包括:响应于第二应用对发现方法的调用,通过该发现方法返回多个互连资产的描述。

实例30.根据实例28-29中任一项所述的方法,其中,该软件接口包括事务应用程序编程接口,该事务应用程序编程接口包括至少一种事务方法,该方法另外包括:响应于由第二应用对该事务方法的调用,由该事务方法调配虚拟电路中的一者、验证虚拟电路中的一者以及确认虚拟电路中的一者的删除。

实例31.根据实例28-30中任一项所述的方法,其中,软件接口包括使用应用程序编程接口,该使用应用程序编程接口包括至少一种使用方法,该方法另外包括:响应于应用对该使用方法的调用,通过该使用方法返回云服务的推荐设置信息中的一者、关于竞争者存在、云服务存在、云服务可用性、客户存在、客户可用性和云服务的使用统计的定制分析。

实例32.根据实例28-31中任一项所述的方法,其中,该软件接口包括支持应用程序编程接口,该支持应用程序编程接口包括至少一种支持方法,该方法另外包括:响应于由第二应用对该支持方法的调用,通过该支持方法执行管理帐户、对客户计费、验证客户的信用、配置与应用相关联的实体的配置文件以及配置与该应用相关联的实体的策略中的至少一者。

实例33.根据实例29-32中任一项所述的方法,其中,第二应用包括与客户相关联的应用和与一或多个云服务提供商的云服务提供商相关联的应用中的一者。

实例34.根据实例28所述的方法,其中,该软件接口包括应用程序编程接口,并且其中,接收由与客户相关联的任何网络内执行的应用所发出的请求包括接收应用程序编程接口的方法的方法调用。

实例35.根据实例28-34中任一项所述的方法,其中,软件接口包括表示性状态转移(RESTful)接口,并且其中,请求包括指定接口方法和多个互连资产的互连资产的资源标识符的应用数据。

实例36.根据实例28-35中任一项所述的方法,其中,多个互连资产另外包括端口、位置、顺序、云服务、虚拟电路的带宽和该虚拟电路中的至少一个。

实例37.根据实例28-36中任一项所述的方法,其中,互连平台包括应用程序编程接口网关,其中,接收请求包括执行软件接口以接收该请求,该方法另外包括:基于被包含在请求中的安全凭证来验证客户。

实例38.根据实例28-36中任一项所述的方法,其中,互连平台包括应用程序编程接口网关,其中,接收请求包括执行软件接口以接收该请求,该方法进一步包括:由应用程序编程接口网关调用云交换平台服务以访问多个互连资产以满足该请求;由应用程序编程接口网关从云交换平台服务接收响应;以及由应用程序编程接口网关向在与客户相关联的任何网络内执行的应用发送该响应的表示。

实例39.根据实例28-36中任一项所述的方法,该方法另外包括:由互连平台的至少一个子系统执行多个云交换服务,该多个云交换服务中的每个云交换服务被配置为执行虚拟电路调配任务;以及由互连平台的编排引擎根据工作流来编排多个云交换服务以满足该请求。

实例40.如实例39所述的方法,进一步包括:由编排引擎通过将工作流和规则引擎应用于该请求以及应用于策略和云服务配置文件中的至少一者来生成工作流,其中,该工作流包括对多个云交换服务的一系列请求。

实例41.根据实例39所述的方法,由互连平台的应用程序编程接口网关至少基于该请求调用编排引擎。

实例42.根据实例28所述的方法,其中,为了访问多个互连资产以满足请求,互连平台调配虚拟电路中的一个。

实例43.根据实例28-36中任一项所述的方法,其中,互连平台包括:云服务查询服务;编排引擎;应用程序编程接口网关,被配置为响应于接收到请求而调用编排引擎以获得云服务的描述,其中,编排引擎生成并执行调用云服务查询服务的工作流,其中,该云服务查询服务向编排引擎返回云服务的描述,其中,编排引擎将该云服务的描述返回至该应用程序编程接口网关,并且其中,响应于该请求,该应用程序编程接口网关向在与客户相关联的任一网络内执行的应用返回云服务的描述。

实例44.根据实例28-36中任一项所述的方法,其中,互连平台另外包括:虚拟电路查询服务;编排引擎;应用程序编程接口网关,其被配置为响应于接收到请求而调用编排引擎以获得虚拟电路的描述,其中,编排引擎生成并执行调用虚拟电路查询服务的工作流,其中,该虚拟电路查询服务向编排引擎返回虚拟电路的描述,其中,所述编排引擎将该虚拟电路的描述返回至该应用程序编程接口网关,并且其中,响应于该请求,该应用程序编程接口网关向在与客户相关联的任一网络内执行的应用返回虚拟电路的描述。

实例45.根据实例28-36中任一项所述的方法,其中,请求包括调配所述虚拟电路以向客户提供对云服务的访问的请求,其中,互连平台另外包括:网络服务调配服务;编排引擎;应用程序编程接口网关,其被配置为响应于接收到该请求而调用编排引擎来调配虚拟电路,其中,编排引擎生成并执行调用该网络服务调配服务的工作流,其中,该网络服务调配服务根据请求的参数建立虚拟电路。

实例46.根据实例45所述的方法,其中,互连平台另外包括:云服务提供商集成服务,其中,编排引擎生成并执行调用云服务提供商集成服务以请求一或多个云服务提供商的云服务提供商对虚拟电路的确认的工作流,并且其中,编排引擎响应于接收到云服务提供商对虚拟电路的确认,生成并执行以调用网络服务调配服务的工作流。

47.根据实例46所述的方法,其中,请求的参数指定端口的买方端口和端口的卖方端口,并且其中,互连平台进一步外包括:端口服务,其中,编排引擎生成并执行调用端口服务以验证该买方端口和卖方端口的工作流,并且其中,编排引擎响应于接收到买方端口和卖方端口的验证,生成并执行调用网络服务供应服务的工作流。

实例48.根据示例45所述的方法,其中,请求的参数指定虚拟电路的带宽,并且其中,根据请求的参数建立虚拟电路,网络服务调配服务建立虚拟电路具有带宽的虚拟电路。

实例49.根据实例28-48中任一项所述的方法,其中,客户包括网络服务提供商和企业中的一种。

实例50.根据实例28-49中任一项所述的方法,其中,多个网络中的每者是可公共寻址的并且具有不同的公共网络地址空间。

实例51.一种基于云的服务交换,包括:多个互连资产,其被配置成将基于云的服务交换的客户连接到一或多个云服务提供商,该多个互连资产包括虚拟电路,客户通过该虚拟电路访问来自一或多个云服务提供商的云服务;以及编排引擎,被配置成更改多个互连资产。

实例52.根据实例51所述的基于云的服务交换,进一步包括:至少一个子系统,其被配置为执行多个云交换服务,该多个云交换服务中的每个云交换服务被配置为执行虚拟电路调配任务,其中,为了更改多个互连资产,编排引擎被配置为根据工作流来编排多个云交换服务以满足请求。

实例53.根据实例52所述的基于云的服务交换,其中,编排引擎被配置为通过将工作流和规则引擎应用于所述请求以及应用于策略和云服务配置文件中的至少一者来生成工作流,并且其中,该工作流包括用于多个云交换服务的一系列请求。

实例54.根据实例51-53中任一项所述的基于云的服务交换,进一步包括:具有软件接口的互连平台,该软件接口被配置为响应于接收到由与客户相关联的应用发出的请求,访问多个互连资产以满足请求;应用程序编程接口网关,被配置为至少基于该请求来调用编排引擎,其中,为了修改多个互连资产,编排引擎被配置为响应于应用程序编程接口网关调用该编排而更改多个互连资产。

实例55.一种包括指令的计算机可读存储介质,该指令在被执行时,使一或多个处理器执行实例28-50的任何方法。

实例56.一种网络数据中心,包括用于执行实例28-50的任何方法的装置。

实例57.一种被配置为执行实例28-50中任一项所述的方法的装置。

实例58.一种装置,包括用于执行实例28-50中任一项所述的方法的装置。

实例59.一种方法,包括:由基于云的服务交换的编排引擎接收对由该基于云的服务交换所提供的云交换服务的客户端请求的指示;由该编排引擎选择用于提供云交换服务的工作流,其中,该工作流指定要被执行以实现所述云交换服务的客户端请求的一组任务;由编排引擎调用一或多个微服务以执行由所选的工作流指定的所述一组任务的任务;由该编排引擎合并在执行任务之后从微服务接收的响应;以及由编排引擎基于所合并的响应来发送对云交换服务的客户端请求的响应。

实例60.根据实例59所述的方法,其中,接收客户端请求的指示包括接收调配虚拟电路以用于在位于基于云的服务交换中的客户网络和位于基于云的服务交换的云服务提供商网络之间交换云服务数据的客户端请求的指示,其中,选择工作流包括选择用于调配虚拟电路的工作流,其中,用于调配虚拟电路的工作流指定一组任务,包括:(i)获得端口细节、(ii)获得城市(metro,地铁)细节以及(iii)基于端口细节和城市细节来创建虚拟电路。

实例61.根据实例59-60中任一项所述的方法,其中,编排引擎跨多个工作流运行任务线程分布所述组任务中的任务以访问一或多个微服务以执行该任务。

实例62.根据实例59-61中任一项所述的方法,其中,编排引擎在基于云的服务交换的网络数据中心内的一或多个管理装置上执行,其中,网络数据中心包括相应端口,多个网络据此连接到网络数据中心,该网络中的每一个网络具有不同的网络地址空间并且与多个客户中的不同客户或云服务提供商相关联。

实例63.根据实例59-62中任一项所述的方法,其中,一或多个微服务中的每个微服务包括经由端点可达的对应应用程序编程接口,并且其中,调用一或多个微服务包括由该编排引擎将应用数据发送至微服务的端点。

实例64.根据实例63所述的方法,其中,应用数据包括使用可扩展标记语言和JavaScript对象符号中的一种来编码的应用数据。

实例65.根据实例59-64中任一项所述的方法,其中,接收客户端请求的指示包括:接收调配基于云的服务交换中的虚拟电路以用于在位于基于云的服务交换中的客户网络和位于基于云的服务交换的云服务提供商网络之间交换云服务数据的客户端请求的指示,其中,调配虚拟电路包括:由编排器引擎:调用微服务的第一微服务以验证在该指示中所识别的云服务提供商中的云服务提供商;调用该微服务的第二微服务以验证客户网络的云交换的第一端口和云服务提供商网络的云交换的第二端口;以及调用该微服务的第三微服务以配置基于云的服务交换,以在该云交换的第一端口和该云交换的第二端口之间创建虚拟电路。

实例66.根据实例59-65中任一项所述的方法,其中,虚拟电路包括端到端层1路径和以太网虚拟电路中的一种。

实例67.根据实例59-65中任一项所述的方法,另外包括:响应于确定一或多个微服务中的第一微服务未能实现由编排引擎所发送的请求,由该编排引擎确定是否重试该请求的第一微服务;响应于确定重试该请求的第一微服务,由该编排引擎向第一微服务发送请求;以及响应于确定不重试该请求的第一微服务,由该编排引擎识别一或多个微服务中的第二微服务以执行该请求并将该请求发送至该第二微服务。

实例68.根据实例59-67中任一项所述的方法,其中,编排引擎经由位于基于云的服务交换中并且与相应客户相关联的多个网络可达的软件接口来接收客户端请求的指示。

实例69.根据实例59-68中任一项所述的方法,其中,接收客户端请求的指示包括接收客户端请求以查看在基于云的服务交换中的用于在位于基于云的服务交换中的客户网络和位于基于云的服务交换中的云服务提供商网络之间交换云服务数据的虚拟电路的指示,其中,满足客户端请求以查看虚拟电路包括:由编排器引擎:调用微服务的第一微服务以验证在该指示中所识别的虚拟电路请求参数;调用该微服务的第二微服务以查询虚拟电路以获得描述该虚拟电路的数据;从第二微服务接收描述该虚拟电路的数据;以及输出包括描述该虚拟电路的数据的对该客户端请求的响应。

实例70.根据实例59所述的方法,其中,选择工作流包括:由编排引擎确定发出客户端请求的客户端,并且基于与客户端相关联的配置文件来选择工作流。

实例71.一种基于云的服务交换,包括:多个互连资产,被配置为将基于云的服务交换的至少一个客户连接到多个云服务提供商;以及编排引擎,被配置为通过以下操作来更改多个互连资产:接收由基于云的服务交换所提供的云交换服务的客户端请求的指示;选择用于提供云交换服务的工作流,其中,该工作流指定要被执行以实现客户端请求的云交换服务的一组任务;调用一或多个微服务以执行由所选的工作流所指定的所述组任务的任务;合并在执行任务之后从微服务接收到的响应;以及基于所合并的响应,向该云交换服务的客户端请求发送响应。

实例72.根据实例71所述的基于云的服务交换,

其中,客户端请求的指示包括调配虚拟电路以用于在位于基于云的服务交换中的客户网络和位于基于云的服务交换的云服务提供商网络之间交换云服务数据的客户端请求的指示,其中,为了选择工作流,编排引擎被配置成选择用于调配虚拟电路的工作流,其中,用于调配虚拟电路的工作流指定一组任务,包括:(i)获得端口细节、(ii)获得城市细节以及(iii)基于端口细节和城市细节来配置互连资产以创建虚拟电路。

实例73.根据实例71所述的基于云的服务交换,其中,编排引擎被配置成区分跨多个工作流运行任务线程来分布所述组任务中的任务以访问一或多个微服务以执行该任务。

实例74.根据实例71所述的基于云的服务交换,其中,编排引擎被配置成在基于云的服务交换的网络数据中心内的一或多个管理装置上执行,并且其中,网络数据中心包括相应端口,多个网络据此连接到网络数据中心,该网络中的每一个网络具有不同的网络地址空间并且与多个客户中的不同客户或云服务提供商相关联。

实例75.根据实例71所述的基于云的服务交换,其中,一或多个微服务中的每个微服务包括经由端点可达的对应应用程序编程接口,并且其中,为了调用一或多个微服务,该编排引擎被配置为将应用数据发送到微服务的端点。

实例76.根据实例71所述的基于云的服务交换,其中,接收客户端请求的指示包括:调配基于云的服务交换中的虚拟电路以用于在位于基于云的服务交换中的客户网络和位于基于云的服务交换的云服务提供商网络之间交换云服务数据的客户端请求的指示,其中,为了调配虚拟电路,编排器引擎被配置成:调用微服务的第一微服务以验证在该指示中所识别的云服务提供商中的云服务提供商;调用该微服务的第二微服务以验证客户网络的云交换的第一端口和云服务提供商网络的云交换的第二端口;以及调用该微服务的第三微服务以配置基于云的服务交换,以在该云交换的第一端口和该云交换的第二端口之间创建虚拟电路。

实例77.根据实例76所述的基于云的服务交换,其中,虚拟电路包括端到端层1路径和以太网虚拟电路中的一者。

实例78.一种基于云的服务交换,包括:网络数据中心,其包括相应端口,多个网络通过该端口连接到网络数据中心,该网络中的每个具有不同的网络地址空间并且与多个客户中的不同客户或云服务提供商相关联;在网络数据中心内的多个互连资产,并且被配置为通过网络数据中心的交换结构将与基于云的服务交换的多个客户相关联的每个网络连接到与云服务提供商相关联的一或多个网络,多个互连资产包括用于与多个客户相关联的每个网络的相应一组一或多个虚拟电路,并且提供在与多个客户相关联的网络和与多个云服务提供商相关联的网络内执行的云服务之间的在该网络数据中心内的网络连接;以及被配置为由网络数据中心内的一或多个管理装置执行的互连平台,该互连平台包括:编排引擎,被配置为执行至少一个工作流,该工作流使该编排引擎调用多个微服务以管理虚拟电路;以及软件接口,其由与多个客户相关联的网络可达,并且被配置为响应于接收到客户端请求而命令编排引擎执行至少一个工作流。

实例79.一种应用开发框架系统,包括:一或多个可编程处理器,被配置为执行微服务平台以开发和执行多个微服务,其中,该微服务的每个微服务包括可独立部署的服务,该服务被配置为执行一或多个功能以实现微服务接口的接口契约,其中,一或多个可编程处理器被配置为执行编排平台,其用于开发和执行编排器以编排微服务以执行基于微服务的应用。

实例80.根据实例79所述的应用开发框架系统,其中,微服务平台被配置为针对多个微服务中的微服务并且至少基于定义微服务的接口契约的微服务定义,为该微服务生成服务基础设施构架。

实例81.根据实例80所述的应用开发框架系统,其中,服务基础设施构架包括至少一个控制器、路由器、至少一个实现文件、由所述微服务定义所定义的每个模型方案式的模型、样本数据和验证文件中的一或多者。

实例82.根据实例80所述的应用开发框架系统,其中,服务基础设施构架包括至少一个控制器和路由器,并且其中,路由器被配置为接收调用微服务的接口的请求,并且基于该请求确定至少一个控制器中处理该请求的控制器。

实例83.根据实例80所述的应用开发框架系统,其中,微服务平台包括代码生成器,其基于微服务定义生成微服务的可执行代码。

实例84.根据实例80所述的应用开发框架系统,其中,微服务平台包括应用程序编程接口(API)文档引擎,用于:基于接口契约生成描述该接口契约的用户可读数据;并通过用户界面装置输出用户可读的数据显示。

实例85.根据实例80所述的应用开发框架系统,其中,微服务平台包括聚合微服务的日志信息的日志聚合器。

实例86.根据实例80所述的应用开发框架系统,其中,微服务平台包括进程监视器。

实例87.根据实例80所述的应用开发框架系统,其中,微服务平台包括应用程序编程接口(API)框架。

实例88.根据实例9所述的应用开发框架系统,其中,API框架提供事件驱动架构和非阻塞I/O API。

实例89.根据实例79所述的应用开发框架,其中,微服务平台被配置为针对多个微服务中的微服务并且至少基于定义微服务的接口契约的微服务定义,生成微服务执行持久操作的外部数据库连接器。

实例90.根据实例79所述的应用开发框架系统,其中,编排平台被配置为至少基于定义微服务的相应接口契约的相应微服务定义来生成用于编排器的服务基础设施架构。

实例91.根据实例90所述的应用开发框架系统,其中,服务基础设施构架包括用于微服务的至少一个控制器、路由器和至少一个工作流中的一或多者。

实例92.根据实例90所述的应用开发框架系统,其中,编排平台包括服务发现引擎,该服务发现引擎被配置为发现将请求路由到该微服务的可用微服务。

实例93.根据实例90所述的应用开发框架系统,其中,编排平台包括应用程序编程接口(API)文档引擎,其用于:基于定义编排器的接口的接口契约生成描述该接口契约的用户可读数据;并通过用户界面装置输出用于显示的用户可读的数据。

实例94.根据实例90所述的应用开发框架系统,其中,编排平台包括代码生成器,其基于微服务定义生成编排器的可执行代码。

实例95.根据实例90所述的应用开发框架系统,其中,编排器调用多个微服务并从该多个微服务接收相应的响应,并且其中,该编排平台包括聚合响应并呈现对由编排器接收的请求的统一响应的响应聚合器。

实例96.一种应用开发框架系统,包括:一或多个可编程处理器,被配置为执行微服务平台以开发和执行多个微服务,其中,该微服务的每个微服务包括可独立部署的服务,该服务被配置为执行一或多个功能以实现微服务接口的接口契约,其中,一或多个可编程处理器被配置为执行编排平台,其用于开发和执行编排器以编排微服务以执行用于基于云的服务交换的互连平台,该基于云的服务交换被配置为使用一或多个虚拟电路来互连该基于云的服务交换的客户。

实例97.根据实例96所述的应用开发框架系统,其中,微服务包括用于创建和管理虚拟电路以互连基于云的服务交换的企业客户和基于云的服务交换的云服务提供商客户的微服务。

实例98.根据实例97所述的应用开发框架系统,其中,微服务包括虚拟电路微服务、端口微服务、链路聚合组微服务、城市微服务、云服务提供商细节微服务、服务质量微服务、客户服务和票务微服务、搜索微服务、资产和网络库存微服务、语言微服务和服务设置微服务中的一个或多个。

实例99.根据实例97所述的应用开发框架系统,其中,编排引擎编排工作流以实现由互连平台所提供的服务。

实例100.根据实例99所述的应用开发框架系统,其中,服务包括管理端口服务、管理城市服务、云服务提供商细节服务、订单管理服务、视图虚拟电路服务、删除虚拟电路服务、搜索服务、网络服务提供商服务、云服务提供商配置服务、支持和票务服务、监测和统计服务以及分析和推荐服务中的一个或多个。

实例101.根据实例99所述的应用开发框架系统,其中,服务对应于一或多个API网关API。

实例102.一种方法,包括:配置用于由执行环境执行的应用开发框架;创建应用程序编程接口(API)服务器;编辑至少一个定义文件,该至少一个定义文件中的每者定义用于编排器的接口;使用应用开发框架处理至少一个定义文件以生成用于包括一或多个微服务的基于微服务的应用的服务基础设施;以及由API服务器执行基于微服务的应用。

实例103.根据实例102所述的方法,另外包括:为一或多个微服务中的每者实现一组API端点;并且定义工作流,其中,编排器执行工作流以通过为一个或多个微服务中的每者调用相应组的API端点来编排一或多个微服务以实现由API服务器接收到的请求。

实例104.根据实例102所述的方法,进一步包括:定义工作流,其中,编排器执行工作流以编排一或多个微服务以实现由API服务器接收的请求。

实例105.根据实例102所述的方法,其中,基于微服务的应用包括用于基于云的服务交换的互连平台。

此外,在上述任何示例中阐述的任何特定特征可被组合成所述技术的有益实例。也就是说,任何特定特征一般可应用于本发明的所有实例。已经描述了本发明的各种实例。

已经描述了各种实施例。这些和其它实施例在所述实例的范围内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号