微服务架构的制作方法


微服务架构
1.本技术是2018年6月28日提交的、申请号为201810687136.2、发明名称为“微服务架构”的专利申请的分案申请。
技术领域
2.本公开一般涉及云计算的领域,以及更具体来说,可是非排他地涉及用于微服务架构的系统和方法。


背景技术:



3.当代计算实践已经从硬件特定计算移开并且转向“网络就是装置”。当代网络可包括托管大量通用硬件服务器装置(其包含在例如服务器机架中并且由管理程序来控制)的数据中心。每个硬件装置可运行虚拟装置(例如工作负荷服务器或虚拟桌面)的一个或多个实例
附图说明
4.本公开在关于附图读以下详细描述时被最好地理解。要强调的是,按照本行业的标准实践,各种特征不一定按比例绘制,并且仅用于说明目的。在显式或隐式示出比例的情况下,它仅提供一个说明性示例。在其他实施例中,为了论述的清楚起见,各种特征的尺寸可任意增加或减少。
5.图1是根据本说明书的一个或多个示例的云服务提供商(csp)的网络级图示。
6.图2是根据本说明书的一个或多个示例的数据中心的框图。
7.图3示出根据本说明书的一个或多个示例的计算平台的组件的框图。
8.图4是根据本说明书的一个或多个示例的微服务架构的框图。
9.图5是根据本说明书的一个或多个示例的用于注册和使用微服务的方法的流程图。
10.图6是根据本说明书的一个或多个示例的微服务实例的初始建立的框图。
11.图7是根据本说明书的一个或多个示例的可被认为是图6的框图的扩展的微服务的操作的说明。
12.图8是根据本说明书的一个或多个示例的消息服务链接的框图。
13.图9是根据本说明书的一个或多个示例的服务发现的框图。
14.图10是示出根据本说明书的一个或多个示例的消息转发的框图。
15.图11是根据本说明书的一个或多个示例的负荷平衡引擎的框图。
具体实施方式
16.以下公开提供用于实现本公开的不同特征的许多不同实施例或示例。下面描述组件和布置的具体示例,以简化本公开。这些无疑只是示例而不是旨在进行限制。此外,本公开可在各种示例中重复参考数字和/或字母。这种重复是为了简洁和清楚起见,而不是在本
质上规定所论述的各种实施例和/或配置之间的关系。不同实施例可具有不同优点,没有特定优点是任何实施例必须要求的。
17.在当代数据中心中,先前由专用逻辑元件所执行的功能现在可在逻辑功能方面更有用地被考虑。为了只提供一个说明性示例,在网络功能虚拟化(nfv)上下文中,服务链中的一跳可提供深度分组检查(dpi)。作为非限制性示例,其他微服务可包括加密、解密、压缩、解压缩、ip安全性(ipsec)、记帐功能和性能跟踪器。
18.在遗留网络环境中,示例dpi功能可已经通过专用dpi硬件设备来执行,所述专用dpi硬件设备硬件入口端口连接到服务链中的前一跳,并且其硬件出口端口连接到服务链中的下一跳。
19.这类硬编码网络功能在许多情况下已经由数据中心代替,其中像dpi的功能可采用若干不同方式来提供。例如,dpi功能可在形成虚拟服务设备的虚拟机(vm)(虚拟服务设备的实例能够按需产生)中操作的软件上被执行。但是,在一些部署中,甚至按需的虚拟机的预备也可能不是充分的。随着数据中心变得很大和业务量增加,等待时间和带宽变得越来越重要,以及数据中心操作员可希望避免服务功能成为性能瓶颈。因此,在许多数据中心中,附加灵活性和速度可通过另外专用某些功能来提供。
20.例如,替代按需预备vm dpi设备,数据中心可提供具有已经高度优化的专用资源的多个实例的资源池。资源池的优点在于,高度优化资源能够在许多不同节点之间共享。资源池作为非限制性示例可包括诸如计算节点、存储器(易失性或者非易失性)、存储装置、专用集成电路(asic)、芯片上系统(soc)或现场可编程门阵列(fpga)的元件。这类资源能够按需分配给计算节点(其可被认为是“合成节点”),以满足数据中心需要。因此,资源池可包括对于具体任务被优化的多个预预备设备或者能够聚合为这种节点的多种高能力资源。这类资源池对于在数据中心中托管许多不同种类的加速器可以是有用的。
21.资源池的一个示例可以是fpga池。这可以是能够按需配置和编程以按硬件或接近硬件速度来提供具体功能的fpga的池。因此,fpga池能够有利地提供与通过软件资源可用的灵活性类似的灵活性,但是具有与仅硬件资源类似的速度。因此,回到dpi设备的示例,来自fpga池的fpga可被分配给dpi功能,并且配置成按很高速度来提供dpi。
22.在其中需要甚至更高速度的情况下,还可提供真正硬件资源。这些可以是例如asic,其编程以按比采用软件能够被实现的速度高得多的速度来提供具体功能。
23.提供dpi的系统编程者可在设计时知道哪些资源是可用的,并且适当地编制软件。例如,如果系统设计者知道fpga池在数据中心是可用的,则他可编制他的软件以发现可用的fpga实例(例如经由组织器),并且请求fpga的一个或多个实例被编程具有dpi功能,并且然后将实际dpi处理移交给预备的fpga。但是数据中心的灵活性质使得有可能甚至在其中设计者在设计时可以不知道哪些资源在数据中心中将最终可用的情况下对这个系统进一步改进。
24.例如考虑以下情况:系统编程者在设计时知道他的软件要提供dpi功能并且优选的是以任何给定环境中按可能的最高速度来提供dpi,但是不知道(并且无需知道)将实行dpi功能的特定资源。
25.对于数据中心有可能的是具有可用的不同系统资源,诸如gpu阵列、多核cpu、硬件加速器、fpga、虚拟设备、和许多其他的。这些中的任一个可执行期望的功能或者可在执行
期望的功能中起作用,并且对于系统软件有利的是能够使用“最佳可用”资源,而不是被绑到一个具体资源。
26.在一些情况下,硬件和平台专门化可在软件栈中在低级来被检测和平衡。然而,这可能以基础硬件中的驱动器的便携性和维护为代价而出现。由于要求应用独自操控加速器或其他资源的存在或者不存在,所以系统编程者可能在如何实现任务(例如哪些资源将实行该任务)的细节中陷入困境,而不是集中于任务本身。
27.本说明书提供通过提供所谓的“微服务”来减轻这个问题的系统和方法。微服务指的是用于采用高度可配置和可缩放方式来划分功能性的框架,其能够将期望的功能无缝地封装在包装器中,而无需系统设计者在设计时知道功能将如何或在哪些资源上被实行。
28.本文所公开的系统和方法还解决针对微服务的实例的硬件和软件实现的缩放性。本文描述的是一种用于实现微服务的发现及其能力的框架。便携性和维护性得到增强,因为该框架能够适合于在将来成为可用的能力(包括跨不同供应商)。该框架还能够通过提供高度优化服务链接来充分减少等待时间。
29.作为示例,本文所公开的系统优化跨由多样低级组件(其经由“包装器”功能来访问,而不是单独被寻址)所构建的分布式系统的操作流程。通过将活跃消息的流程自动化和流线化为低等待时间微服务启用的链来进一步增强微服务的有用性。这能够消除对于请求/响应交互(其在许多实例中引入大量开销)的需要。
30.作为示例,微服务应用编程接口(api)暴露于主机软件。主机软件的设计者无需理解或关心微服务api后面的服务的实现细节。而是,微服务api提供对各种能力的标准化调用,包括输入和输出的类型和格式。微服务api然后提供对微服务驱动器的功能调用,微服务驱动器能够(可能结合组织器)发现和/或分配采用不同形式的各种微服务的实例,诸如硬件加速器、fpga、资源池、cpu、gpu或本地软件。
31.在微服务或者具有微服务能力的资源的实例上线时,它们可向服务发现功能(sdf)注册。sdf则能够保持可用微服务的目录,其可包括用于将标准微服务api调用转化成由微服务的具体实例可使用的api调用的映射。这个架构能够实现某些架构能力的专门化,诸如“线缆中的块”加速、从处理核启用的fpga功能集合或者具有高度专门化软件的目的优化处理器。这些能够按需要透明地集成到数据中心中。
32.当微服务驱动器接收对于新微服务的请求时,它能够查询sdf,并且标识微服务实例的可用性。要注意,这可以不仅包括当前运行微服务实例的可用性,而且还包括能够被预备以提供微服务的资源的可用性。例如,fpga可以是可用的,但是可能尚未编程以提供微服务。sdf目录可包括配置信息,诸如用于对fpga进行编程的以提供期望的微服务的门配置。微服务驱动器则能够查询sdf,以确定fpga可用于实行微服务功能,并且可从目录接收对于功能以及用于fpga的门配置的适当映射。微服务驱动器然后可采用门配置对fpga进行编程,以及一旦fpga被编程,微服务驱动器可开始经由标准化微服务api(其映射到那个fpga实例的特定接口)将调用转发到fpga。
33.类似过程能够用于预备例如虚拟机或虚拟设备实例、运行在cpu或gpu上的软件,或者将硬件加速器或asic实例分配给微服务使得它能够用于那个微服务。
34.这个框架能够提供超过其他解决方案(诸如用于抽离实例调用的细节的中间件的使用)的优点。这种中间件可增加等待时间或开销,以及取消解决方案的便携性,同时在一
些情况下还抑制硬件能力的全面表达。相比之下,根据本说明书的微服务架构,微服务动态地被发现并且预备为流,具有有机会完全利用微服务实例的硬件和/或软件能力。微服务驱动器操控在微服务api级的通用功能调用到对微服务实例的特定和优化的服务调用的转化。
35.因此,来自功能的各种实现的任务逻辑与实现细节隔离。这使任务能够对功能实际在哪和如何被执行是不可知的。如以下所描述的,这还能够使处理服务链的流程自动化,因为不同类型的多个微服务实例能够被预备并链接到一起成为服务链,而没有对于每个微服务实例将结果向上游传递回到vm或服务器的需要。在一些情况下,这能够消除请求-响应框架中要求的业务流程的许多。因此,微服务的预备是可适配的并且是高度优化的,以及新微服务和微服务实例能够跨数据中心作为加速器功能被扩散。
36.现在将更具体参照随附附图来描述用于微服务架构的系统和方法。应当注意,遍及附图,某些参考数字可被重复以指示具体装置或块跨附图是完全或基本上一致的。然而,这不旨在暗示所公开的各个实施例之间的任何具体关系。在某些示例中,元件的类可通过具体参考数字(“微件10”)被提及,而该类的单独种类或示例可通过带有连字符号的数字(“第一特定微件10-1”和“第二特定微件10-2”)被提及。
37.图1是根据本说明书的一个或多个示例的云服务提供商(csp)102的网络100的网络级图示。作为非限制性示例,csp 102可以是传统企业数据中心、企业“私有云”或“公共云”,提供诸如基础设施即服务(iaas)、平台即服务(paas)或者软件即服务(saas)的服务。
38.csp 102可预备某个数量的工作负荷集118,其可以是单独服务器、刀片服务器、机架安装服务器或者任何其他适当服务器拓扑的的集。在这个说明性示例中,示出两个工作负荷集118-1和118-2,每个提供机壳148中的机架安装服务器146。
39.每个服务器146可托管独立操作系统并且提供服务器功能,或者服务器可被虚拟化,在此情况下,它们可在虚拟机管理器(vmm)、管理程序和/或组织器的控制下,并且可托管一个或多个虚拟机、虚拟服务器或虚拟设备。这些服务器机架可并置于单个数据中心中,或者可位于不同地理位置的数据中心。取决于合同,一些服务器146可特定地专用于某些企业客户或租户,而其他服务器可被共享。
40.数据中心中的各种装置可经由交换结构170(其可包括一个或多个高速路由选择和/或交换装置)相互连接。交换结构170可提供“南-北”业务(例如往和来于例如互联网的广域网(wan)的业务)以及“东-西”业务(例如跨数据中心的业务)。在历史上,北-南业务占网络业务的大部分,但是随着万维网服务变得更复杂和分布,东-西业务量已经上升。在许多数据中心中,东-西业务现在占业务的大多数。
41.此外,随着每个服务器146的能力增加,业务量可进一步增加。例如,每个服务器146可提供多个处理器插槽,其中各插槽接纳具有四至八个核的处理器连同对于核的足够的存储器。因此,每个服务器可托管大量vm,每个vm生成其自己的业务。
42.为了适应数据中心中的大量业务,可提供高能力的交换结构170。交换结构170在这个示例中示为“平坦”网络,其中每个服务器146可具有到架顶(tor)交换机120(例如“星形”配置)的直接连接,并且每个tor交换机120耦合到核交换机130。这个二层平坦网络架构仅作为说明性示例示出。在其他示例中,可使用其他架构,作为非限制性示例,诸如基于“clos”架构的三层星形或叶脊(又称作“胖树”拓扑)、中心辐射形拓扑、网格拓扑、环形拓扑
或者3-d网格拓扑。
43.结构本身可通过任何适合的互连来提供。例如,每个服务器146可包括结构接口,诸如intel
®
主机结构接口(hfi)、网络接口卡(nic)或另一主机接口。主机接口本身可经由互连或总线(诸如pci、pcie等)耦合到一个或多个处理器,并且在一些情况下,这个互连总线可被认为是结构170的组成部分。
44.互连技术可通过单个互连或者混合互连来提供,这样其中pcie提供芯片上通信的情况下,1gb或10gb铜线以太网提供到tor交换机120的相对短的连接以及光缆提供到核交换机130的相对较长的连接。互连技术作为非限制性示例包括intel
®ꢀ
omnipath
tm
、truescale
tm
、超路径互连(upi)(以前称作qpi或kti)、stl、fibrechannel、以太网、基于以太网的fibrechannel(fcoe)、infiniband、pci、pcie或光纤,这里只列举几个。这些中的一些技术将比其他技术更适合于某些部署或功能,以及选择用于即刻应用的适当结构是技术人员的职责。
45.然而要注意,虽然诸如omnipath
tm
的高端结构在本文中作为说明被提供,但是更一般来说,结构170可以是对于具体应用的任何适合互连或总线。在一些情况下,这能包括遗留互连,像局域网(lan)、令牌环网、同步光网络(sonet)、异步传递模式(atm)网络、无线网络(例如wifi和蓝牙)、“简易老式电话系统”(pots)互连、或类似的。还明确预期的,在将来,新网络技术将出现,以补充或取代这里所列出那些中的一些,以及任何这类将来网络拓扑和技术能够是或者形成结构170的一部分。
46.在某些实施例中,结构170可在如最初在osi七层网络模型中概述的各种“层”上提供通信服务。在当代实践中,没有严格遵守osi模型。一般来说,层1和2常常称作“以太网”层(尽管在大数据中心中,以太网常常通过更新的技术来代替)。层3和4常常称作传送控制协议/因特网协议(tcp/ip)层(其可进一步细分为tcp和ip层)。层5-7可称作“应用层”。这些层定义作为有用框架来公开,而不旨在进行限制。
47.图2是根据本说明书的一个或多个示例的数据中心200的框图。在各种实施例中,数据中心200可以是与图1的数据中心100相同的数据中心,或者可以是不同数据中心。附加视图在图2中被提供以示出数据中心200的不同方面。
48.数据中心200可由组织器260来控制。组织器260可提供例如数据中心200上的软件定义连网(sdn)、网络功能虚拟化(nfv)、虚拟机管理和类似服务。组织器260可以是具有其自己的存储器、存储装置、结构接口、和一个或多个专用处理器的独立设备。在另一个示例中,组织器260本身可以是虚拟机或虚拟设备。组织器260可具有数据中心200的全局视图,并且可具有管理和配置多个服务的能力,诸如根据需要动态分配租户、域、服务、服务链、虚拟机、虚拟交换机和工作负荷服务器以满足当前需求。
49.在这个示例中,提供结构270,以互连数据中心200的各种方面。结构270可与图1的结构170相同,或者可以是不同结构。如以上,结构270可通过任何适合互连技术来提供。在这个示例中,intel
®ꢀ
omnipath
tm
被用作说明性和非限制性示例。
50.如所示,数据中心200包括多个逻辑元件,其形成多个节点。应当理解,每个节点可由物理服务器、服务器的组或其他硬件来提供。每个服务器可正运行如适于其应用的一个或多个虚拟机。
51.节点0 208是处理节点,其包括处理器插槽0和处理器插槽1。处理器可以是例如具
有多个核(例如4或8个核)的intel
®ꢀ
xeon
tm
处理器。节点0 208可配置成诸如通过托管多个虚拟机或虚拟设备来提供网络或工作负荷功能。
52.处理器插槽0与处理器插槽1之间的板载通信可通过板载上行链路278来提供。这可提供两个处理器插槽之间的超高速短长度互连,使得运行于节点0 208上的虚拟机能够以超高速相互通信。为了促进此通信,虚拟交换机(vswitch)可被预备在节点0 208上,其可被认为是结构270的部分。
53.节点0 208经由结构接口272来连接到结构270。结构接口272可以是如上所描述的任何适当结构接口,并且在此具体说明性示例中,可以是用于连接到intel
®ꢀ
omnipath
tm
结构的intel
®ꢀ
hfi。在一些示例中,与结构270的通信可诸如通过提供通过omnipath

