首页 / 专利库 / 软件 / 软件 / 软件定义的微服务

软件定义的微服务

阅读:713发布:2020-11-26

专利汇可以提供软件定义的微服务专利检索,专利查询,专利分析的服务。并且描述了 软件 定义的微服务。提供了一种安全地维护实现于 进程 虚拟机 内的计算平台微服务的流通的微服务 基础 结构。由该基础结构维护的计算平台微服务可包括提供和控制对底层计算环境的组件的 访问 的受保护方法。这些组件可包括例如,存储设备、 外围设备 以及网络 接口 。通过在这些 硬件 组件与 指定 高层级应用逻辑的工作流之间提供软件定义的微服务层,本文所公开的 实施例 在与常规技术相比时已提高了灵活性和可扩展性。,下面是软件定义的微服务专利的具体信息内容。

1.一种计算设备,包括:
存储器
耦合至所述存储器的至少一个处理器;以及
进程虚拟机,所述进程虚拟机能由所述至少一个处理器执行并且被配置为:
在所述存储器内初始化至少一个受控不可变方法区域CIMA;
将CIMA方法加载到所述至少一个CIMA中;
接收更新所述CIMA方法的第一请求
确定所述第一请求是否是从可信端点接收的;以及
响应于确定所述第一请求是从除所述可信端点之外的端点接收的来中止对所述第一请求的处理。
2.如权利要求1所述的计算设备,其特征在于,所述进程虚拟机进一步被配置成:
接收更新所述CIMA方法的第二请求,所述第二请求指定所述CIMA方法的更新版本;
确定所述第二请求是否是从所述可信端点接收的;以及
响应于确定所述第二请求是从所述可信端点接收的来将所述CIMA方法的所述更新版本加载到所述至少一个CIMA中。
3.如权利要求1所述的计算设备,其特征在于,所述进程虚拟机进一步被配置成:
从所述可信端点接收质询;
响应所述质询;
接收肯定确认;以及
响应于接收到所述肯定确认来继续执行。
4.如权利要求1所述的计算设备,其特征在于,所述进程虚拟机是java虚拟机。
5.如权利要求1所述的计算设备,其特征在于,所述进程虚拟机是硬件组件。
6.如权利要求1所述的计算设备,进一步包括所述可信端点。
7.如权利要求1-6中任一项所述的计算设备,其特征在于,所述CIMA方法被包括在实现一个或多个计算平台服务的一个或多个微服务类内。
8.如权利要求1-6中任一项所述的计算设备,其特征在于,所述至少一个CIMA包括多个不同方法区域。
9.如权利要求1-6中任一项所述的计算设备,进一步包括编译器,所述编译器能由所述至少一个处理器执行并且被配置成:
接收定义所述CIMA方法的源代码,所述源代码包括语言构造,所述语言构造将所述CIMA方法标识为软件可定义的;
将所述源代码编译成定义所述CIMA方法的中间代码,所述中间代码能由所述进程虚拟机执行;以及
将所述中间代码存储在所述存储器中的能由所述进程虚拟机访问位置处。
10.一种管理能由进程虚拟机执行的一个或多个受控不可变方法区域CIMA方法的方法,所述方法包括:
在受所述进程虚拟机控制的存储器内初始化至少一个CIMA;
将CIMA方法加载到所述至少一个CIMA中;
接收更新所述CIMA方法的第一请求;
确定所述第一请求是否是从可信端点接收的;以及
响应于确定所述第一请求是从除所述可信端点之外的端点接收的来中止对所述第一请求的处理。
11.如权利要求10所述的方法,进一步包括:
接收更新所述CIMA方法的第二请求,所述第二请求指定所述CIMA方法的更新版本;
确定所述第二请求是否是从所述可信端点接收的;以及
响应于确定所述第二请求是从所述可信端点接收的来将所述CIMA方法的所述更新版本加载到所述至少一个CIMA中。
12.如权利要求10所述的方法,进一步包括初始化所述进程虚拟机,所述进程虚拟机是java虚拟机。
13.如权利要求12所述的方法,其特征在于,初始化所述进程虚拟机包括初始化以硬件实现的java虚拟机。
14.如权利要求10所述的方法,其特征在于,所述进程虚拟机和所述可信端点在单个计算设备内实现,所述方法进一步包括经由所述单个计算设备本地的连接来传送所述第一请求,并且接收所述第一请求包括经由所述连接接收所述第一请求。
15.如权利要求10-14中任一项所述的方法,其特征在于,加载所述CIMA方法包括加载在实现至少一个计算平台服务的至少一个微服务类内定义的CIMA方法。
16.如权利要求10-14中任一项所述的方法,其特征在于,初始化所述至少一个CIMA包括初始化多个不同方法区域。
17.如权利要求10-14中任一项所述的方法,进一步包括:
接收定义所述CIMA方法的源代码,所述源代码包括语言构造,所述语言构造将所述CIMA方法标识为软件可定义的;
将所述源代码编译成定义所述CIMA方法的中间代码,所述中间代码能由所述进程虚拟机执行;以及
将所述中间代码存储在所述存储器中的能由所述进程虚拟机访问的位置处。
18.一种计算设备,包括:
用于在受进程虚拟机控制的存储器内初始化至少一个CIMA的装置;
用于将CIMA方法加载到所述至少一个CIMA中的装置;
用于接收更新所述CIMA方法的第一请求的装置;
用于确定所述第一请求是否是从可信端点接收的装置;以及
用于响应于确定所述第一请求是从除所述可信端点之外的端点接收的来中止对所述第一请求的处理的装置。
19.如权利要求18所述的计算设备,进一步包括:
用于接收更新所述CIMA方法的第二请求的装置,所述第二请求指定所述CIMA方法的更新版本;
用于确定所述第二请求是否是从所述可信端点接收的装置;以及
用于响应于确定所述第二请求是从所述可信端点接收的来将所述CIMA方法的所述更新版本加载到所述至少一个CIMA中的装置。
20.如权利要求18所述的计算设备,进一步包括用于初始化所述进程虚拟机的装置,所述进程虚拟机是java虚拟机。
21.如权利要求20所述的计算设备,其特征在于,用于初始化所述进程虚拟机的装置包括用于初始化以硬件实现的java虚拟机的装置。
22.如权利要求18所述的计算设备,进一步包括用于经由所述单个计算设备本地的连接来传送所述第一请求的装置,并且接收所述第一请求包括经由所述连接接收所述第一请求。
23.如权利要求18-22中任一项所述的计算设备,其特征在于,用于加载所述CIMA方法的装置包括用于加载在实现至少一个计算平台服务的至少一个微服务类内定义的CIMA方法的装置。
24.如权利要求18-22中任一项所述的计算设备,其特征在于,用于初始化所述至少一个CIMA的装置包括用于初始化多个不同方法区域的装置。
25.如权利要求18-22中任一项所述的计算设备,进一步包括:
用于接收定义所述CIMA方法的源代码的装置,所述源代码包括语言构造,所述语言构造将所述CIMA方法标识为软件可定义的;
用于将所述源代码编译成定义所述CIMA方法的中间代码的装置,所述中间代码能由所述进程虚拟机执行;以及
用于将所述中间代码存储在所述存储器中的能由所述进程虚拟机访问的位置处的装置。