的upi隧道传递来隧道传递。
54.因为数据中心200可采用分布式方式提供许多功能(其在前几代是板载提供的),所以可提供高能力结构接口272。结构接口272可按每秒数千兆位的速度操作,并且在一些情况下可与节点0 208紧密耦合。例如,在一些实施例中,对于结构接口272的逻辑与芯片上系统上的处理器直接集成。这提供结构接口272与处理器插槽之间的超高速通信,而没有对于中间总线装置(其可将附加等待时间引入结构中)的需要。然而,这不是暗示其中结构接口272通过传统总线被提供的实施例被排除。而是,明确预期的是,在一些示例中,结构接口272可在总线(诸如pcie总线,其是pci的串行化版本,提供比传统pci更高的速度)上提供。遍及数据中心200,各种节点可提供不同类型的结构接口272,诸如板载结构接口和插件结构接口。还应当注意,芯片上系统中的某些块可作为知识产权(ip)块来提供,其作为模块化单元来投入集成电路中。因此,结构接口272在一些情况下可从此类ip块来得出。
55.要注意,按照“网络即装置”方式,节点0 208可提供有限或者没有提供板载存储器或存储装置。更确切地,节点0 208可主要依靠分布式服务、诸如存储器服务器和网络存储服务器。在板上,节点0 208可以仅提供足够存储器和存储装置以引导装置和使它与结构270进行通信。这种分布式架构因当代数据中心的超高速而是可能的,并且可以是有利的,因为不需要对于每个节点过预备资源。更确切地,可在多个节点之间动态预备高速或专用存储器的大池,使得每个节点可以访问大资源池,但是那些资源在那个具体节点不需要它们时不会闲置。
56.在这个示例中,节点1存储器服务器204和节点2存储服务器210提供节点0 208的操作存储器和存储能力。例如,存储器服务器节点1 204可提供远程直接存储器存取(rdma),由此节点0 208可采用dma方式经由结构270来访问节点1 204上的存储器资源,类似于它原本如何访问其自己的板载存储器。由存储器服务器204所提供的存储器可以是传统存储器、诸如双倍数据速率类型3(ddr3)动态随机存取存储器(dram)(其是易失性的),或者可以是更奇异类型的存储器、诸如永久快速存储器(pfm)(像intel
®
3d crosspoint
tm
(3dxp)),其按像dram的速度操作,但是是非易失性的。
57.类似地,可提供存储服务器节点2 210,而非为节点0 208提供板载硬盘。存储服务器210可提供连网的磁盘束(nbod)、pfm、独立磁盘冗余阵列(raid)、独立节点冗余阵列(rain)、网络附连存储装置(nas)、光学存储装置、磁带驱动器或者其他非易失性存储器解决方案。
58.因此,在执行其指定的功能中,节点0 208可从存储器服务器204来访问存储器,并
且将结果存储在由存储服务器210所提供的存储装置上。这些装置的每个经由结构接口272(其提供使这些技术成为可能的快速通信)来耦合到结构270。
59.作为进一步说明,还示出节点3 206。节点3 206还包括结构接口272,连同通过上行链路内部连接的两个处理器插槽。然而,不像节点0 208,节点3 206包括其自己的板载存储器222和存储装置250。因此,节点3 206可配置成主要在板上执行其功能,并且可以不被要求依靠存储器服务器204和存储服务器210。然而,在适当情况下,节点3 206可与节点0 208相似地采用分布式资源来补充其自己的板载存储器222和存储装置250。
60.本文所公开的各种组件的基本构建块可称作“逻辑元件”。逻辑元件可包括硬件(包括例如软件可编程处理器、asic或fpga)、外部硬件(数字、模拟或混合信号)、软件、往复软件、服务、驱动器、接口、组件、模块、算法、传感器、组件、固件、微码、可编程逻辑或者能够进行协调以实现逻辑操作的对象。此外,一些逻辑元件由有形非暂态计算机可读介质(其上存储了可执行指令以指示处理器执行某个任务)来提供。此类非暂态介质作为非限制性示例可包括例如硬盘、固态存储器或磁盘、只读存储器(rom)、永久快速存储器(rfm)(例如intel
®ꢀ
3d crosspoint
tm
)、外部存储装置、独立磁盘冗余阵列(raid)、独立节点冗余阵列(rain)、网络附连存储装置(nas)、光学存储装置、磁带驱动器、备份系统、云存储装置或者以上所述的任何组合。此类介质还可包括指令,其编程到fpga中或者编码在asic或处理器上的硬件中。
61.图3示出根据本说明书的一个或多个示例的计算平台302a的组件的框图。在描绘的实施例中,平台302a、302b和302c连同数据中心管理平台306以及数据分析引擎304经由网络308来互连。在其他实施例中,计算机系统可包括任何适合数量(即,一个或多个)平台。在一些实施例中(例如当计算机系统仅包括单个平台时),系统管理平台306的全部或一部分可被包括在平台302上。平台302可包括的平台逻辑310,其具有一个或多个中央处理器(cpu)312、存储器314(其可包括任何数量的不同模块)、芯片集316、通信接口318以及任何其他适合硬件和/或软件,以执行管理程序320或其他操作系统,其能够执行与运行在平台302上的应用关联的工作负荷。在一些实施例中,平台302可用作启用这些应用的一个或多个客户系统322的主机平台。平台302a可表示任何适合计算环境,诸如高性能计算环境、数据中心、通信服务提供商基础设施(例如演进分组核的一个或多个部分)、存储器中计算环境、交通工具(例如汽车或飞机)的计算系统、物联网环境、工业控制系统、其他计算环境或者其组合。
62.在本公开的各种实施例中,监测多个硬件资源(例如核和非核)的累加压力和/或累加压力的速率,以及计算机平台302a的实体(例如系统管理平台306、管理程序320或其他操作系统)可按照压力信息来指配平台逻辑310的硬件资源以执行工作负荷。在一些实施例中,自诊断能力可与压力监测相组合,以更准确地确定硬件资源的健康。每个平台302可包括平台逻辑310。平台逻辑310连同其他能够实现平台302的功能性的逻辑一起包括一个或多个cpu 312、存储器314、一个或多个芯片集316和通信接口328。虽然示出三个平台,但是计算机平台302a可与任何适合数量的平台互连。在各种实施例中,平台302可驻留于电路板,其安装在机壳、机架或另一适合结构中,其包括通过网络308(其可包括例如机架或机壳交换机)耦合在一起的多个平台。
63.cpu 312每个可包括任何适合数量的处理器核和支持逻辑(例如非核)。核可经过
驻留于cpu 312和/或芯片集316的一个或多个控制器相互耦合、耦合到存储器314、至少一个芯片集316和/或通信接口318。在具体实施例中,cpu 312被实施在插槽(其永久或可拆卸地耦合到平台302a)内。虽然示出四个cpu,但是平台302可包括任何适合数量的cpu。
64.存储器314可包括任何形式的易失性或者非易失性存储器,包括但不限于磁介质(例如一个或多个磁带驱动器)、光学介质、随机存取存储器(ram)、只读存储器(rom)、闪速存储器、可拆卸介质或者任何其他适合的本地或远程存储器组件或多个组件。存储器314可由平台302a用于短期、中期和/或长期存储。存储器314可存储由平台逻辑310所利用的任何适合数据或信息,包括嵌入计算机可读介质中的软件和/或硬件中结合或者以其他方式(例如固件)存储的编码逻辑。存储器314可存储由cpu 312的核所使用的数据。在一些实施例中,存储器314还可包括对于指令的存储装置,指令可由cpu 312的核或其他处理元件(例如驻留于芯片集316的逻辑)来执行,以提供与平台逻辑310的可管理性引擎326或其他组件关联的功能性。平台302还可包括一个或多个芯片集316,其包括任何适合逻辑,以支持cpu 312的操作。在各种实施例中,芯片集316可驻留于与cpu 312相同的管芯或封装,或者驻留于一个或多个不同管芯或封装。每个芯片集可支持任何适合数量的cpu 312。芯片集316还可包括一个或多个控制器,以将平台逻辑310的其他组件(例如通信接口318或存储器314)耦合到一个或多个cpu。在所描绘的实施例中,每个芯片集316还包括可管理性引擎326。可管理性引擎326可包括任何适合逻辑,以支持芯片集316的操作。在具体实施例中,可管理性引擎326(其又可称为创新引擎)能够从芯片集316、cpu 312和/或由芯片集316所管理的存储器314、平台逻辑310的其他组件和/或平台逻辑310的组件之间的各种连接来收集实时遥测数据。在各种实施例中,所收集的遥测数据包括本文所述的压力信息。
65.在各种实施例中,可管理性引擎326作为带外异步计算代理进行操作,其能够与平台逻辑310的各种元件进行接口,以对cpu 312上的运行进程不具有中断或者具有最小中断来收集遥测数据。例如,可管理性引擎326可包括芯片集316上的专用处理元件(例如处理器、控制器或另一逻辑),其提供可管理性引擎326的功能性(例如,通过执行软件指令),因而保存cpu 312的处理循环以用于与由平台逻辑310所执行的工作负荷关联的操作。此外,对于可管理性引擎326的专用逻辑可相对于cpu 312异步操作,并且可采集遥测数据的至少一些,而不增加cpu上的负荷。
66.可管理性引擎326可处理它所收集的遥测数据(本文将提供压力信息的处理的特定示例)。在各种实施例中,可管理性引擎326向计算机系统中的其他元件(诸如一个或多个管理程序320或其他操作系统和/或系统管理软件(其可运行在任何适合逻辑上、例如系统管理平台306))报告它所收集的数据和/或其处理的结果。在具体实施例中,诸如已经累加过量压力的核的关键事件可在用于报告遥测数据的正常间隔之前被报告(例如可在检测时立即发送通知)。
67.另外,可管理性引擎326可包括可编程代码,其可配置成设置具体芯片集316将管理哪个(哪些)cpu 312和/或将收集哪些遥测数据。
68.芯片集316每个还包括通信接口328。通信接口328可用于芯片集316与一个或多个i/o装置、一个或多个网络308和/或耦合到网络308的一个或多个装置(例如系统管理平台306)之间的信令和/或数据的通信。例如,通信接口328可用于发送和接收网络业务、例如数据分组。在具体实施例中,通信接口328包括一个或多个物理网络接口控制器(nic)、又称作
网络接口卡或网络适配器。nic可包括用于使用任何适合物理层和数据链路层标准(例如以太网(例如,如通过ieee 802.3标准所定义)、光纤信道、infiniband、wi-fi或另一适合标准)进行通信的电子电路。nic可包括一个或多个物理端口,其可耦合到线缆(例如以太网线缆)。nic可以能够实现芯片集316的任何适合元件(例如可管理性引擎326或交换机330)与耦合到网络308的另一个装置之间的通信。在各种实施例中,nic可与芯片集相集成(即,可在与芯片集逻辑的其余部分相同的集成电路或电路板上),或者可机电地耦合到芯片集的不同集成电路或电路板上。
69.在具体实施例中,通信接口328可允许与由可管理性引擎326所执行的管理和监测功能关联的(例如可管理性引擎326与数据中心管理平台306之间的)数据的传递。在各种实施例中,可管理性引擎326可利用通信接口328的元件(例如一个或多个nic)来报告遥测数据(例如向系统管理平台306),以便保留对于与由平台逻辑310所执行的工作负荷关联的操作的通信接口318的nic的使用。
70.交换机330可耦合到通信接口328的各种端口(例如通过nic所提供的),并且可在这些端口与芯片集316的各种组件(例如耦合到cpu 312的一个或多个高速外设部件互连(pcie)通道)之间交换数据。交换机330可以是物理或虚拟(即,软件)交换机。
71.平台逻辑310可包括附加通信接口318。与通信接口328类似,通信接口318可用于平台逻辑310与一个或多个网络308和耦合到网络308的一个或多个装置之间的信令和/或数据的通信。例如,通信接口318可用于发送和接收网络业务、例如数据分组。在具体实施例中,通信接口318包括一个或多个物理nic。这些nic可能够实现平台逻辑310的任何适合元件(例如cpu 512或存储器514)与耦合到网络308的另一个装置(例如,其他平台的元件或者经过一个或多个网络耦合到网络308的远程计算装置)之间的通信。
72.平台逻辑310可接收并且执行任何适当类型的工作负荷。工作负荷可包括对利用平台逻辑310的一个或多个资源(例如一个或多个核或关联逻辑)的任何请求。例如,工作负荷可包括:对实例化软件组件(诸如i/o装置驱动器324或客户系统322)的请求;对处理从虚拟机332或者平台302a外部的装置(例如耦合到网络308的网络节点)所接收的网络分组的请求;对执行与客户系统322关联的进程或线程、平台302a上运行的应用、管理程序320或者平台302a上运行的另一操作系统的请求;或者其他适合的处理请求。
73.虚拟机332可通过其自己的专用硬件来模拟计算机系统。虚拟机332可运行在管理程序320顶上的客户操作系统。平台逻辑310的组件(例如cpu 312、存储器314、芯片集316和通信接口318)可被虚拟化,使得它对客户操作系统看来虚拟机332具有其自己的专用组件。
74.虚拟机332可包括虚拟化nic(vnic),其由虚拟机用作其网络接口。vnic可被指配媒体访问控制(mac)地址或另一标识符,因而允许多个虚拟机332在网络中是单独可寻址的。
75.vnf 334可包括能够被部署在虚拟化基础设施中、具有定义的接口和行为的功能构建块的软件实现。在具体实施例中,vnf 334可包括一个或多个虚拟机332,其共同提供特定功能性(例如广域网(wan)优化、虚拟私有网络(vpn)端接、防火墙操作、负荷平衡操作、安全功能等)。运行在平台逻辑310上的vnf 334可提供与通过专用硬件所实现的传统网络组件相同的功能性。例如,vnf 334可包括用于执行任何适合的nfv工作负荷的组件,例如虚拟化演进分组核(vepc)组件、移动管理实体、第三代合作伙伴项目(3gpp)控制和数据平面组
件等。
76.sfc 336是被组织为链以执行一系列操作(诸如网络分组处理操作)的vnf 334的组。服务功能链接可提供定义网络服务(例如防火墙、负荷平衡器)(其在网络中拼接在一起以创建服务链)的有序列表的能力。
77.管理程序320(又称作虚拟机监测器)可包括用于创建和运行客户系统322的逻辑。管理程序320可为由虚拟机所运行的客户操作系统提供虚拟操作平台(即,在它们实际上合并到单个硬件平台上时在虚拟机看来它们正运行在独立物理节点上),并且管理由平台逻辑310的客户操作系统的执行。管理程序320的服务可通过以软件进行虚拟化或者经过硬件辅助资源(其要求最小软件干预)或者两者来提供。多种客户操作系统的多个实例可由管理程序320来管理。每个平台302可具有管理程序320的独立实例化。
78.管理程序320可以是本机或裸金属管理程序,其直接运行在平台逻辑310上以控制平台逻辑并且管理客户操作系统。备选地,管理程序320可以是托管的管理程序,其运行在主操作系统上,并且从主机操作系统来抽象客户操作系统。管理程序320可包括虚拟交换机338,其可向客户系统322的虚拟机提供虚拟交换和/或路由选择功能。虚拟交换机338可包括逻辑交换结构,其将虚拟机332的vnic相互耦合,因而创建虚拟网络,虚拟机可经过其相互通信。
79.虚拟交换机338可包括软件元件,其使用平台逻辑310的组件来执行。在各种实施例中,管理程序320可与任何适合实体(例如sdn控制器)进行通信,其可使管理程序320响应于改变平台302中的条件(例如虚拟机332的添加或删除或者可被进行以增强平台的性能的优化的标识)而重新配置虚拟交换机338的参数。
80.管理程序320还可包括资源分配逻辑344,其可包括用于基于遥测数据(其可包括压力信息)来确定平台资源的分配的逻辑。资源分配逻辑344还可包括用于与平台302a的平台逻辑310实体的各种组件(例如平台逻辑310的组件)进行通信以实现这种优化的逻辑。
81.任何适合逻辑可进行这些优化决定的一个或多个。例如,系统管理平台306;管理程序320或另一操作系统的资源分配逻辑344;或者计算机平台302a的另一逻辑可以能够进行这类决定。在各种实施例中,系统管理平台306可从多个平台302来接收遥测数据并且管理跨多个平台302的工作负荷布置。系统管理平台306可与各种平台302的管理程序320(例如以带外方式)或者其他操作系统进行通信,以实现由系统管理平台所指示的工作负荷布置。
82.平台逻辑310的元件可采用任何适合方式耦合在一起。例如,总线可将组件的任一个耦合在一起。总线可包括任何已知互连,例如多点总线、网格互连、环形互连、点对点互连、串行互连、并行总线、相干(例如高速缓存相干)总线、分层协议架构、差分总线或射电收发器逻辑(gtl)总线。
83.计算机平台302a的元件可采用任何适合方式(诸如通过一个或多个网络308)耦合在一起。网络308可以是任何适合网络或者使用一个或多个适合网络协议进行操作的一个或多个网络的组合。网络可表示用于接收和传送信息分组(其通过通信系统传播)的一系列节点、点和互连通信路径。例如,网络可包括一个或多个防火墙、路由器、交换机、安全设备、防病毒服务器或其他有用网络装置。
84.图4是根据本说明书的一个或多个示例的微服务架构的框图。在这种情况下,微服
务架构400包括运行在数据中心中的计算节点上的主机软件404,其可包括硬件平台上托管的vm。主机软件404可要求对各种资源(诸如非易失性存储装置、永久快速存储器、fpga和其他适合服务)的访问。在说明性示例中,微服务架构400提供安全功能(诸如用于不可抵赖的结构流经微服务),以提供数据的完整性或起源的证据。
85.在一示例中,主机软件404可需要使结构业务流经微服务以加密和签署业务,并且然后在将业务转发到下一跳之前即时将其dma(直接存储器存取)到永久存储器中。
86.在这个示例中,多个微服务加速器415是可用的,包括本地软件430、资源池424、fpga(或fpga池)420和硬件加速器416。要注意,这里所公开的微服务加速器415仅作为非限制性示例被提供,并且硬件加速器415还可包括配置成提供微服务的任何其他装置或功能。
87.本地软件430可以是在与软件404相同的操作系统下运行的软件。换言之,本地软件430可以是运行在与主机软件404相同的平台硬件上的子例程或模块。
88.资源池424可以是资源池,诸如可在计算雪撬(sled)上或者计算机架中被提供,其中向数据中心中的其他节点动态提供和预备大量相同或接近相同的资源。这可包括存储器服务器,包括pfm服务器、存储服务器或者各种加速器或其他资源。
89.fpga池420也是可用的,带有能够动态被预备和编程以实行期望的微服务功能的多个fpga。
90.还可提供硬件加速器416。硬件加速器416可包括asic、soc或者相对于软件以超高速执行功能的其他专用硬件。
91.当每个资源上线时,它可向服务发现功能(sdf)440注册。sdf 400可以是运行在数据中心中的独立vm,可以是组织器(例如图2的组织器260)的模块或功能。
92.例如,本地软件模块430可上线,并且向sdf 440注册。这个注册可包括功能的能力(在这种情况下,提供用于认可的加密和签署)。它可包括实例的性质以及它如何被实行(例如,在运行在具有可用于专用于加密和签署功能的两个核的四核intel
®ꢀ
xeon

处理器上的软件中)。它还可向sdf 440注册每个功能调用应当如何格式化以用于与本地软件430的互通的细节。
93.类似地,资源池424、fpga 420和硬件加速器416还可向sdf 440注册其能力。sdf 440在目录448中存储所有这些。要注意,例如在fpga 420的情况下,向sdf 440的注册可不仅包括fpga 420执行加密和签署的能力,而且还包括用于为fpga 420配置用于执行功能的逻辑的门配置以及引脚或端口到输入和输出功能的映射。
94.在这个示例中,本地软件430、资源池424、fpga池420和硬件加速器416可全部提供(或者可配置成提供)相同或接近相同的功能、诸如要求加密和签署的认可微服务。
95.以认可为示例,主机软件404可经由其自己的软件栈在板上简单地执行加密和签署。然而,这可以能是计算低效和资源密集的,并且可使服务成为网络流程中的瓶颈。将功能卸载到加速器可以是更有效、更快的,并且可确保分组更平滑地穿过数据中心。然而,在设计时,主机软件404的编程者可能不知道哪些认可加速能力将是可用的。
96.因此,为了增加主机软件404的效率,替代调用其自己的本机子例程或者尝试预期将在数据中心可用的准确资源,主机软件404可发出对微服务api 408(其可以是统一“云友好”api)的调用。替代针对特定平台或装置,对微服务api 408的调用可根据标准化形式(例如单个“service.nonrepudiation([parameters])”方法调用)被格式化,标准化形式跨资
源实例是统一的。这可夹合微服务api 408背后的功能的动态分派和绑定,并且允许微服务通过统一寻址被访问。通过性质的本体论编目,目录448中的一些功能可被选择,或者选择可被辅助。
[0097]
微服务api 408与微服务驱动器412进行通信,微服务驱动器412查询sdf 440,以标识用于执行认可功能的最佳可用微服务实例。最佳可用实例的标识可包括此类因素,如整个数据中心中的主机软件404的优先级、微服务功能的现有实例上的负荷、实例的相对速度以及可用来优化数据中心的总体功能的任何其他因素。
[0098]
例如考虑其中硬件加速器416提供对于加密和签署功能的最快处理的情况。这可以是因为硬件加速器416是完全以硬件来实现的,并且因而是很快的。然而,数据中心中的其他节点可能已经在按其最佳容量或者接近其最佳容量来使用硬件加速器416的实例。因此,将新流程引入硬件加速器416而不是优化数据中心资源实际上可成为数据中心资源上的附加负担。转而,与sdf 440进行通信的微服务驱动器412可将fpga池420标识为用于实行加密和签署微服务的最佳可用资源。因此,替代在硬件加速器416上施加附加负担,微服务驱动器412可经由目录448从sdf 440接收用于分配fpga池420中的一个或多个fpga以实行加密和签署功能的门配置。然而要注意,微服务驱动器412可以不是实际实行fpga的编程的代理。那个功能可分派给专用硬件,并且用于实行编程的指令可来自微服务驱动器412、来自组织器或者来自配置成实现fpga编程的任何其他装置。一旦一个或多个fpga已经分配和编程,它们则可继续在进入主机软件404的流程上进行操作,直到系统的微服务形势发生变化并且存在对重新分配微服务实例的需要。
[0099]
要注意,在这个示例中,微服务驱动器412不仅预备服务,而且还预备与服务关联的流程。用于动态定义消息的流程的这个能力导致链接的概念,其有益效果是管线化多个微服务的启用,并且因而降低等待时间积累。代替应用等待对功能启用的完成,微服务能够在单个流程中简单地链接在一起。
[0100]
例如,如果定义服务链(其中入局分组首先被解密并且其签名被检验),并且然后分组受到dpi,则微服务驱动器412可不仅预备解封装和签署微服务的实例,而且还预备dpi微服务的实例。这些实例被预备成使得当解封装和签名检查功能完成时,结果无需传回给主机软件404,以然后经由微服务api 408来启用dpi的实例。而是当微服务驱动器412预备两种服务时,它能够创建它们之间的接口,使得一旦解密微服务完成对分组进行解密,则它能够将解密的分组直接提供给dpi微服务实例。dpi微服务实例然后能够执行其dpi功能,并且将结果送回给主机软件404或者如果链中存在另一个微服务则将分组转发到下一个微服务。
[0101]
图5是根据本说明书的一个或多个示例的用于注册和使用微服务的方法500的流程图。
[0102]
在框508中,多个微服务或者具有微服务能力的资源向sdf 540注册。sdf 540可在本体论目录548中存储注册的实例。
[0103]
在框504中,应用进行对本体论模型中描述的特定功能的微服务发现请求。这个请求被发送给服务发现模块512。
[0104]
在框516中,服务发现模块经由sdf 540执行目录查。sdf 540提供可用微服务实例的列表,包括每个实例的属性。
[0105]
在框520中,微服务驱动器可将来自目录548的属性与实例服务请求504的要求进行匹配。
[0106]
如果充分实例是带有充分带宽可用的,则在框524中,微服务驱动器可组织对实例的访问,诸如提供新端点统一资源标识符(uri)以使主机软件访问微服务实例。
[0107]
如果没有实例是可用的,则在框528中,微服务驱动器可预备新实例,并且与那个新实例的通信可与服务请求相配合。
[0108]
在框532中,请求主机软件可连接到微服务实例。这可包括例如简单握手,使得各自知道它正与另一个进行通信。
[0109]
最后,在框536中,主机服务例如通过将分组交换到所提供uri来使用预备微服务实例来开始。
[0110]
要注意,在这个基本情形中,实现及其路径两者是动态的,并且应用本身对实例化功能的最佳符合实现的方法以及与功能进行通信的最佳方法是不可知的。
[0111]
随后,图6和图7示出微服务架构的附加细节,其中图6示出微服务实例的首次建立,以及图7示出微服务实例的后续使用。
[0112]
图6是根据本说明书的一个或多个示例的微服务实例的初始建立的框图。在这种情况下,应用604采用中间件610来与驱动器614进行通信。应用604具有对访问微服务的需要。
[0113]
在操作1,应用604通过微服务驱动器提出微服务发现请求。微服务驱动器然后可经由结构来发出发现请求620。此外在框620中,微服务驱动器可选择期望的实现选项(诸如硬件加速器、fpga或资源池),并且向管理和网络组织(mano)服务器(例如组织器260)(其在这种情况下可提供sdf)发出请求。
[0114]
在操作3中,mano 628发起或者以其他方式预备期望的微服务实例的实例。这可包括例如应用容器640,其中具有api包装器644和软件库648。在另一个示例中,这包括应用容器650,其中具有api包装器654、驱动器或中间件658以及硬件加速器660。
[0115]
所提供实例的适当属性封装在微服务描述634(其在微服务注册表630中注册)中。
[0116]
在操作4中,消息转发器624被建立以使应用604能够与微服务的新实例进行通信。这可以是例如必需类型的动态消息转发器。消息转发器624能够被实现为将应用连接到适当微服务的结构(网络、总线等)的配置。在这种实施例中,转发是数据的

被动’传递。
[0117]
在操作5中,必需联接在消息转发器624与应用604之间完成,提供应用与微服务实例之间的通信的开放线路。这提供用于请求由微服务当前或者为将来流程所提供的任务的实例的联接,如图7中进一步所示(例如在操作6和7)。
[0118]
一般来说,微服务启用链可通过持续重复这个操作使得微服务的每个实例被动态选择并且定制以用于来自链中的其前趋微服务实例的直接通信来构建。因此,在微服务链的情况下,消息转发器624的建立在一些情况下提供联接不在应用604与微服务之间、而是在服务链中的前一微服务与下一微服务之间。如同应用604那样,各前趋微服务可对其后继微服务的实现细节以及对用于提供对于产生启用的最佳路径的细节是不可知的。
[0119]
图7是微服务的操作的说明,其可被认为是图6的框图的扩展。
[0120]
在图7的示例中,主机软件702已请求了多个微服务(即,微服务704-1、微服务704-2和微服务704-3)的预备。
[0121]
在操作6中,主机软件702诸如通过将数据流程提供给与微服务704-1关联的uri来访问微服务704-1。
[0122]
微服务704-1接收来自主机软件702的流程,并且在该流程上执行其指定微服务。例如,微服务704-1可提供在入局分组上的解密和密钥检验。
[0123]
在操作7中的微服务704-1这时操作消息转发器708以将分组转发到微服务704-2。
[0124]
微服务704-2可以是例如dpi微服务,其执行入局分组的详细分析。
[0125]
一旦微服务704-2完成其深度分组检查,则它操作另一个消息转发器708将分组转发到微服务704-3。
[0126]
微服务704-3可执行某一另外辅助功能、诸如统计或大数据功能,其不影响分组的值,但是被用于管理数据中心以及提供给顾客的服务。
[0127]
一旦微服务704-3完成了其功能,则它将分组返回到主机软件702,其这时可根据正常过程来操控分组。
[0128]
在图7的示例中,消息转发器708可以是单个单片消息转发器,其提供微服务实例之间的互连(与对于在微服务之间转发分组而特制的轻量vswitch相似),使得消息转发器708充当微服务之间的中枢。在另一个示例中,每个微服务实例可具有其自己的到其他微服务的专用连接,使得微服务彼此被“菊化链”,而无需任何中间中枢。
[0129]
要注意,在这种情况下,整个服务链已在其碰到主机软件702之后应用于分组,而无需分组在主机软件702与服务链中的各种微服务之间来回“乒乓”。还要注意,微服务的使用使主机软件702能够将服务链中的各种功能看作好像它们是对本地模块的实例的单个调用一样。因此,替代显式访问多个加速器(其中分组被发送给加速器,返回到主机,发送给第二加速器,再次返回到主机,发送给第三加速器,并且第三次返回到主机),而是一系列加速器在链中被使用并且通过来自主机软件702的单个功能调用来启用。
[0130]
要注意,图5-7所公开的图示和流程例如提供诸如公共微服务api背后的低级加速器的硬件的抽象。这提供用于本地和远程执行、灵活寻址和启用。对于注册目录所述的本体论可采用扩展语言来提供,以用于基于微服务的期望的功能性来定义和发现微服务。例如,本体论语言的一个特征能是诸如“功能等于加密(aes-gcm)”的描述符。因此,应用能够指定期望的功能和参数(诸如加密类型)而无需指定具体实现细节。然而,在一些情况下,可提供一些细节,诸如最大可接受等待时间、最小可接受带宽或者可影响由具体应用要求的性能的其他因素。本体论语言还可在其语法中支持子功能的链接。在一个实施例中,本体论语言可与openapi兼容,并且可提供由人类和由计算机进行的简易发现。
[0131]
下面将示出实现以上描述的微服务架构的若干构建块。这些将包括下列特定描述:要注意,图5-7所公开的简图和流程例如提供公共微服务api背后的低级加速器等的硬件的抽象。这提供本地和远程执行、灵活寻址和启用。对注册目录所述的本体论可通过扩展语言来提供,以用于基于微服务的期望的功能性来定义和发现微服务。例如,本体论语言的一个特征可能是例如“功能等于加密(aes-gcm)”等的描述符。因此,应用能够指定期望的功能和参数、例如加密类型,而无需指定具体实现细节。但是,在一些情况下,可提供一些细节,例如最大可接受等待时间、最小可接受带宽或者可影响特定应用可要求的性能的其他因素。本体论语言还可支持其语法中的子功能的链接。在一个实施例中,本体论语言可与
开放api兼容,并且可防止由人类和由计算机进行的简易发现。
[0132]
下面将示出实现以上描述的微服务架构的若干构建块。这些将包括下列具体描述:

统一api和统一寻址,如以下在[0133]段中进一步描述的。
[0133]

微服务注册(sr),如以下在[0134]段中进一步描述的。
[0134]

微服务发现(sd),如以下在[0136]段中进一步描述的。
[0135]

统一访问方法,如以下在[0137]段中进一步描述的。
[0136]

中间件和驱动器,如以下在[0138]段中进一步描述的。
[0137]

消息转发器,如以下在[0139]段中进一步描述的。
[0138]

微服务链接,如以下在[0141]段的进一步描述的。
[0139]

微服务发现端点(sde),如以下在[0148]段中进一步描述的。
[0140]

消息服务(ms),如以下在[0150]段中进一步描述的。
[0141]

微服务请求,如以下在[0150]段中进一步描述的。
[0142]

寻址服务(as),如以下在[0151]段中进一步描述的。
[0143]

微服务描述目录,如以下在[0152]段中进一步描述的。
[0144]

消息服务路径配置,如以下在[0156]段中进一步描述的。
[0145]

消息服务流程,如以下在[0158]段中进一步描述的。
[0146]

负荷平衡引擎(lbe),如以下在[0176]段中进一步描述的。
[0147]
对于统一寻址中的统一api,在这种情况下,开放api可被用于定义到表示性状态传递(rest)api的标准语言不可知接口,其允许人类和计算机两者发现微服务的能力,并且理解和通过最小实现逻辑远程与它交互。附加细节见于如下所描述的寻址服务的描述中。
[0148]
微服务注册(sr)机制允许基于服务的描述的对服务的进一步发现。服务的供应商或构建者可通过扩展语言提供关于端点的细节以及服务的描述,作为非限制性示例具有功能、遥测细节、许可和计量细节、缩放性和实例化以及访问方法的可能组合。
[0149]
注册可以是配置文件或数据库的部分。附加细节位于以下微服务描述目录的描述中。
[0150]
微发现(sd)在被请求时标识可用服务,包括最好实例或最佳实例的标识或者产生新实例(若可能的话)的选项以及链接和服务的配置。sd可经由已知机制或地址(诸如特定uri)或者可以是中间件或sdk的部分的其他机制来访问。sd功能定位能够进行所请求功能的服务,并且配置特定服务实例和消息转发器以用于在请求应用与服务实例或者服务链中的不同服务实例之间传递数据。当实例由应用来启用时,微服务可将其输出转发到启用软件或者到服务链中的下一个服务。依据来自应用的请求,sd功能可使用现有实例或产生新实例(若被实现支持的话)。sd功能还可用作负荷平衡器,可选地加上消息转发器所执行的动态负荷平衡,并且在实例的创建和移除上与mano工作。mano可使用地点和偏好以及平台能力的细节来产生硬件或软件服务的最佳符合实例。见以下sde的描述中的附加细节。
[0151]
统一访问方法允许最佳可能启用方法的使用取决于服务的位置和环境的能力。在一个示例中,微服务经由运行在网络上restapi来访问。然而,在其他实例中,访问可通过另一种机制(诸如远程直接存储器存取(rdma)、共享存储器、存储器映射输入/输出(mmio)等)进行。统一访问可以是可扩展的,并且可适应不同访问方法,并且在一些示例中可在中
间件组件中被操控。
[0152]
中间件组件和内核驱动器可用于操控统一访问,因而抽象来自实际实现的访问。在一些情况下,这些组件是云基础设施的现有部分。
[0153]
消息转发器可在微服务发现和预备期间被预备,并且可包括哪些服务被请求的细节。消息转发器可配置服务的实例以执行对下一个服务的转发。这创建服务流程的概念。结合以下消息服务路径配置和以下消息服务流程描述来描述与消息转发器相关的附加细节。
[0154]
要注意,使用微服务发现来查端点和访问方法的应用能够在处理期间启用它们。对应用,微服务的使用可与发出子例程调用一样简单,其由微服务驱动器经由消息转发器(其对请求进行代理、负荷平衡并且桥接到正确微服务实例)透明地操控。消息转发器的使用可通过策略来定义,如以下消息服务流程的描述中进一步描述的。消息服务链接结合图8进一步示出。
[0155]
图8是根据本说明书的一个或多个示例的消息服务链接的框图。消息服务链接是用于通过使用具有统一寻址方案的微服务以云友好方式来暴露硬件和软件的功能性的方法。微服务的注册可包括微服务连接能力的注册,所述微服务连接能力指示微服务实例与相同或不同微服务的其他实例直接通信的能力。
[0156]
在操作1,应用830向服务发现块812发出对于功能的请求。
[0157]
在操作2,服务发现812以获得路径id来响应于应用830以预备功能和入口点。
[0158]
服务发现功能812然后访问配置816和消息转发数据820,以预备适当服务链。这可包括预备服务实现804(包括多个服务0至n)。每个服务可包括路径id和下一跳uri。
[0159]
在操作3,应用830构建消息824,其可包括路径id、消息内容和跟踪id。在操作4,应用830向服务实现804发送消息824。
[0160]
在操作5,服务实现804预备微服务的适当链,并且开始通过微服务传播消息824。
[0161]
在操作6,服务实现804可选地可向消息转发块820返回完成状态。
[0162]
服务发现端点提供用于与可用服务的实现和地点无关的可用服务的发现的可扩展基础设施。这支持基于应用偏好、工作负荷类型以及服务的组合的落入(drop-in)取代和优化。
[0163]
在这个上下文中,术语“端点”意思是由应用用于执行功能的已知api。服务发现以不同组合来暴露于应用,诸如作为非限制性示例:

作为入口点的特殊url或uri。
[0164]

pci或pcie装置,无论是实际装置还是模拟装置,以具有对于消息的定义的编码和数据格式的b/d/f被寻址。这允许使用类似virtio的装置或sr-iov的简易虚拟化,(在硬件实现的情况下)具有基于ioctl的api、chr-dev或伪nic。
[0165]

系统调用或者对于低等待时间调用的其他库。在一些情况下,服务发现端点可被硬编码,或者可以是云init脚本或类似物的部分被提供的部分。
[0166]
图9是根据本说明书的一个或多个示例的服务发现的框图。在服务请求的情况下,应用通过提供被执行或者期望的要执行的功能的描述来向消息传递服务(即,微服务发现功能(mdf))请求特定功能。这在图9中被看到,其中服务发现功能900接收作为输入的期望的服务的描述。这可以是要应用于服务链中的相同消息的单个功能或者功能序列。在另一个示例中,这可以是期望的能力的枚举列表。在一个示例中,开放api可用于这个目的,尽管
这是非限制性示例。服务的描述可采用不同方式或格式来提供,并且除了其他信息(诸如功能特定的参数或期望的性能参数)之外还可提供所要求功能。服务发现功能900的输出可包括要用于服务的路径id、端点的细节和可用选项。
[0167]
对于寻址服务,统一寻址方案可用于提供相同调用惯例以请求远程或者本地资源、以及硬件或者软件微服务(只要是适当的)。统一寻址服务可通过重定向调用并且向实际实例提供数据传递来实现。应用本身可对实例及其位置或实现细节是不可知的。这些可映射到多个负荷平衡的实例以支持自动缩放。端点(作为示例诸如对本地主机url的调用)在这种方式中可以是对消息转发器的入口点。消息转发器可处理消息的输入参数、诸如路径id,并且将它们转化为微服务实例的实际运行时启用。
[0168]
微服务描述目录可用于服务的注册。当它们变为可用时,可对服务发现功能注册新微服务实现和实例。注册可包括作为输入的所提供服务的描述、能力(包括如缩放选项、资源共享和数据类型时钟的此类项)的描述,并且还可包括遥测数据、质量因数、和类似物。注册的输出可包括确认状态。
[0169]
微服务的注册表可包括入口点的配置,作为非限制性示例表示如何启用服务的描述、所支持功能的描述和sla细节。例如,当fpga的特定封装被加载时,它可被注册为微服务,以能够实现提供应用的消耗并且被标记为优选的,而软件实现仍然可按需要接收消息。新实例还可透明地被添加到调用应用,其提供路径id而不是提供实例id来访问微服务。可支持新实例的动态分配以能够实现自动缩放。
[0170]
服务还可将api用于遥测,以报告其使用、负荷以及其遇到的任何问题。在一些情况下,可支持命名的空间和上下文,以用于vm或功能域的隔离。有利地,在这种情况下不要求对装置本身的改变。
[0171]
使用intel
®
quickassist

作为示例,代替使用sr-iov来映射vm中的装置,本说明书的架构允许ssl微服务的实例被实现为qat实例上的包装器并且装备接入点(诸如uri)。当应用需要对数据进行加密或解密时,它形成指定要处理的数据和要使用的加密或解密功能的消息。替代分组被返回到请求应用,下一个目的地可以是以太网微服务,其实际上通过导线发送加密内容。
[0172]
在消息服务路径配置的情况下,在微服务发现期间,当应用请求特定功能时,消息传递服务可执行下列操作:

验证所请求功能被支持。
[0173]

对于所请求功能序列分配路径id,并且返回路径id以用于由应用以后使用。
[0174]

分配资源以能够实现流传送处理(连接实例、共享存储器等)。任务可指定同步或异步执行。共享存储器缓冲器可连接微服务实例,并且还可被用于各种平台操作、诸如远程调用(例如通过以太网、rdma、或类似物)。这可引起服务流程的创建。
[0175]
用于对服务进行寻址的统一机制可包括本地软件实例、本地硬件实现或者任何类型的远程实现。消息传递服务可照管所建立的服务路径,包括对于跨域或跨服务器连接的中间服务的配置。应用可将任何所实现的方法用于与消息传递服务的通信,例如uri、pcie、库调用、或类似物。应用还可支持向微服务的实例发送消息。
[0176]
消息服务流程支持各种特征:

输入队列可通过共享的存储缓冲器以硬件友好方式来实现。
[0177]

如果当前实例因任何原因而不能够接受处理,则输入队列重定向可用来推迟或分派处理,因而能够实现“烫手山芋(hotpotato)”负荷平衡。
[0178]

服务实现,其可以是软件或硬件。
[0179]