说明书全文

软件定义的微服务

背景技术

[0001] 微服务是执行高度内聚的应用逻辑并暴露良好定义的接口软件组件,其他系统组件可通过该接口与微服务交互操作。凭借这些特性,微服务一般松散地耦合至其他系统组件并且可独立于它们而被改变和部署。然而,微服务一般不松散地耦合至它们在其中执行的计算环境。相反,微服务被编译和链接以在特定计算环境内执行并在特定操作系统的控制之下执行。附图说明
[0002] 图1是例示出根据本公开的实施例来配置的实现微服务基础结构的计算系统的框图。
[0003] 图2是例示出根据本公开的实施例的图1的主机设备的各种组件的框图
[0004] 图3是例示出根据本公开的实施例的程序构建流线的框图。
[0005] 图4是例示出根据本公开的实施例的提供微服务基础结构的方法的流程图
[0006] 图5是例示出根据本公开的实施例的包括特定微服务的微服务基础结构的示例的框图。
[0007] 图6是根据本公开的实施例的可用于实现微服务基础结构的各种组件的计算设备的框图。

具体实施方式

[0008] 本文所公开的微服务基础结构安全地维护实现于进程虚拟机内的一个或多个计算平台微服务的流通。在一些实施例中,该基础结构包括定义计算平台微服务的属性和方法的源代码、处理源代码以生成待被进程虚拟机执行的中间代码的编译器、以及将微服务和方法安全地部署到进程虚拟机的可信端点。在一些实施例中,由此基础结构维护的计算平台微服务可提供和控制对底层计算环境的组件的访问。这些组件可包括例如,系统输入/输出设备、存储设备、外围设备以及网络接口。而且,这些组件对实现进程虚拟机的计算设备来说可以是本地的和/或可以与该计算设备不同并远离它。
[0009] 这些微服务所提供的平台计算服务及其访问方法的根本性质确保了实质性的安全措施。因此,在一些实施例中,进程虚拟机分配受控不可变方法区域(CIMA)并将用于访问底层计算环境的方法存储到此CIMA中。此类方法在本文中可被称为CIMA方法。在一些实施例中,进程虚拟机保护存储在CIMA中的中间代码(例如,CIMA方法)免受在进程虚拟机内或别处运行的程序(例如,调用CIMA方法的微服务)的操纵。
[0010] 此外,为了维护个体微服务和CIMA方法的部署中的安全性,在一些实施例中,进程虚拟机从可信端点接收安全质询并在执行任何部署活动之前对该安全质询作出响应。在这些实施例中,可信端点对实现进程虚拟机的计算设备来说可以是本地的或可以与该计算设备不同并远离它。在任一情形中,由进程虚拟机生成并传送到可信端点的响应可包括认证数据。认证数据描述了进程虚拟机的一个或多个组件的构造并且由此可被用于测量进程虚拟机的完整性。例如,在被检查以生成认证数据的组件之一已被改变(例如,经由恶意软件)的情况下,认证数据将指示组件中的改变。因此,可信端点在处理来自进程虚拟机的响应的过程中可确定进程虚拟机的组件是否处于预期的、预定义的状态。在这种情况下,可信端点将肯定确认传送给进程虚拟机,由此建立与进程虚拟机的可信通信会话。在可信端点确定进程虚拟机的一个或多个组件不处于预定义状态的情况下,可信端点将不传送肯定确认,由此将缺少信任的信号发送给进程虚拟机。进程虚拟机对缺少信任如何反应可以变化,但此类反应可包括对进程虚拟机的终止。
[0011] 在一些实施例中,在进程虚拟机与可信端点之间建立可信通信会话的情况下,可信端点可如期望的那样将更新微服务和/或CIMA方法的一个或多个请求传送给进程虚拟机。这些请求可包括例如,更新的CIMA方法和加载该更新的CIMA方法的请求。响应于接收到此类请求,进程虚拟机解析该请求并验证是否是在可信通信会话内接收到该请求。如果是,则进程虚拟机将包括在该请求中的更新部署到CIMA。在该请求不是在可信通信会话内被接收到的情况下,进程虚拟机中止对更新的部署。
[0012] 在一些实施例中,编译器接收源代码并生成中间代码以供由进程虚拟机执行。在这些实施例中,编译器被配置成针对一个或多个语言构造扫描源代码,这一个或多个语言构造指示由软件定义的微服务调用或包括在软件定义的微服务中的受保护方法(例如,CIMA方法)。此外,在这些实施例中,在编译器找到此类语言构造的情况下,编译器生成定义受保护方法的中间代码并将该中间代码存储在对进程虚拟机可用的存储位置处。因此,当进程虚拟机被执行时,进程虚拟机的初始化进程的一部分用于将新编译的受保护方法加载到进程虚拟机内的CIMA中。
[0013] 在一些实施例中,本文所描述的软件定义的计算平台微服务作为整个工作流的一部分被本地或基于的资源代理供应和编排。在这些工作流内,计算平台微服务可与其他资源通信以实现整体计算目标。例如,软件定义的计算平台微服务可以是点对点(peer to peer)系统的一部分,本地资源代理在该点对点系统中交互操作以标识并选出用于整体计算目标的领导节点。通过在所编排的工作流与本地或远程硬件资源之间提供软件定义的微服务层,本文所公开的实施例在与常规技术相比时已提高了灵活性和可扩展性。
[0014] 而且,在一些实施例中,CIMA方法将接口暴露给由计算平台微服务或其他微服务调用的底层计算环境。例如,CIMA方法可以是至少部分地加载到CIMA并且由可信的基于云的控制台配置和/或控制的类库的一部分。以这种方式,本文所公开的实施例在细粒度方法级别上实现底层计算环境的软件驱动视图。
[0015] 下面详细讨论这些示例方面和实施例的其他方面、实施例和优点。此外,应该理解的是,前述信息和下面的详细描述仅仅是各个方面和实施例的说明性示例,并且旨在提供用于理解所要求保护的方面和实施例的性质和特征的概述或框架。“对实施例”、“其他实施例”、“示例”、“一些实施例”、“一些示例”、“替换实施例”、“各种实施例”、“一个实施例”、“至少一个实施例”、“另一实施例”、“此实施例和其他实施例”等等的引用不一定是相互排斥的,并且旨在指示结合该实施例或示例描述的特定特征、结构或特性可被包括在至少一个实施例或示例中。本文中此类术语的出现不一定都指代同一实施例或示例。本文公开的任何实施例或示例可以与任何其它实施例或示例组合。
[0016] 而且,本文使用的措辞和术语是出于描述的目的,而不应被认为是限制性的。在本文中以单数形式引用的各示例、各实施例、各组件、各元素或各系统和各方法的各动作也可包含包括复数的实施例,并且在本文中以复数形式引用的任何实施例、组件、元素或动作也可包含仅包括单数的实施例。以单数或复数形式引用不旨在限制目前所公开的系统或方法,及其组件、动作或元素。本文使用的“包括”、“含有”、“具有”、“包含”、“涉及”及其变体意在涵盖其后列出的项目及其等同物以及附加项目。对“或”的引用可被解释为包含性的,使得使用“或”描述的任何术语可指示所描述的术语中的一个、多于一个以及全部。附加地,本文档和通过引用所结合的文档之间的不一致的术语用法的情况,在结合的引用中的用法应当被认为是对本文档的用法的补充;对于不可调和的不一致,以本文档中的术语用法为准。
总体概述
[0017] 由紧耦合组件组成的计算机实现的系统通常脆弱且不易修改。虽然已经出现了一些进步以实现更松散耦合的系统,但系统组件之间的紧耦合在某些领域仍然是一个麻烦的问题。例如,虽然许多常规管理运行时系统支持动态应用更新,但系统接口(诸如系统输入/输出、网络、存储和外围设备)是不能经由编程接口进行更改的硬编码系统层的一部分。这种方法有很多很好的理由,以安全性作为首要考虑因素,但是这种方法也会阻止系统在如何提供这些系统层服务方面具有灵活性。尽管虚拟化技术可以帮助解决这个问题,但是一些传统的虚拟化技术可能会带来服务粒度挑战。例如,虽然系统或操作系统虚拟机是用于工作负载级别编排(安装-启动-停止-恢复)的好工具,但进程虚拟机最适合在应用程序方法级别进行细粒度的编排。
[0018] 因此,根据本文所公开的至少一些实施例,提供了微服务基础架构,其中虚拟化系统接口被实现为进程虚拟机(诸如 虚拟机)内的方法和/或微服务。在一些实施例中,微服务基础结构至少包括可信端点和主机设备。微服务基础结构提供用于维护(例如升级或以其他方式修改)微服务和/或方法的安全机制。这些微服务和/或方法形成可被安全地修改和执行的基于软件的虚拟化计算平台。
系统架构
[0019] 图1例示出根据至少一个实施例的实现微服务基础结构的分布式计算系统100。如所示,计算系统100包括主机设备102、远程资源代理106、远程资源108、工作流118以及通信网络110。主机设备102包括本地硬件资源114以及进程虚拟机112,本地硬件资源114会在下文参考图6来进一步描述。本地硬件资源114可包括例如,一个或多个网络接口(例如,网络接口卡)、数据存储设备(例如持久或易失性存储器)、以及外围设备(例如,显示器、打印机、扬声器等等)。如所示,进程虚拟机112实现和/或控制CIMA 104和微服务116。
[0020] 图1所例示的通信网络110可包括计算设备可通过其交换(例如,传送或接收)数据的各种网络中的任一种。此类网络的示例包括广域网、局域网、蜂窝网络、普通电话网络等等。虽然经由网络110来交换的数据可根据包括例如传输控制协议/互联网协议(TCP/IP)的各种标准来编码,但本文所公开的各实施例不限于特定的网络标准或标准集。
[0021] 在由图1所例示的一些实施例中,主机设备102、远程资源代理106以及远程资源108中的每个都通过使用一个或多个计算设备(诸如以下参考图6来进一步描述的计算设
备)来实现。在这些实施例中,主机设备102、远程资源代理106以及远程资源108中的每一个都被配置成经由网络110交换信息。
[0022] 在一些实施例中,远程资源代理106被配置成供应和编排工作流118。当根据此配置执行时,远程资源代理106可供应和编排远程资源108和/或由主机设备102实现的微服务116。以此种方式供应和编排的远程资源108可包括驻留在来自底层计算硬件的各种抽象层处的各种真实和/或虚拟的计算资源。例如,远程资源108可包括数据存储设备,诸如存储器;计算资源,诸如处理器;网络资源,诸如路由器;等等。附加地或替代地,远程资源108可包括真实和/或虚拟服务器,诸如应用服务器数据库服务器等等。这些真实和/或虚拟服务器可被组织成协作地实现工作流118的网格或群集。可用于实现远程资源代理106并编排工作流118的商业上可用的远程资源代理的示例包括亚逊网络服务(Amazon  Web 
Services)、微软云(Microsoft Azure)、谷歌计算引擎(Google Compute Engine)以及IBM Softlayer。
[0023] 在一些实施例中,远程资源代理106也是可信端点并且由此被配置成维护驻留在各种其他计算设备上的方法和微服务(诸如存储在CIMA 104中的方法和/或驻留在主机设
备102上的微服务116)的流通。当在一些实施例中根据此配置执行时,远程资源代理106通过在可信通信会话内将一个或多个方法的更新版本部署到CIMA 104和/或将微服务116的
更新版本部署到主机设备102来维护存储在CIMA 104中的方法和/或微服务116的流通。这些更新后的版本可包括一个或多个类(包括各种属性和方法)。方法可包括常规存储的方法和CIMA方法两者。
[0024] 在一些实施例中,为了建立和维护与主机设备102的可信通信会话,远程资源代理106周期性地和/或不定期地将一个或多个质询(challenge)传送到驻留在主机设备102上
的进程虚拟机112并从该进程虚拟机112接收一个或多个响应。这一个或多个响应可包括由进程虚拟机112生成的认证(attestation)数据。在一些实施例中,此认证数据描述主机设备102的各种组件的构造。在这些实施例中,远程资源代理106处理一个或多个响应以及任何包括在内的认证数据以确保主机设备102的一个或多个组件未被替换、改变或以其他方式(例如,通过恶意软件)被盗用。例如,在一些实施例中,远程资源代理106执行认证数据与参考数据的按位比较,该参考数据由远程资源代理106根据被记录为最近部署到主机设备
102的组件的副本在本地生成。在按位比较指示匹配的情况下(即,在认证数据与参考数据匹配的情况下),远程资源代理106能够验证主机设备102的完整性并且由此继续与它安全地交互操作。
[0025] 在一些实施例中,进程虚拟机112是提供用于执行应用逻辑的硬件和/或操作系统独立计算平台的硬件和/或软件组件。此应用逻辑可采取以例如由进程虚拟机112支持的中间代码编码的软件程序的形式。在一些实施例中,进程虚拟机112和其组件被配置成保护存储在CIMA 104中的全部中间代码并使该全部中间代码不可变,除了可信端点在可信通信会话内请求对中间代码作出改变的情况之外。例如,在这些实施例的一个实施例中,进程虚拟机112存储描述位于CIMA 104内的存储器地址的信息并中止并非由可信端点在可信通信会话内传送的对所存储的存储器地址进行写入的任何指令的执行。可用于实现进程虚拟机112的进程虚拟机的示例包括Java虚拟机、微软网络框架(Microsoft.Net framework)等
等。此外,可用受处理器(例如,参考图6在下文描述的处理器604)控制的硬件或由此类处理器执行的软件来实现本文所描述的进程虚拟机。
[0026] 在一些实施例中,微服务116是可由进程虚拟机112执行的程序,用于给可由进程虚拟机112执行的其他程序提供一个或多个硬件和/或操作系统独立计算平台服务。微服务116可被配置成提供的计算平台服务的示例包括网络、存储和/或外围设备。例如,在一个实施例中,微服务116被配置成接收和处理经由虚拟化网络接口卡传送信息的请求。在另一实施例中,微服务116被配置成接收和处理将数据存储在虚拟化数据存储设备的请求。在另一实施例中,微服务116被配置成接收和处理在虚拟化显示器上显示信息的请求。因此,在这些实施例中,微服务116被配置成通过将系统接口暴露给虚拟化计算平台组件、接收经由系统接口使用虚拟化计算平台组件的请求以及处理这些使用请求来实现计算平台服务。在处理使用请求时,微服务116可访问和利用本地硬件资源114(例如,经由进程虚拟机112)、将请求传送给远程资源代理106以供应和/或利用远程资源108、和/或将请求传送给远程资源
108以访问和使用之前供应的远程资源。附加地或替代地,在处理使用请求中,微服务116可调用存储在CIMA 104中的控制并提供对底层计算环境的组件的访问的CIMA方法。由微服务
116的一些实施例执行的进程的特定示例会参考图4和5在下文进一步来描述。
[0027] 图2更详细地例示出主机设备102。如图2所示,主机设备102包括进程虚拟机112、本地硬件资源114以及主机设备102本地的可信端点210。进程虚拟机112包括加载器202、方法区域206以及测量器214。方法区域206包括CIMA 104。CIMA 104存储CIMA方法(例如,方法3和方法4)。方法区域206存储常规方法(例如,方法1和方法2)。这些方法中的一个或多个可被微服务116或其他微服务/程序实现和/或调用。
[0028] 在图2所例示的一些实施例中,本地硬件资源114实现进程虚拟机112和可信端点210两者。例如,进程虚拟机112和可信端点210可由本地硬件资源的共享组件(例如,一个或多个处理器)来实现。在其它实施例中,可信端点210可通过使用本地硬件资源中固定于和/或专用于可信端点210的组件来实现。类似地,进程虚拟机112和可信端点210可各自被实现为在单个操作系统控制下执行的一个或多个进程或者可各自被实现为在不同操作系统控
制下执行的一个或多个进程。在这些实施例和可信端点和进程虚拟机两者被实现于单个计算设备内的其他实施例中,可信端点210可使用主机设备102本地的连接(即,不穿过诸如网络110之类的网络的连接)来(例如,经由CIMA方法加载请求、安全质询和确认)与进程虚拟机112通信。在一些实施例中,可信端点210被配置为编排由在进程虚拟机112内执行的若干微服务实现的工作流的本地资源代理。
[0029] 在一些实施例中,可信端点210被配置成维护驻留在主机设备102上的微服务的流通。例如,在这些实施例中,可信端点210可与进程虚拟机112建立可信通信会话并维护这些可信通信会话内的微服务116的流通。当在图2所例示的实施例中根据此配置执行时,为了建立可信通信会话,可信端点210生成安全质询216并将安全质询216传送至测量器214。测量器214被配置成接收并解析该安全质询,并且作为响应,生成安全响应218并将安全响应218传送至可信端点210。安全响应218可包括描述进程虚拟机112的一个或多个组件的构造的认证数据。此认证数据可包括例如,为加载器202计算的一个或多个散列值。可信端点210接收并处理该安全响应218。在可信端点210将该认证数据与由可信端点210生成的参考数据进行匹配的情况下,可信端点210将确认220传送到进程虚拟机112,由此建立可信通信会话。
[0030] 在一些实施例中,可信端点210被配置成在可信通信会话内生成并传送包括CIMA方法加载请求212的微服务更新请求。附加地或替代地,在一些实施例中,可信端点210被配置成在可信通信会话内独立于任何微服务更新请求生成并传送CIMA方法加载请求212。
CIMA方法加载请求212可包括例如,微服务116(例如,方法3和/或方法4)的至少一部分或被编码为中间代码的另一CIMA方法,可包括微服务或CIMA方法的一部分的先前版本与微服务或CIMA方法的新版本之间的差异,和/或可包括指定包括在微服务和/或另一CIMA方法内或由微服务和/或另一CIMA方法使用的微服务、方法的更新版本的其他信息。
[0031] 在一些实施例中,加载器202被配置成在中间代码被进程虚拟机112执行之前管理中间代码的检索和存储。当在图2所例示的一些实施例中根据此配置执行时,加载器202从包括在本地硬件资源114内的数据存储设备检索中间代码并将该中间代码存储在CIMA 104或方法区域206内。加载器202保留CIMA 104以供对提供计算平台服务的中间代码(例如,方法3和/或方法4)的存储。加载器202将要由进程虚拟机112执行的其他中间代码(例如,方法1和方法2)存储在方法区域206中。
[0032] 在一些实施例中,加载器202被配置成接收、处理并响应由可信端点(诸如远程资源代理106和/或本地可信端点210)生成的安全质询。在其他实施例中,加载器202被配置成接收、处理并响应可以或可以不包括CIMA方法加载请求(诸如CIMA方法加载请求212)的微服务更新请求。在这些配置下由加载器202执行的动作的示例在下文会参考图4和5来进一步描述。程序构建流水线
[0033] 图3例示出根据本文所公开的各实施例的程序构建流水线的示例。如所示,图3包括CIMA方法源代码300、编译器302、CIMA方法中间代码304以及进程虚拟机112。CIMA方法源代码300能以各种人类可读语言中的任一种(诸如Java)写成。以下是人类可读源代码中的CIMA方法声明的一个示例。如此CIMA方法声明所示,在一些实施例中,可使用注释(例如,“软件可定义的”)来将方法(writeFlashData())标识为CIMA方法。在其他实施例中,可使用关键字(例如,“软件可定义的”)来类似地标识CIMA方法。虽然提供这些特定源代码语言构造来作为示例,但是本文所公开的实施例不限于任何特定源代码语言构造。
[0034] 在一些实施例中,编译器302包括进程虚拟机编译器,该进程虚拟机编译器被配置成标识并处理用于标识CIMA方法的一个或多个语言构造中的任一个。在接收到编译CIMA方法源代码300的命令时,编译器302编译CIMA方法源代码300以生成CIMA方法中间代码304。作为此编译过程的一部分,编译器302标识任何已声明的CIMA方法并生成CIMA方法中间代码304内的中间代码,CIMA方法中间代码304被配置成使进程虚拟机的加载器(例如,加载器
202)将中间代码存储在CIMA(例如,CIMA 104)中。以此方式,CIMA方法中间代码304被标识为可由可信端点(例如,远程资源代理106或可信端点210)控制和升级。CIMA方法中间代码
304随后(例如,经由加载器202)被提供给进程虚拟机112以供存储和执行。
方法
[0035] 根据一些实施例,实现于计算系统(诸如分布式计算系统100)内的微服务基础结构执行安全地将计算平台微服务和/或CIMA方法部署到主机设备的进程。图4例示了根据这些实施例的CIMA维护进程400。如图4所示,CIMA维护进程400包括若干动作,该若干动作共同地使主机设备(诸如主机设备102)能够与可信端点建立可信通信会话、在可信通信会话内接收对一个或多个CIMA方法的更新、部署这些更新以及在实现CIMA方法和/或与CIMA方法交互操作的进程虚拟机内执行一个或多个微服务。
[0036] 如图4所例示的,CIMA维护进程400开始于动作402,其中主机设备初始化进程虚拟机,诸如进程虚拟机112。在一些实施例中,由主机设备在动作402中执行的动作包括将加载器(诸如加载器202)实例化;分配CIMA,诸如CIMA 104;以及分配方法区域,诸如方法区域206。由主机设备在动作402中执行的动作可进一步包括经由加载器将一个或多个方法(诸如以上参考图2所描述的方法1和/或方法2)加载到方法区域中;经由加载器将一个或多个CIMA方法(诸如方法3和/或方法4)加载到CIMA中;经由加载器加载微服务116的属性和其他成份;以及执行微服务116和/或其组件。
[0037] 在动作418中,进程虚拟机确定包括CIMA方法加载请求(诸如CIMA方法加载请求212)的微服务更新请求是否已被从可信端点(诸如远程资源代理106或可信端点210)接收
到。在动作420中,进程虚拟机确定微服务更新请求是否在可信通信会话期间被接收到。例如,进程虚拟机可将微服务更新请求的接收时间与最近成功的安全响应的时间进行比较。
在微服务更新请求在可信通信会话期间被接收到的情况下(例如,在微服务更新请求的接收时间在最近成功的安全响应的时间的预定范围内的情况下),进程虚拟机执行动作422。
在微服务更新请求不在可信通信会话期间被接收到的情况下(例如,在微服务更新请求的接收时间不在最近接收成功的安全响应的时间的预定范围内的情况下),进程虚拟机在动作410中执行微服务和/或其组件。
[0038] 在动作422中,进程虚拟机将包括在CIMA方法加载请求中的CIMA方法部署到主机设备内的CIMA。在部署CIMA方法时,进程虚拟机(例如,经由加载器)将包括在CIMA方法加载请求中和/或在CIMA方法加载请求中表示的中间代码存储在CIMA中。此部署活动可包括复制数据,或者可包括对数据更复杂的操纵(例如,解密、解压缩等等)。
[0039] 在动作408中,进程虚拟机确定在进程虚拟机内执行的所有进程是否都已达到安全点。如果不是,则进程虚拟机在动作410中继续执行微服务。如果所有进行都已达到安全点,则进程虚拟机执行动作404。在动作404中,进程虚拟机确定是否已从可信端点接收到安全质询,诸如安全质询216。如果是,则进程虚拟机执行动作412。否则,进程虚拟机执行动作
410。
[0040] 在动作412中,进程虚拟机例如通过执行测量器214来测量主机设备的各种组件的完整性以生成描述组件构造的认证数据。为其生成认证数据的组件可包括例如进程虚拟机本身的组件(诸如加载器、应用逻辑、微服务以及任何驱动程序)或者由进程虚拟机用于与主机设备本地的硬件组件(诸如本地硬件资源114)通信的其他组件。在动作414中,进程虚拟机传送对安全质询的响应,诸如安全响应218。此响应可包括在动作412中生成的认证数据。
[0041] 在动作416中,进程虚拟机确定响应是否成功。例如,进程虚拟机可基于是否在预定时间段内从可信端点接收到肯定确认(诸如确认220)来作出此确定。如果是,则可信通信会话被建立,并且进程虚拟机进行到动作418。在一些实施例中,在动作416内,进程虚拟机存储指示可信通信会话何时建立的时间戳。如果响应不成功(例如,如果未在预定时间段内接收到肯定确认),则没有可信通信会话被建立,并且进程虚拟机终止CIMA维护进程400,并且在一些实施例中,终止所有进程,包括其本身,作为附加的安全措施。
[0042] 本文所公开的进程中的每一个描绘了特定示例中的一个特定的动作序列。可通过或使用如本文所讨论的专配置的一个或多个计算设备来执行包括在这些进程中的动作。一些动作是可选的,并且由此可根据一个或多个示例被省略。附加地,可改变动作的顺序,或者可添加其他动作,而不背离本文所讨论的系统和方法的范围。
闪存微服务示例
[0043] 图5例示出根据至少一个实施例的实现微服务基础结构的分布式计算系统500。如所示,计算系统500包括主机设备102、远程资源代理106、远程数据存储506、远程数据存储508、工作流118以及通信网络110。如图5所示,远程数据存储506和远程数据存储508通过使用一个或多个计算设备(诸如以下参考图6所进一步描述的计算设备)来实现。在这些实施例中,远程数据存储506和远程数据存储508被配置成经由网络110交换信息。
[0044] 如图5所例示的,主机设备102包括本地闪存硬件504。如所示,进程虚拟机112实现和/或控制闪存微服务502。在一些实施例中,闪存微服务502是可由进程虚拟机112执行以给根据工作流118执行的其他程序提供对闪存存储的访问的程序。在处理将数据存储到闪存中的请求时,闪存微服务502可访问并利用本地闪存504,将请求传送至远程资源代理106以供应和/或利用远程数据存储506或远程数据存储508。
[0045] 例如,在一些实施例中,闪存微服务502被配置成通过将数据存储在闪存504以及远程数据存储506中来处理存储数据的请求。在根据这些实施例的一个示例中,如果远程数据存储506变得不可用或者被盗用,则远程资源代理106可将包括CIMA方法加载请求的微服务更新请求传送至主机设备102。CIMA方法加载请求可包括中间代码,该中间代码在被部署时,使闪存微服务502通过将数据存储在远程数据存储508中来处理存储数据的请求。计算设备
[0046] 图6例示出可被用于实现如本文所描述的微服务基本结构的各种组件的计算设备600。如所示,计算设备600包括存储器602、至少一个处理器604以及至少一个接口606。虽然这些组件的特定类型和型号可在计算设备之间改变,但可以理解,每个计算设备均包括处理器、存储器和接口。
[0047] 接口606包括一个或多个物理接口设备(诸如输入设备、输出设备和组合输入/输出设备)以及被配置成驱动设备的操作的软件栈。接口设备可接收输入或提供输出。更具体地,输出设备可提供用于外部呈现的信息而输入设备可从外部源接收信息或生成信息。接口设备的示例包括键盘鼠标跟踪球、话筒、触摸屏、打印设备、显示屏、扬声器、网络接口卡、环境传感器等等。接口设备允许可编程设备交换信息以及与诸如用户和其他系统之类的外部实体进行通信。
[0048] 存储器602包括可由处理器604读取和/或写入的易失性和/或非易失性(非瞬态)数据存储。存储器602存储在计算设备600的操作期间使用或操纵的程序和数据。存储在存储器602中的程序是可由该至少一个处理器602执行的一系列指令。存储器602可包括相对高性能的数据存储,诸如寄存器、高速缓存、动态随机存取存储器以及静态存储器。存储器
602可进一步包括相对低性能、非易失性、计算机可读和/或可写的数据存储介质,诸如闪存或者光盘或磁盘。各实施例可将存储器602组织成特殊的,并且在一些情形中独特的结构以存储支持本文所公开的组件的数据。这些数据结构可被特别配置成保存存储空间或增加数据交换性能并且可被调整大小且可被组织成存储用于特定数据和数据类型的值。
[0049] 在一些实施例中,为了实现和/或控制专门组件,处理器604执行导致被操纵的数据的一系列指令(即,一个或多个程序)。处理器604可以是本领域已知的任意类型的处理器、多处理器、微处理器控制器。处理器604经由互连机制(诸如总线或一些其他数据连接)连接至存储器602和接口606并与存储器602和接口606通信数据。此互连机制在图6中通过连接计算设备内的组件的线来表示。在操作中,处理器604使数据从存储器602中的非易失性(即,非瞬态)数据存储介质被读取并被写入到高性能数据存储。处理器604操纵高性能数据存储内的数据并在处理完成之后将经操纵的数据复制到数据存储介质。
[0050] 虽然计算设备600作为能够执行本文所公开的进程的计算设备的示例被示出,但是实施例不限于图6所示的计算设备。例如,各进程可由具有与图6所示的那些不同的架构或组件的一个或多个计算设备来执行。例如,可编程设备可包括专门编程的专用硬件(诸如专用集成电路(ASIC)、场可编程门阵列(FPGA)、复杂可编程逻辑设备(CPLD)以及其他中实现)或者被定制成执行本文所公开的进程的其他硬件。因此,如本文所公开的计算设备的组件可以软件、硬件、固件或其任意组合来实现。
[0051] 例如,如以上参考图1所描述的,在一些实施例中,进程虚拟机112以硬件来实现。在其他实施例中,进程虚拟机112通过处理器604来实现。如以上所描述的,此处理器604可以是通用处理器。然而,当执行如本文所描述的(例如,如图3-5中任一者所描绘的)特定软件进程时,处理器604变成能够执行以下操作的专用处理器:能够基于所接收的输入数据作出特定的基于逻辑的判定,并且进一步能够提供可被用于控制或以其他方式通知要被处理器604和/或与处理器604通信地耦合的其他处理器或电路执行的后续处理的一个或多个输出。处理器604以特定方式对特定输入刺激作出反应并基于该输入刺激生成对应输出。从这个意义上来说,根据一个实施例的处理器604的结构被图3-5中任一者所示的进程限定。而且,在一些示例情形中,处理器604通过一系列逻辑转变(其中处理器604内部或外部的各种内部寄存器状态和/或其他位单元状态可被设置成逻辑高或逻辑低)继续进行。逻辑转变的此特定序列由到处理器604的电输入信号的状态来确定,并且专用结构由处理器604在执行图3-5所示的进程的每个软件指令时有效地假定。特别地,那些指令预期要被接收的各种刺激并相应地改变所牵连的存储器状态。以这种方式,处理器604可生成并存储或以其他方式提供有用的输出信号。因此,可以理解,处理器604在软件进程的执行期间变成专用机器,其能够仅处理特定输入信号并且基于每个指令执行期间所执行的一个或多个逻辑操作来呈
现特定输出信号。在至少一些示例中,处理器604被配置成执行其中软件被存储在与处理器
604耦合的数据存储设备(例如,存储器602)中的功能,并且该软件被配置成使处理器604继续进行导致该功能被执行的一系列各种逻辑操作。
其他示例实施例
[0052] 以下示例涉及另外的实施例,根据这些实施例,许多排列和配置将是显而易见的。
[0053] 示例1是计算设备,包括存储器、耦合至存储器的至少一个处理器以及可由该至少一个处理器执行的进程虚拟机。进程虚拟机被配置成在存储器内初始化至少一个受控不可变方法区域(CIMA);将CIMA方法加载到该至少一个CIMA中;接收更新CIMA方法的第一请求;确定第一请求是否是从可信端点接收的;以及响应于确定第一请求是从除所述可信端点之外的端点接收的来中止对所述第一请求的处理。
[0054] 示例2包括示例1的主题,其中进程虚拟机进一步被配置成接收更新CIMA方法的第二请求,该第二请求指定CIMA方法的更新版本;确定第二请求是否是从可信端点接收的;以及响应于确定第二请求是从可信端点接收的来将CIMA方法的更新版本加载到该至少一个CIMA中。
[0055] 示例3包括示例1或示例2的主题,其中进程虚拟机进一步被配置成从可信端点接收质询;响应该质询;接收肯定确认;以及响应于接收到肯定确认来继续执行。
[0056] 示例4包括示例3的主题,其中进程虚拟机进一步被配置成至少部分地通过生成包括进程虚拟机的一个或多个组件的完整性的测量值的认证数据来响应质询。
[0057] 示例5包括示例3或示例4的主题,其中进程虚拟机进一步被配置成响应于接收到肯定确认来与可信端点建立可信通信会话;并且在可信通信会话内从可信端点接收第二请求。
[0058] 示例6包括示例1-5中任一项的主题,其中进程虚拟机进一步被配置成从可信端点接收质询;响应该质询;未能在预定时间段内接收到肯定确认;以及响应于未能在预定时间段内接收到肯定确认而终止进程虚拟机的执行。
[0059] 示例7包括示例3-6中任一项所述的主题,其中进程虚拟机进一步被配置成在安全点处响应质询。
[0060] 示例8包括示例1-7中任一项所述的主题,其中进程虚拟机是java虚拟机。
[0061] 示例9包括示例1-8中任一项所述的主题,其中进程虚拟机是硬件组件。
[0062] 示例10包括示例1-9中任一项的主题,进一步包括可信端点。
[0063] 示例11包括示例1-10中任一项的主题,其中CIMA方法被包括在实现一个或多个计算平台服务的一个或多个微服务类内。
[0064] 示例12包括示例1-11中任一项的主题,其中该至少一个CIMA包括多个不同方法区域。
[0065] 示例13包括示例1-12中任一项的主题,进一步包括编译器,该编译器可由该至少一个处理器执行并被配置成接收定义CIMA方法的源代码,该源代码包括语言构造,该语言构造将CIMA方法标识为软件可定义的;将该源代码编译成定义CIMA方法的中间代码,该中间代码可由进程虚拟机执行;以及将该中间代码存储在存储器中可由进程虚拟机访问的位置处。
[0066] 示例14是一种管理可由进程虚拟机执行的一个或多个受控不可变方法区域(CIMA)方法的方法。该方法包括在受进程虚拟机控制的存储器内初始化至少一个CIMA;将CIMA方法加载到该至少一个CIMA中;接收更新CIMA方法的第一请求;确定第一请求是否是从可信端点接收的;以及响应于确定第一请求是从除可信端点之外的端点接收的来中止对第一请求的处理。
[0067] 示例15包括示例14的主题,进一步包括接收更新CIMA方法的第二请求,该第二请求指定CIMA方法的更新版本;确定第二请求是否是从可信端点接收的;以及响应于确定第二请求是从可信端点接收的来将CIMA方法的更新版本加载到该至少一个CIMA中。
[0068] 示例16包括示例14或示例15的主题,进一步包括从可信端点接收质询;响应该质询;接收肯定确认;以及响应于接收到肯定确认来继续执行。
[0069] 示例17包括示例16的主题,其中响应质询包括生成认证数据,该认证数据包括进程虚拟机的一个或多个组件的完整性的测量值。
[0070] 示例18包括示例16或示例17的主题,进一步包括:响应于接收到肯定确认来与可信端点建立可信通信会话;以及在可信通信会话内从可信端点接收第二请求。
[0071] 示例19包括示例14-18中任一项的主题,进一步包括从可信端点接收质询;响应该质询;未能在预定时间段内接收到肯定确认;以及响应于未能在预定时间段内接收到肯定确认而终止进程虚拟机的执行。
[0072] 示例20包括示例16-19中任一项的主题,其中响应质询包括在安全点处响应质询。
[0073] 示例21包括示例14-20中任一项的主题,进一步包括初始化进程虚拟机,该进程虚拟机是java虚拟机。
[0074] 示例22包括示例21的主题,其中初始化进程虚拟机包括初始化以硬件实现的java虚拟机。
[0075] 示例23包括示例14-22中任一项的主题,其中进程虚拟机和可信端点在单个计算设备内实现,所述方法进一步包括经由该单个计算设备本地的连接来传送第一请求,并且接收第一请求包括经由该连接接收第一请求。
[0076] 示例24包括示例14-23中任一项的主题,其中加载CIMA方法包括加载在实现至少一个计算平台服务的至少一个微服务类内定义的CIMA方法。
[0077] 示例25包括示例14-24中任一项的主题,其中初始化该至少一个CIMA包括初始化多个不同方法区域。
[0078] 示例26包括示例14-25中任一项的主题,进一步包括接收定义CIMA方法的源代码,该源代码包括语言构造,该语言构造将CIMA方法标识为软件可定义的;将该源代码编译成定义CIMA方法的中间代码,该中间代码可由进程虚拟机执行;以及将该中间代码存储在存储器中可由进程虚拟机访问的位置处。
[0079] 示例27是用指令编码的非瞬态计算机可读介质,该指令在由一个或多个处理器执行时导致执行用于管理一个或多个受控不可变方法区域(CIMA)方法的进程。该进程包括在受进程虚拟机控制的存储器内初始化至少一个CIMA;将CIMA方法加载到该至少一个CIMA中;接收更新CIMA方法的第一请求;确定第一请求是否是从可信端点接收的;以及响应于确定第一请求是从除可信端点之外的端点接收的来中止对第一请求的处理。
[0080] 示例28包括示例27的主题,其中该进程进一步包括接收更新CIMA方法的第二请求,该第二请求指定CIMA方法的更新版本;确定第二请求是否是从可信端点接收的;以及响应于确定第二请求是从可信端点接收的来将CIMA方法的更新版本加载到该至少一个CIMA
中。
[0081] 示例29包括示例27或示例28的主题,其中该进程进一步包括从可信端点接收质询;响应该质询;接收肯定确认;以及响应于接收到肯定确认来继续执行。
[0082] 示例30包括示例29的主题,其中在该进程中,响应质询包括生成认证数据,该认证数据包括进程虚拟机的一个或多个组件的完整性的测量值。
[0083] 示例31包括示例29或示例30的主题,其中该进程进一步包括响应于接收到肯定确认来与可信端点建立可信通信会话;以及在可信通信会话内从可信端点接收第二请求。
[0084] 示例32包括示例27-31中任一项的主题,其中该进程进一步包括从可信端点接收质询;响应该质询;未能在预定时间段内接收到肯定确认;以及响应于未能在预定时间段内接收到肯定确认而终止进程虚拟机的执行。
[0085] 示例33包括示例29-32中任一项的主题,其中在该进程中,响应质询包括在安全点处响应质询。
[0086] 示例34包括示例27-33中任一项的主题,其中该进程进一步包括初始化进程虚拟机,该进程虚拟机是java虚拟机。
[0087] 示例35包括示例34的主题,其中在该进程中,初始化进程虚拟机包括初始化以硬件实现的java虚拟机。
[0088] 示例36包括示例27-35中任一项的主题,其中进程虚拟机和可信端点在单个计算设备内实现,该进程进一步包括经由该单个计算设备本地的连接来传送第一请求,并且接收第一请求包括经由该连接接收第一请求。
[0089] 示例37包括示例27-36中任一项的主题,其中在该进程中,加载CIMA方法包括加载在实现至少一个计算平台服务的至少一个微服务类内定义的CIMA方法。
[0090] 示例38包括示例27-37中任一项的主题,其中在该进程中,初始化该至少一个CIMA包括初始化多个不同方法区域。
[0091] 示例39包括示例27-38中任一项的主题,其中该进程进一步包括接收定义CIMA方法的源代码,该源代码包括语言构造,该语言构造将CIMA方法标识为软件可定义的;将该源代码编译成定义CIMA方法的中间代码,该中间代码可由进程虚拟机执行;以及将该中间代码存储在存储器中可由进程虚拟机访问的位置处。
[0092] 已在本文中采用的术语和表达用作描述的术语而非限制的术语,并且在使用此类术语和表达时,不旨在排除所示出的和所描述的特征的任何等效方案(或其部分),应当认识到,在权利要求书的范围内,各种修改都是可能的。相应地,权利要求书旨在涵盖所有此类等效方案。此处描述了各种特征、方面,以及各实施例。如本领域技术人员将理解的,各个特征、方面和实施例易于彼此组合及进行变化和修改。因此,本公开应被认为涵盖这些组合、变化及修改。本公开的范围不是由该详细说明书限制而是由所附权利要求限定。将来提出的要求本申请优先权的申请可以以不同的方式要求所公开的主题,并且通常可包括如在此多方面地公开或以其他方式展示的一个或多个限制的任意集合。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