可选硬件辅助,其提供平台伪指令,实现为微码,其可执行消息转发。这可使用对于状态的内部表,并且还可执行负荷平衡、自变量验证等。
[0180]
这允许服务栈向平台或云服务分派许多良好格式化的操作和职责。因此,基础设施专门化和参与能够单独地发生或者与任务的进展和优化并行发生。诸如交换是否为虚拟或者它将如何影响缩放或等待时间的顾虑能够移动到更低水平(其中它们最佳地匹配到动态环境)。因此,微服务可知道在何处沿特定路径转发消息;例如,消息转发功能可实现存储器通道(相同服务器上的实例),或者使用通过rdma的远程启用或intel
®
omnipath

上的结构库。
[0181]

服务可具有软件和硬件两种实现或者两者的组合。
[0182]

基于硬件的负荷平衡能够促进服务的硬件实现的使用。
[0183]

当沿服务路径存在瓶颈时,可使用管道上溢通知机制。
[0184]

新消息的通知可通过轻量信号机(特别是当接收方在相同主机上时)或者经由中断来提供给下一个服务。在另一个示例中,接收服务能够轮询输入队列。
[0185]
对于应用请求,应用准备要发送的消息,包括四个部分:

由消息传递服务所提供的路径id。
[0186]

内容。
[0187]

可选令牌id(用于完成通知)。
[0188]

可选序言或结语。
[0189]
路径id定义消息应当跟随的逻辑路径,并且对整个流程隐式编码,因而允许消息被发送,而无需等待先前消息的处理的完成。消息传递服务可通过令牌id提供状态(若由应用所请求),以跟踪请求的完成。
[0190]
序言和结语可用来支持多态和管线化的消息传递流程。序言适配在目标处的消息的处理,使得定制被推送成更靠近将操控数据的位置,而结语指定数据、结果、事件或状态的连续性和转发。这可以不一定仅对启用方,而是也潜在地对其他实体。这将主动消息的概念放宽到主动流程。
[0191]
图10是示出根据本说明书的一个或多个示例的消息转发的框图。在这种情况下,消息转发块接收如所示出的输入和输出。
[0192]
内部地,消息转发器可实现为重定向表,其包括但不限于下列类型的服务实例入口点:

到nic或远程地址、诸如远程uri。
[0193]

到pciebdf。
[0194]

经由异常或轮询模式到软件。
[0195]

经由结构。
[0196]

到存储器或存储器映射的i/o(mmio)。
[0197]
在两个应用进行通信的情况下,替代应用a向服务b(其可具有软件和/或硬件实现两者)发送数据,应用a向消息转发(mf)功能1000发送消息。
[0198]
对mf功能1000的输入可包括路径信息或路径信息句柄以及要被转发的有效载荷。
[0199]
mf功能1000可根据需要来变换消息,以使得它适于下一跳。这可包括封装、解封装或者以其他方式变换消息。消息转发器1000然后发送变换的消息,连同新路径信息或路径信息句柄一起。
[0200]
在各种实施例中,消息转发功能1000可直接或间接参与传递消息。在直接使用中,mf1000从应用接收消息,并且将它转发到适当的服务实例。在间接情况下,mf1000是配置,并且对服务端点的请求直接转到所指定实例,假定该实例支持直接启用。
[0201]
mf1000可提供激活和寻址/访问仲裁。换言之,mf1000可充当信息激活中介。例如,mf1000可将令牌发送或转发到目的地服务功能。目的地可使用那个令牌来从mf1000来检索数据。服务功能可使用那个令牌来轮询mf1000,并且知道源应用是否准备传递。这不同于例如目标服务实例从应用接收数据并且然后联络mf1000。换言之,目的地可成为做某事的主动对象,并且更高级代码可充当这些低级动作的调解器(composer),将它们设置在运转中并且然后让开。
[0202]
实现mf1000的转发装置可实现寻址,其不需要映射到节点和端口。转而,地址可映射到可命名条目和实体功能。实体可以是硬件、软件、固件或者它们的任何组合,其具有结构接口可触发的接收器。在接收端点的结果与功能的启用类似:

如果被触发实体是软件,则功能启用是λ或rpc。
[0203]

如果被触发实体是智能磁盘,则功能启用可以是磁盘操作。
[0204]

如果被触发实体是硬件加速器,则功能启用可以是nq操作。
[0205]

如果目标是fpga,则可存在不透明握手,其组织并且链接到fpga。
[0206]
以上所述作为非限制性示例被提供,并且许多其他配置是可能的。最终结果在于,活动变得被解耦和管线化。
[0207]
在流程和执行管理的情况下,消息的内容能够包括用于处理的中间数据和对数据的引用。例如,应用a可向微服务f发送加密消息,并且向a的对等应用c发送令牌t。当c采用令牌t联络f时,c自动解密并且给予c另一个令牌m。当c决定时,它开启流m并且读取纯数据。轮询是远程实体之间的通信的有效手段,并且不要求告警或请求以进行控制。转而,远程实体可通过轮询来检索令牌。其他选项包括nic、入队或出队数据流、或类似物。
[0208]
消息转发将消息推送到对于特定流或流程的预先分配缓冲器。如果预先分配缓冲器与应用共享,则也可使用零复制方式。mf则启用硬件或软件实现的执行。缓冲和突发处理还可配置成使开销最小化,并且改进资源的利用,同时保持服务质量(qos)或最后期限(若被应用所请求)。在一个示例中,环形缓冲器可用作应用、消息转发器和服务实现之间的连接的实现。
[0209]
多态行为也被准备。这以多态方式来混合主动消息传递的概念,其中主动消息传递的主动部分被操控。这导致硬件、软件或加速器、本地或远程、轮询或非轮询之间的界线的模糊,使得框架支持智能能够在高级被分布和协调而数据和事件处理在低级发生的想法。
[0210]
消息服务链接还可以是用于过程间通信(ipc)的方法。这提供集成的附加灵活性和降低成本,并且可使用功能即服务(faas)或者具有与多种ipcapi和不同语言的绑定的微服务。
[0211]
图11是根据本说明书的一个或多个示例的负荷平衡引擎(lbe1100)的框图。在各种实施例中,消息转发可支持多个负荷平衡选项。在这个示例中,lbe1100接收对于入局消息的路径信息或路径信息句柄以及来自目标服务功能的各种实例的遥测、和服务质量目标。这为lbe1100提供用于决定要将请求路由到微服务的哪个实例或者是否要产生微服务的新实例的信息。lbe1100经由新路径信息或路径信息句柄将入局分组引导到实例,并且还可保存日志,例如以用于背景分析或者再训练。
[0212]
负荷平衡选项包括,作为非限制性示例:

基于总线状态的对于空闲实例的仲裁。
[0213]

循环负荷平衡。
[0214]

加权公平排队。
[0215]

通过烫手山芋路由选择的或者通过基于最后期限的(包括时间最后期限中的最大平衡)负荷平衡。输入上的转发表可在当前实例过负荷时选择备选目的地。
[0216]

优先化(例如,优选具有上溢的硬件实例而不是软件实例)。
[0217]
本公开还提供如下技术方案:1.一种计算设备,包括:硬件计算平台;以及用于操作在硬件计算平台上的逻辑,配置成:接收对于微服务加速器的微服务实例注册,其中所述注册包括所述微服务加速器配置成要提供的微服务以及指示所述微服务实例与相同或不同微服务的其他实例直接通信的能力的微服务连接能力;以及在微服务注册数据库中记录所述注册。
[0218]
2.如技术方案1所述的计算设备,其中,所述逻辑还配置成向微服务驱动器发布所述微服务注册。
[0219]
3.如技术方案1所述的计算设备,其中,所述微服务注册数据库是本体论数据库。
[0220]
4.如技术方案1所述的计算设备,其中,所述连接能力包括配置成向服务链分配所述微服务加速器的信息。
[0221]
5.如技术方案1所述的计算设备,其中,所述微服务注册数据库还配置成包括用于将微服务应用编程接口(api)调用映射到对于所述微服务加速器的本机启用的信息,其中所述微服务api是用于装置访问所述微服务加速器的通用api。
[0222]
6.如技术方案1所述的计算设备,其中,所述微服务注册数据库还配置成包括用于产生所述微服务加速器的新实例的信息。
[0223]
7.如技术方案6所述的计算设备,其中,用于产生所述微服务加速器的新实例的所述信息包括用于对所述新实例进行编程的信息。
[0224]
8.如技术方案7所述的计算设备,其中,用于对所述新实例进行编程的所述信息包括对于现场可编程门阵列(fpga)的门配置。
[0225]
9.如技术方案1所述的计算设备,其中,所述逻辑还配置成接收和存储与所述微服务加速器的现有实例上的负荷有关的信息。
[0226]
10.一个或多个有形非暂态计算机可读介质,上面存储了用于提供微服务发现功能(mdf)的可执行指令,所述mdf配置成指示装置:
接收对于微服务加速器的微服务实例注册,其中所述注册包括所述微服务加速器配置成要提供的微服务以及指示所述微服务实例与相同或不同微服务的其他实例直接通信的能力的微服务连接能力;以及在微服务注册数据库中记录所述注册。
[0227]
11.如技术方案10所述的一个或多个有形非暂态计算机可读介质,其中,所述逻辑还配置成向微服务驱动器发布所述微服务注册。
[0228]
12.如技术方案10所述的一个或多个有形非暂态计算机可读介质,其中,所述微服务注册数据库是本体论数据库。
[0229]
13.如技术方案10所述的一个或多个有形非暂态计算机可读介质,其中,所述连接能力包括配置成向服务链分配所述微服务加速器的信息。
[0230]
14.如技术方案10所述的一个或多个有形非暂态计算机可读介质,其中,所述微服务注册数据库还配置成包括用于将微服务应用编程接口(api)调用映射到对于所述微服务加速器的本机启用的信息,其中所述微服务api是用于装置访问所述微服务加速器的通用api。
[0231]
15.如技术方案10所述的一个或多个有形非暂态计算机可读介质计算设备,其中,所述微服务注册数据库还配置成包括用于产生所述微服务加速器的新实例的信息。
[0232]
16.如技术方案15所述的一个或多个有形非暂态计算机可读介质,其中,用于产生所述微服务加速器的新实例的所述信息包括用于对所述新实例进行编程的信息。
[0233]
17.如技术方案16所述的一个或多个有形非暂态计算机可读介质,其中用于对所述新实例进行编程的所述信息包括对于现场可编程门阵列(fpga)的门配置。
[0234]
18.如技术方案10所述的一个或多个有形非暂态计算机可读介质,其中,所述逻辑还配置成接收和存储与所述微服务加速器的现有实例上的负荷有关的信息。
[0235]
19.一种提供微服务发现功能(mdf)的计算机实现的方法,包括:接收对于微服务加速器的微服务实例注册,其中所述注册包括所述微服务加速器配置成要提供的微服务以及指示所述微服务实例与相同或不同微服务的其他实例直接通信的能力的微服务连接能力;以及在微服务注册数据库中记录所述注册。
[0236]
20.如技术方案19所述的方法,还包括向微服务驱动器发布所述微服务注册。
[0237]
21.如技术方案19所述的所述,其中,所述微服务注册数据库是本体论数据库。
[0238]
22.如技术方案19所述的方法,其中,所述连接能力包括配置成向服务链分配所述微服务加速器的信息。
[0239]
23.如技术方案19所述的方法,其中,所述微服务注册数据库还配置成包括用于将微服务应用编程接口(api)调用映射到对于所述微服务加速器的本机对于的信息,其中所述微服务api是用于装置访问所述微服务加速器的通用api。
[0240]
24.如技术方案19所述的方法,其中,所述微服务注册数据库还配置成包括用于产生所述微服务加速器的新实例的信息。
[0241]
25.如技术方案24所述的方法,其中,用于产生所述微服务加速器的新实例的所述信息包括用于对所述新实例进行编程的信息。
[0242]
前面概述若干实施例的特征,使得本领域的技术人员可更好地理解本公开的各个
方面。本领域的技术人员应当意识到,他们可易于将本公开用作基础以用于设计或修改用于实行相同目的和/或达到本文介绍的实施例的相同优点的其他过程和结构。本领域的技术人员还应当发现,这类等效构造没有背离本公开的精神和范围,并且他们可在不背离本公开的精神和范围情况下于此进行各种改变、置换和改造。
[0243]
本文所公开的任何硬件元件的全部或部分可易于在芯片上系统(soc)(包括中央处理器(cpu)封装)中提供。soc表示集成电路(ic),其将计算机或其他电子系统的组件集成到单个芯片内。因此,例如,客户端装置或服务器装置可完全或部分在soc中提供。soc可包含数字、模拟、混合信号和射频功能,其全部可在单个芯片衬底上提供。其他实施例可包括多芯片模块(mcm),其中多个芯片位于单个电子封装内,并且配置成通过电子封装相互密切交互。
[0244]
还要注意,在某些实施例中,一些组件可省略或合并。在一般意义上,附图中所示出的布置在其表示中可以是更加逻辑的,而物理架构可包括这些元件的各种排列、组合和/或混合。必须注意,无数可能设计配置能够用来达到本文概述的操作目标。相应地,关联基础设施具有无数置换布置、设计选择、装置可能性、硬件配置、软件实现和设备选项。
[0245]
在一般意义上,任何适合配置的处理器能够执行与数据关联的任何类型的指令,以达到本文详述的操作。本文所公开的任何处理器可将元件或产品(例如数据)从一种状态或事变换成另一种状态或事。在操作中,存储装置可在适当情况下并且基于具体需要将信息存储在任何适合类型的有形非暂态存储介质(例如,随机存取存储器(ram)、只读存储器(rom)、现场可编程门阵列(fpga)、可擦可编程只读存储器(eprom)、电可擦可编程rom(eeprom)等)、软件、硬件(例如处理器指令或微码)中、或者任何其他适合组件、装置、元件或对象中。此外,在处理器中被跟踪、发送、接收或存储的信息可基于具体需要和实现被提供于任何数据库、寄存器、表、高速缓存、队列、控制列表或存储结构中,其全部可在任何适合时帧中被引用。本文所公开的任何存储器或存储装置应当被理解为适当地涵盖在广义术语

存储器’和

存储装置’内。本文中的非暂态存储介质明确旨在包括任何非暂态专用或可编程硬件,其配置成提供所公开操作或者使处理器执行所公开操作。
[0246]
实现本文所述功能性的全部或部分的计算机程序逻辑以各种形式被实现,包括但决不限于源代码形式、计算机可执行形式、机器指令或微码、可编程硬件和各种中间形式(例如由汇编器、编译器、链接器或定位器所生成的形式)。在一示例中,源代码包括以各种编程语言(诸如,对象代码、汇编语言或者用于与各种操作系统或操作环境使用的诸如opencl、fortran、c、c++、java或html的高级语言)或者以硬件描述语言(诸如spice、verilog和vhdl)所实现的一系列计算机程序指令。源代码可定义和使用各种数据结构和通信消息。源代码可以采用计算机可执行形式(例如经由解释器),或者源代码可转换(例如,经由转化器、汇编器、或编译器)为计算机可执行形式或者转换成中间形式、诸如字节代码。在适当的情况下,以上所述的任一个可用来构建或描述适当分离或集成电路,无论是顺序、组合、状态机还是其他。
[0247]
在一个示例实施例中,附图的任何数量的电子电路可在关联电子装置的板上实现。板能够是通用电路板,其能够容纳电子装置的内部电子系统的各种组件,并且还为其他外设提供连接器。任何适合处理器和存储器能够基于具体配置需要、处理需求和计算设计适合地耦合到板。要注意,对于本文所提供的许多示例,可在二个、三个、四个或更多电子组
件方面来描述交互。然而,这只是为了清楚起见和示例而进行。应当领会,系统能够以任何适合方式来合并或重新配置。按照类似设计备选方案,附图的所示出的组件、模块和元件的任一个可被组合在各种可能的配置中,其全部在本说明书的广义范围内。
[0248]
许多其他改变、置换、变更、改造和修改对本领域的技术者是可确定的,并且意图是,本公开包含如落入所附权利要求的范围内的所有这类更改、置换、变更、改造和修改。为了在本技术上帮助美国专利商标局(uspto)和还有所发布的任何专利的任何读者解释于此所附的权利要求,申请人希望指出,申请人:(a)并不是旨在所附权利要求的任一项启用35 u.s.c第112小节的第六(6)段(pre-aia)或者同一小节的第(f)段(post-aia),因为它在其提交日期存在,除非在具体权利要求中特定地使用词语“用于

的部件”或者“用于

的步骤”;以及(b)并不旨在通过本说明书中的任何陈述以在所附权利要求书中未以别的方式清楚地反映的任何方式来限制本公开。
[0249]
示例实现作为说明来提供下列示例。
[0250]
示例1包括一种计算设备,包括:硬件计算平台;以及用于操作在硬件计算平台上的逻辑,配置成:接收对于微服务加速器的微服务实例注册,其中所述注册包括所述微服务加速器配置成要提供的微服务以及指示所述微服务实例与相同或不同微服务的其他实例直接通信的能力的微服务连接能力;以及在微服务注册数据库中记录所述注册。
[0251]
示例2包括示例1的计算设备,其中所述逻辑还配置成向微服务驱动器发布所述微服务注册。
[0252]
示例3包括示例1的计算设备,其中所述微服务注册数据库是本体论数据库。
[0253]
示例4包括示例1的计算设备,其中所述连接能力包括配置成向服务链分配所述微服务加速器的信息。这可包括依次启用微服务的集合,以执行所请求的功能。
[0254]
示例5包括示例1的计算设备,其中所述微服务注册数据库还配置成包括用于将微服务应用编程接口(api)调用映射到对于所述微服务加速器的本机启用的信息,其中所述微服务api是用于装置访问所述微服务加速器的通用api。本机启用基于所述微服务的实现和位置以及所述服务的请求方可以是最佳有效的。
[0255]
示例6包括示例1-5的任一个的计算设备,其中所述微服务注册数据库还配置成包括用于产生所述微服务加速器的新实例的信息。
[0256]
示例7包括示例6的计算设备,其中用于产生所述微服务加速器的新实例的所述信息包括用于对所述新实例进行编程的信息。
[0257]
示例8包括示例7的计算设备,其中用于对所述新实例进行编程的所述信息包括对于现场可编程门阵列(fpga)的门配置。其他实施例可包括加载到硬件加速器(像gpu)上的另一固件,以对于特定功能将其编程。
[0258]
示例9包括示例1-5的任一个的计算设备,其中所述逻辑还配置成接收和存储与所述微服务加速器的现有实例上的负荷有关的信息。所述微服务加速器的现有实例能够被编程以同样服务于新请求方,因而降低产生新实例的资源开销。
[0259]
示例10包括一个或多个有形非暂态计算机可读介质,上面存储了用于提供微服务发现功能(mdf)的可执行指令,所述mdf配置成指示装置:接收对于微服务加速器的微服务实例注册,其中所述注册包括所述微服务加速器配置成要提供的微服务以及指示所述微服
务实例与相同或不同微服务的其他实例直接通信的能力的微服务连接能力;以及在微服务注册数据库中记录所述注册。
[0260]
示例11包括示例10的一个或多个有形非暂态计算机可读介质,其中所述逻辑还配置成向微服务驱动器发布所述微服务注册。
[0261]
示例12包括示例10的一个或多个有形非暂态计算机可读介质,其中所述微服务注册数据库是本体论数据库。
[0262]
示例13包括示例10的一个或多个有形非暂态计算机可读介质,其中所述连接能力包括配置成向服务链分配所述微服务加速器的信息。
[0263]
示例14包括示例10的一个或多个有形非暂态计算机可读介质,其中所述微服务注册数据库还配置成包括用于将微服务应用编程接口(api)调用映射到对于所述微服务加速器的本机启用的信息,其中所述微服务api是用于装置访问所述微服务加速器的通用api。示例15包括示例10-14的任一个的一个或多个有形非暂态计算机可读介质计算设备,其中所述微服务注册数据库还配置成包括用于产生所述微服务加速器的新实例的信息。
[0264]
示例16包括示例15的一个或多个有形非暂态计算机可读介质,其中用于产生所述微服务加速器的新实例的所述信息包括用于对所述新实例进行编程的信息。
[0265]
示例17包括示例16的一个或多个有形非暂态计算机可读介质,其中用于对所述新实例进行编程的所述信息包括对于现场可编程门阵列(fpga)的门配置。
[0266]
示例18包括示例10-14的任一个的一个或多个有形非暂态计算机可读介质,其中所述逻辑还配置成接收和存储与所述微服务加速器的现有实例上的负荷有关的信息。
[0267]
示例19包括一种提供微服务发现功能(mdf)的计算机实现的方法,包括:接收对于微服务加速器的微服务实例注册,其中所述注册包括所述微服务加速器配置成要提供的微服务以及指示所述微服务实例与相同或不同微服务的其他实例直接通信的能力的微服务连接能力;以及在微服务注册数据库中记录所述注册。
[0268]
示例20包括示例19的方法,还包括向微服务驱动器发布所述微服务注册。
[0269]
示例21包括示例19的方法,其中所述微服务注册数据库是本体论数据库。
[0270]
示例22包括示例19的方法,其中所述连接能力包括配置成向服务链分配所述微服务加速器的信息。
[0271]
示例23包括示例19的方法,其中所述微服务注册数据库还配置成包括用于将微服务应用编程接口(api)调用映射到对于所述微服务加速器的本机启用的信息,其中所述微服务api是用于装置访问所述微服务加速器的通用api。示例24包括示例19-23的任一个的方法,其中所述微服务注册数据库还配置成包括用于产生所述微服务加速器的新实例的信息。
[0272]
示例25包括示例24的方法,其中用于产生所述微服务加速器的新实例的所述信息包括用于对所述新实例进行编程的信息。
[0273]
示例26包括示例25的方法,其中用于对所述新实例进行编程的所述信息包括对于现场可编程门阵列(fpga)的门配置。
[0274]
示例27包括示例19-23的任一个的方法,其中所述逻辑还配置成接收和存储与所述微服务加速器的现有实例上的负荷有关的信息。
[0275]
示例28包括一种设备,其包括用于执行示例19-27的任一个所述的方法的部件。
[0276]
示例29包括示例28的设备,其中用于执行所述方法的所述部件包括处理器和存储器。
[0277]
示例30包括示例29的设备,其中所述存储器包括机器可读指令,其在被运行时使所述设备执行如权利要求19-27中的任一项所述的方法。
[0278]
示例31包括示例28-30的任一个所述的设备,其中所述设备是计算系统。
[0279]
示例32包括至少一个有形非暂态计算机可读介质,其包括指令,所述指令在被运行时如示例19-31的任一个所要求的来实现方法或完成设备。
[0280]
示例33包括一种计算设备,包括:硬件计算平台;以及在硬件计算平台上所实现的逻辑,用于:接收对微服务的应用编程接口(api)调用;发现配置成提供所述微服务的可用微服务加速器;将所述api调用转化成对于所述微服务加速器的本机启用;并且将所述本机启用转发到所述微服务加速器。
[0281]
示例34包括示例33的计算设备,其中发现所述可用微服务加速器包括查询微服务发现功能(mdf)。
[0282]
示例35包括示例34的计算设备,其中所述逻辑配置成从所述mdf接收配置成提供所述微服务的可用微服务加速器的列表。
[0283]
示例36包括示例35的计算设备,其中所述逻辑配置成确定没有具有可接受空闲带宽的微服务加速器的实例可用于所述微服务,以及配置成产生所述微服务加速器的新实例。
[0284]
示例37包括示例36的计算设备,其中产生所述新实例包括对所述微服务加速器的新实例进行编程。
[0285]
示例38包括示例36的计算设备,其中产生所述新实例包括对现场可编程门阵列(fpga)进行编程,以提供所述新实例。
[0286]
示例39包括示例33-38的任一个的计算设备,其中所述逻辑配置成预备微服务链中的所述微服务加速器。
[0287]
示例40包括示例39的计算设备,其中对所述微服务的所述api调用来自主机装置,并且其中所述微服务链配置成与独立于所述主机装置而操作。
[0288]
示例41包括示例40的计算设备,其中所述逻辑配置成提供按照中枢配置的对于所述微服务链的消息转发器。
[0289]
示例42包括示例40的计算设备,其中所述逻辑配置成菊花链接所述微服务链中的微服务。
[0290]
示例43包括一个或多个有形非暂态计算机可读介质,上面存储了用于提供微服务驱动器的指令,配置成:接收对微服务的应用编程接口(api)调用;发现配置成提供所述微服务的可用微服务加速器;将所述api调用转化成对于所述微服务加速器的本机启用;并且将所述本机启用转发到所述微服务加速器。
[0291]
示例44包括示例43的一个或多个有形非暂态计算机可读介质,其中发现所述可用微服务加速器包括查询微服务发现功能(mdf)。
[0292]
示例45包括示例44的一个或多个有形非暂态计算机可读介质,其中所述逻辑配置成从所述mdf接收配置成提供所述微服务的可用微服务加速器的列表。
[0293]
示例46包括示例45的一个或多个有形非暂态计算机可读介质,其中所述逻辑配置
成确定没有具有可接受空闲带宽的微服务加速器的实例可用于所述微服务,以及配置成产生所述微服务加速器的新实例。
[0294]
示例47包括示例46的一个或多个有形非暂态计算机可读介质,其中产生所述新实例包括对所述微服务加速器的新实例进行编程。
[0295]
示例48包括示例46的一个或多个有形非暂态计算机可读介质,其中产生所述新实例包括对现场可编程门阵列(fpga)进行编程,以提供所述新实例。
[0296]
示例49包括示例43-48的任一个的一个或多个有形非暂态计算机可读介质,其中所述逻辑配置成预备微服务链中的所述微服务加速器。
[0297]
示例50包括示例49的一个或多个有形非暂态计算机可读介质,其中对所述微服务的所述api调用来自主机装置,并且其中所述微服务链配置成与独立于所述主机装置而操作。
[0298]
示例51包括示例50的一个或多个有形非暂态计算机可读介质,其中所述逻辑配置成提供按照中枢配置的对于所述微服务链的消息转发器。
[0299]
示例52包括示例50的一个或多个有形非暂态计算机可读介质,其中所述逻辑配置成菊花链接所述微服务链中的微服务。
[0300]
示例53包括一种提供微服务驱动器的计算机实现方法,包括:接收对微服务的应用编程接口(api)调用;发现配置成提供所述微服务的可用微服务加速器;将所述api调用转化成对于所述微服务加速器的本机启用;并且将所述本机启用转发到所述微服务加速器。
[0301]
示例54包括示例53的方法,其中发现所述可用微服务加速器包括查询微服务发现功能(mdf)。
[0302]
示例55包括示例54的方法,还包括从所述mdf接收配置成提供所述微服务的可用微服务加速器的列表。
[0303]
示例56包括示例55的方法,还包括确定没有具有可接受空闲带宽的微服务加速器的实例可用于所述微服务,以及配置成产生所述微服务加速器的新实例。
[0304]
示例57包括示例56的方法,其中产生所述新实例包括对所述微服务加速器的新实例进行编程。
[0305]
示例58包括示例56的方法,其中产生所述新实例包括对现场可编程门阵列(fpga)进行编程,以提供所述新实例。
[0306]
示例59包括示例53-58的任一个的方法,还包括预备微服务链中的所述微服务加速器。
[0307]
示例60包括示例59的方法,其中对所述微服务的所述api调用来自主机装置,并且其中所述微服务链配置成与独立于所述主机装置而操作。
[0308]
示例61包括示例60的方法,还包括提供按照中枢配置的所述微服务链的消息转发器。
[0309]
示例62包括示例60的方法,还包括菊花链接所述微服务链中的微服务。

技术特征:


1.供提供服务之用的服务器硬件,所述服务器硬件包括:注册硬件,能够配置成注册至少一个服务实例以供至少一个数据库使用,所述至少一个数据库供与服务发现的关联之用,要在向至少一个客户端提供至少一个服务时使用所述至少一个服务实例,能够由所述服务器硬件提供的所述服务包括所述至少一个服务;以及映射硬件,能够配置成将应用编程接口api调用映射到服务请求数据,所述api调用至少部分对应于能够由所述服务器硬件提供的所述服务,所述服务请求数据用于与能够由所述至少一个客户端请求的所述服务中的至少一些服务相关联;其中:所述api调用要被用于与所述服务的启用的关联;至少部分地使用多个服务实例来实现所述服务;所述多个服务实例能够配置成包括虚拟机实例和/或容器实例;所述虚拟机实例和/或容器实例能够配置成包括加速器资源、中央处理单元cpu、和/或存储器资源;所述至少一个服务能够配置成使用要由所述虚拟机实例和/或容器实例中的多个执行的至少一个功能链而被实现;所述至少一个功能链定义服务相关的功能的至少一个有序集合;至少一个服务实例和所述服务的所述提供与统一资源定位器信息相关联;以及所述服务器硬件能够配置成动态分配与所述至少一个服务的所述提供关联的实例资源。2.如权利要求1所述的服务器硬件,其中:所述至少一个功能链包括功能的管线。3.如权利要求1所述的服务器硬件,其中:至少一个云服务提供商包括所述服务器硬件;以及要根据至少一个租户服务协议来提供所述至少一个服务。4.如权利要求3所述的服务器硬件,其中:所述至少一个服务与下列中的一个或多个有关:分组检查;加密;解密;压缩;解压缩;安全操作;性能跟踪;防火墙操作;虚拟私有网络操作;负载平衡;和/或记账。5.如权利要求4所述的服务器硬件,其中:要至少部分地由所述服务器硬件经由至少一个因特网网络将所述至少一个服务提供
给所述至少一个客户端;以及所述服务包括一个或多个微服务。6.一种至少部分使用服务器硬件实现的方法,所述服务器硬件供提供服务之用,所述方法包括:注册至少一个服务实例以供至少一个数据库使用,所述至少一个数据库供与服务发现的关联之用,要在向至少一个客户端提供至少一个服务时使用所述至少一个服务实例,能够由所述服务器硬件提供的所述服务包括所述至少一个服务;以及将应用编程接口api调用映射到服务请求数据,所述api调用至少部分对应于能够由所述服务器硬件提供的所述服务,所述服务请求数据用于与能够由所述至少一个客户端请求的所述服务中的至少一些服务相关联;其中:所述api调用要被用于在与所述服务的启用的关联;至少部分地使用多个服务实例来实现所述服务;所述多个服务实例能够配置成包括虚拟机实例和/或容器实例;所述虚拟机实例和/或容器实例能够配置成包括加速器资源、中央处理单元cpu、和/或存储器资源;所述至少一个服务能够配置成使用要由所述虚拟机实例和/或容器实例中的多个执行的至少一个功能链而被实现;所述至少一个功能链定义服务相关的功能的至少一个有序集合;至少一个服务实例和所述服务的所述提供与统一资源定位器信息相关联;以及所述服务器硬件能够配置成动态分配与所述至少一个服务的所述提供关联的实例资源。7.如权利要求6所述的方法,其中:所述至少一个功能链包括功能的管线。8.如权利要求6所述的方法,其中:至少一个云服务提供商包括所述服务器硬件;以及要根据至少一个租户服务协议来提供所述至少一个服务。9.如权利要求8所述的方法,其中:所述至少一个服务与下列中的一个或多个有关:分组检查;加密;解密;压缩;解压缩;安全操作;性能跟踪;防火墙操作;虚拟私有网络操作;负载平衡;和/或
记账。10.如权利要求9所述的方法,其中:要至少部分地由所述服务器硬件经由至少一个因特网网络将所述至少一个服务提供给所述至少一个客户端;以及所述服务包括一个或多个微服务。11.至少一种机器可读存储介质,存储指令,所述指令用于被至少一个机器执行,所述指令在被所述至少一个机器执行时导致根据权利要求6至10中的任何一项所述的方法的实现。12.一种至少部分使用服务器硬件实现的设备,所述服务器硬件供提供服务之用,所述设备包括:用于注册至少一个服务实例以供至少一个数据库使用的部件,所述至少一个数据库供与服务发现的关联之用,要在向至少一个客户端提供至少一个服务时使用所述至少一个服务实例,能够由所述服务器硬件提供的所述服务包括所述至少一个服务;以及用于将应用编程接口api调用映射到服务请求数据的部件,所述api调用至少部分对应于能够由所述服务器硬件提供的所述服务,所述服务请求数据用于与能够由所述至少一个客户端请求的所述服务中的至少一些服务相关联;其中:所述api调用要被用于在与所述服务的启用的关联;至少部分地使用多个服务实例来实现所述服务;所述多个服务实例能够配置成包括虚拟机实例和/或容器实例;所述虚拟机实例和/或容器实例能够配置成包括加速器资源、中央处理单元cpu、和/或存储器资源;所述至少一个服务能够配置成使用要由所述虚拟机实例和/或容器实例中的多个执行的至少一个功能链而被实现;所述至少一个功能链定义服务相关的功能的至少一个有序集合;至少一个服务实例和所述服务的所述提供与统一资源定位器信息相关联;以及所述服务器硬件能够配置成动态分配与所述至少一个服务的所述提供关联的实例资源。13.如权利要求12所述的设备,其中:所述至少一个功能链包括功能的管线。14.如权利要求12所述的设备,其中:至少一个云服务提供商包括所述服务器硬件;以及要根据至少一个租户服务协议来提供所述至少一个服务。15.如权利要求14所述的方法,其中:所述至少一个服务与下列中的一个或多个有关:分组检查;加密;解密;压缩;
解压缩;安全操作;性能跟踪;防火墙操作;虚拟私有网络操作;负载平衡;和/或记账。16.如权利要求15所述的方法,其中:要至少部分地由所述服务器硬件经由至少一个因特网网络将所述至少一个服务提供给所述至少一个客户端;以及所述服务包括一个或多个微服务。17.一种用于微服务实例的初始建立的方法,包括:通过微服务驱动器接收来自应用的、需要访问微服务的微服务发现请求;通过所述微服务驱动器向服务发现功能发出所述微服务发现请求;通过所述服务发现功能发起或预备微服务的新实例;建立消息转发器以使得所述应用能够与所述微服务的新实例通信;以及完成所述消息转发器和所述应用之间的联接以提供所述应用和所述微服务的新实例之间的通信的开放线路。18.如权利要求17所述的方法,其中,所述微服务的新实例包括应用容器实例。

技术总结


本发明的主题是“微服务架构”。一种计算设备,包括:硬件计算平台;以及用于操作在硬件计算平台上的逻辑,配置成:接收对于微服务加速器的微服务实例注册,其中所述注册包括所述微服务加速器配置成要提供的微服务以及指示所述微服务实例与相同或不同微服务的其他实例直接通信的能力的微服务连接能力;以及在微服务注册数据库中记录所述注册。务注册数据库中记录所述注册。务注册数据库中记录所述注册。


技术研发人员:

V.苏克霍姆利诺夫 K.A.多希

受保护的技术使用者:

英特尔公司

技术研发日:

2018.06.28

技术公布日:

2022/12/16

本文发布于:2024-09-23 00:24:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/43145.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   示例   多个   实例
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议