发明内容
本申请提出一种云计算***中的跨安全区域的资源访问方法,所述云计算***包括位于用户安全区域中的计算节点设备、位于与所述用户安全区域隔离的资源安全区域中的资源服务程序;其中,所述计算节点设备分别搭载了至少一个虚拟节点和与所述至少一个虚拟节点对应的资源访问代理程序;所述计算节点设备与搭载的所述虚拟节点之间分别保持了基于virtio协议的RPC通道;所述方法包括:
通过与所述虚拟节点之间保持的基于virtio协议的RPC通道,接收IO访问命令;所述IO访问命令为各虚拟节点上安装的业务应用触发的IO访问命令;所述IO访问命令,用于针对所述资源服务程序维护的数据资源进行IO访问;
响应于所述IO访问命令,将所述IO访问命令提交至所述资源访问代理程序,由所述资源访问代理程序将所述IO访问命令提交至所述资源服务程序,以进行跨安全区域的资源访问。
可选的,所述各计算节点设备搭载了基于virtio协议的RPC服务;所述各计算节点设备搭载的所述至少一个虚拟节点,分别搭载了与所述基于virtio协议的RPC服务对应的基于virtio协议的前端驱动;所述基于virtio协议的RPC通道包括所述基于virtio协议的RPC服务和所述基于virtio协议的前端驱动之间保持的RPC通道。
可选的,所述至少一个虚拟节点搭载的所述基于virtio协议的前端驱动,分别面向安装的业务应用提供了与所述基于virtio协议RPC服务对应的基于virtio协议的API接口;其中,所述API接口包括用于触发创建所述RPC通道的第一目标API接口;
所述方法还包括:
接收任一目标计算节点设备搭载的虚拟节点上安装的业务应用发起的针对所述第一目标API接口的第一调用命令;
响应于所述第一调用命令,创建所述虚拟节点搭载的基于virtio协议的前端驱动,与所述目标计算节点搭载的基于virtio协议的RPC服务之间的RPC通道。
可选的,所述各计算节点设备分别搭载了至少一个虚拟节点和与所述至少一个虚拟节点对应的多个资源访问代理程序;其中,不同的资源访问代理程序分别对应所述资源服务程序维护的不同类型的数据资源;
所述响应于所述IO访问命令,将所述IO访问命令提交至搭载的所述资源访问代理程序,包括:
响应于所述IO访问命令,从搭载的所述多个资源访问代理程序中,确定与所述IO访问命令请求访问的数据资源的类型对应的目标资源访问代理程序;
将所述IO访问命令提交至所述目标资源访问代理程序。
可选的,所述基于virtio协议的前端驱动与所述基于virtio协议的RPC服务之间部署了用于针对IO访问命令进行优先级调度的Qos机制。
可选的,所述基于virtio协议的前端驱动与所述基于virtio协议的RPC服务之间部署了用于感知对端是否异常的心跳保活机制。
可选的,所述API接口还包括用于触发删除所述RPC通道的第二目标API接口;
在所述业务应用针对所述资源服务程序维护的数据资源结束IO访问时,所述方法还包括:
接收任一目标计算节点设备搭载的虚拟节点上安装的业务应用发起的针对所述第二目标API接口的第二调用命令;
响应于所述第二调用命令,删除所述虚拟节点搭载的基于virtio协议的前端驱动,与所述目标计算节点搭载的基于virtio协议的RPC服务之间的RPC通道。
可选的,所述API接口还包括用于触发查询所述RPC通道的通道状态的第三目标API接口;
在所述业务应用针对所述RPC通道的通道状态进行查询时,所述方法还包括:
接收任一目标计算节点设备搭载的虚拟节点上安装的业务应用发起的针对所述第三目标API接口的第三调用命令;
响应于所述第三调用命令,查询所述RPC通道的通道状态。
可选的,所述IO访问命令包括目标IO数据;
所述API接口还包括用于将所述目标IO数据在所述RPC通道中进行数据传输的第四目标API接口;
所述响应于所述IO访问命令,将所述IO访问命令提交至搭载的所述资源访问代理程序,由所述资源访问代理程序进一步将所述IO访问命令提交至所述资源服务程序,以进行跨安全区域的资源访问,包括:
响应于所述IO访问命令,调用所述第四目标API接口将所述目标IO数据经所述RPC通道发送至基于virtio协议的RPC服务,并由所述基于virtio协议的RPC服务将所述目标IO数据提交至所述资源访问代理程序;
由所述资源访问代理程序进一步针对所述目标IO数据基于预设的资源访问协议进行封装,并将封装后的所述目标IO数据提交至所述资源服务程序,以进行跨安全区域的资源访问。
本申请还提出一种云计算***中的跨安全区域的资源访问装置,所述云计算***包括位于用户安全区域中的计算节点设备、位于与所述用户安全区域隔离的资源安全区域中的资源服务程序;其中,所述计算节点设备分别搭载了至少一个虚拟节点和与所述至少一个虚拟节点对应的资源访问代理程序;所述计算节点设备与搭载的所述虚拟节点之间分别保持了基于virtio协议的RPC通道;所述装置包括:
接收模块,通过与所述虚拟节点之间保持的基于virtio协议的RPC通道,接收IO访问命令;所述IO访问命令为各虚拟节点上安装的业务应用触发的IO访问命令;所述IO访问命令,用于针对所述资源服务程序维护的数据资源进行IO访问;
访问模块,响应于所述IO访问命令,将所述IO访问命令提交至所述资源访问代理程序,由所述资源访问代理程序将所述IO访问命令提交至所述资源服务程序,以进行跨安全区域的资源访问。
可选的,所述各计算节点设备搭载了基于virtio协议的RPC服务;所述各计算节点设备搭载的所述至少一个虚拟节点,分别搭载了与所述基于virtio协议的RPC服务对应的基于virtio协议的前端驱动;所述基于virtio协议的RPC通道包括所述基于virtio协议的RPC服务和所述基于virtio协议的前端驱动之间保持的RPC通道。
可选的,所述至少一个虚拟节点搭载的所述基于virtio协议的前端驱动,分别面向安装的业务应用提供了与所述基于virtio协议RPC服务对应的基于virtio协议的API接口;其中,所述API接口包括用于触发创建所述RPC通道的第一目标API接口;
所述装置还包括创建模块;
所述接收模块进一步,接收任一目标计算节点设备搭载的虚拟节点上安装的业务应用发起的针对所述第一目标API接口的第一调用命令;
所述创建模块,响应于所述第一调用命令,创建所述虚拟节点搭载的基于virtio协议的前端驱动,与所述目标计算节点搭载的基于virtio协议的RPC服务之间的RPC通道。
可选的,所述各计算节点设备分别搭载了至少一个虚拟节点和与所述至少一个虚拟节点对应的多个资源访问代理程序;其中,不同的资源访问代理程序分别对应所述资源服务程序维护的不同类型的数据资源;
所述响应于所述IO访问命令,将所述IO访问命令提交至搭载的所述资源访问代理程序,包括:
响应于所述IO访问命令,从搭载的所述多个资源访问代理程序中,确定与所述IO访问命令请求访问的数据资源的类型对应的目标资源访问代理程序;
将所述IO访问命令提交至所述目标资源访问代理程序。
可选的,所述基于virtio协议的前端驱动与所述基于virtio协议的RPC服务之间部署了用于针对IO访问命令进行优先级调度的Qos机制。
可选的,所述基于virtio协议的前端驱动与所述基于virtio协议的RPC服务之间部署了用于感知对端是否异常的心跳保活机制。
可选的,所述API接口还包括用于触发删除所述RPC通道的第二目标API接口;
在所述业务应用针对所述资源服务程序维护的数据资源结束IO访问时,所述装置还包括删除模块;
所述接收模块进一步,接收任一目标计算节点设备搭载的虚拟节点上安装的业务应用发起的针对所述第二目标API接口的第二调用命令;
所述删除模块进一步,响应于所述第二调用命令,删除所述虚拟节点搭载的基于virtio协议的前端驱动,与所述目标计算节点搭载的基于virtio协议的RPC服务之间的RPC通道。
可选的,所述API接口还包括用于触发查询所述RPC通道的通道状态的第三目标API接口;
在所述业务应用针对所述RPC通道的通道状态进行查询时,所述装置还包括查询模块;
所述接收模块进一步,接收任一目标计算节点设备搭载的虚拟节点上安装的业务应用发起的针对所述第三目标API接口的第三调用命令;
所述查询模块进一步,响应于所述第三调用命令,查询所述RPC通道的通道状态。
可选的,所述IO访问命令包括目标IO数据;
所述API接口还包括用于将所述目标IO数据在所述RPC通道中进行数据传输的第四目标API接口;
所述访问模块进一步:
响应于所述IO访问命令,调用所述第四目标API接口将所述目标IO数据经所述RPC通道发送至基于virtio协议的RPC服务,并由所述基于virtio协议的RPC服务将所述目标IO数据提交至所述资源访问代理程序;
由所述资源访问代理程序进一步针对所述目标IO数据基于预设的资源访问协议进行封装,并将封装后的所述目标IO数据提交至所述资源服务程序,以进行跨安全区域的资源访问。
本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述的方法。
本申请还提供一种计算机程序,所述计算机程序被处理器执行时实现上述的方法。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。
本申请还提出一种云计算***,包括:
位于用户安全区域中的计算节点设备;
位于与所述用户安全区域隔离的资源安全区域中的资源服务程序;
所述计算节点设备分别搭载了至少一个虚拟节点和与所述至少一个虚拟节点对应的资源访问代理程序;所述计算节点设备与搭载的所述虚拟节点之间分别保持了基于virtio协议的RPC通道;
其中,所述计算节点设备,用于通过与所述虚拟节点之间保持的基于virtio协议的RPC通道,接收IO访问命令;所述IO访问命令为各虚拟节点上安装的业务应用触发的IO访问命令;所述IO访问命令,用于针对所述资源服务程序维护的数据资源进行IO访问;响应于所述IO访问命令,将所述IO访问命令提交至所述资源访问代理程序,由所述资源访问代理程序将所述IO访问命令提交至所述资源服务程序,以进行跨安全区域的资源访问。
在以上技术方案中,通过云计算***中的各计算节点设备通过与搭载的各虚拟节点之间保持的基于virtio协议的RPC通道,接收各虚拟节点上安装的业务应用触发的针对资源服务程序维护的数据资源的IO访问命令;响应于IO访问命令,将IO访问命令提交至目标计算节点设备搭载的资源访问代理程序,由资源访问代理程序进一步将访问命令提交至资源服务程序,以进行跨安全区域的资源访问,实现了位于用户安全区域中的各计算节点设备基于virtio协议基础上扩展的RPC机制对位于与用户安全区域隔离的资源安全区域中的资源服务程序的跨安全区域的资源的分布式访问。一方面,由于缩短了各计算节点上搭载的各虚拟节点安装的业务应用的资源访问的IO转发路径,可以极大降低了资源访问的IO延迟。另一方面,通过分布式访问机制进行资源访问,避免了网络虚拟化技术的中心转发机制存在的性能瓶颈,可以提升整体IO处理的吞吐效率。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
请参考图1,图1是本说明书一实施例提供的一种云计算***中的跨安全区域的资源访问的组网架构示意图。
如图1所示,计算节点设备所处的区域简称为用户售卖区(比如包括:安全区域1、...、安全区域N),计算节点设备所要访问的资源所处的区域简称为资源服务区(比如:安全区域S);
其中,用户售卖区中各个安全域内可以包括多个计算节点设备,为了保证计算节点设备中的业务访问资源服务区中资源的安全性,云计算***可以将不同用户(租户)的计算节点设备进行安全隔离(比如包括:安全区域1、...、安全区域N之间互相隔离),计算节点设备及其要访问的资源进行安全隔离(比如:安全区域1、...、安全区域N分别与安全区域S之间互相隔离)。
在用户售卖区和资源服务区安全隔离后,当用户售卖区中计算节点设备中的业务访问资源服务区中资源时,在一些技术方案中,通常基于网络虚拟化技术来实现跨安全区域的资源访问。
例如,请参考图1,虚拟网络、负载均衡、代理服务器构建形成网络虚拟化技术方案;其中,虚拟网关,可以提供基于vxlan等隧道技术,来自用户售卖区访问资源服务区的资源访问的网络报文需要通过虚拟网关进行IP地址转换和报文转发;负载均衡及其管理的代理服务器,用于提供负载均衡机制,为了防止资源服务区访问存在的性能瓶颈点,需要通过负载均衡机制将用户售卖区的资源访问IO分散到不同的代理服务器上,从而可以实现对资源服务区中的资源的访问均衡性。
然而网络虚拟化方案中,由虚拟网关、负载均衡和代理服务器构建形成了中心化的IO转发机制。在该机制中,主要存在以下问题:用户售卖区的所有IO的转发路径都需要依次通过虚拟网关、负载均衡和代理服务器才能实现对资源服务区的访问。对于带宽型应用,通过横向扩展虚拟网关、负载均衡和代理服务器的个数还可以满足业务的带宽需求,但是对于IO延迟敏感型应用,由于IO转发路径较长、以及海量IO并发下IO调度的延迟增加,导致该机制无法满足低延迟的业务需求。
基于此,本说明书中,旨在提出一种位于用户安全区域中的各计算节点设备基于virtio协议基础上扩展的RPC(Remote Procedure Call Protocol,远程过程调用协议)机制对位于与用户安全区域隔离的资源安全区域中的资源服务程序的跨安全区域的资源的分布式访问的技术方案。
在实现时,云计算***包括位于用户安全区域中的多个计算节点设备、位于与用户安全区域隔离的资源安全区域中的资源服务程序;其中,各计算节点设备分别搭载了至少一个虚拟节点和与至少一个虚拟节点对应的资源访问代理程序;各计算节点设备与搭载的各个虚拟节点之间分别保持了基于virtio协议的RPC通道。
进一步地,多个计算节点设备中的任一目标计算节点设备通过与搭载的各虚拟节点之间保持的基于virtio协议的RPC通道,接收各虚拟节点上安装的业务应用触发的针对资源服务程序维护的数据资源的IO访问命令。
进一步地,任一目标计算节点设备响应于IO访问命令,将IO访问命令提交至搭载的资源访问代理程序,由资源访问代理程序进一步将访问命令提交至资源服务程序,以进行跨安全区域的资源访问。
在以上技术方案中,通过云计算***中的各计算节点设备通过与搭载的各虚拟节点之间保持的基于virtio协议的RPC通道,接收各虚拟节点上安装的业务应用触发的针对资源服务程序维护的数据资源的IO访问命令;响应于IO访问命令,将IO访问命令提交至目标计算节点设备搭载的资源访问代理程序,由资源访问代理程序进一步将访问命令提交至资源服务程序,以进行跨安全区域的资源访问,实现了位于用户安全区域中的各计算节点设备基于virtio协议基础上扩展的RPC机制对位于与用户安全区域隔离的资源安全区域中的资源服务程序的跨安全区域的资源的分布式访问。一方面,由于缩短了各计算节点上搭载的各虚拟节点安装的业务应用的资源访问的IO转发路径,可以极大降低了资源访问的IO延迟。另一方面,通过分布式访问机制进行资源访问,避免了网络虚拟化技术的中心转发机制存在的性能瓶颈,可以提升整体IO处理的吞吐效率。
下面通过具体实施例并结合具体的应用场景对本说明书进行描述。
请参见图2,图2是一示例性实施例提供的一种云计算***中的跨安全区域的资源访问方法的流程图;所述云计算***包括位于用户安全区域中的计算节点设备(例如可以包括多个计算节点设备)、位于与所述用户安全区域隔离的资源安全区域中的资源服务程序;其中,所述计算节点设备分别搭载了至少一个虚拟节点和与所述至少一个虚拟节点对应的资源访问代理程序;所述计算节点设备与搭载的所述虚拟节点之间分别保持了基于virtio协议的RPC通道;所述方法应用于所述计算节点设备;上述方法执行以下步骤:
步骤210、通过与所述虚拟节点之间保持的基于virtio协议的RPC通道,接收IO访问命令;所述IO访问命令为各虚拟节点上安装的业务应用触发的IO访问命令;所述IO访问命令,用于针对所述资源服务程序维护的数据资源进行IO访问。
步骤220、响应于所述IO访问命令,将所述IO访问命令提交至所述资源访问代理程序,由所述资源访问代理程序将所述IO访问命令提交至所述资源服务程序,以进行跨安全区域的资源访问。
在本说明书中,上述云计算***,可以包括任何类型的云计算***。
例如,在实际应用中,上述云计算***可以包括公有云、私有云、混合云。
在本说明书中,上述云计算***可以包括位于用户安全区域中的多个计算节点设备、位于与上述用户安全区域隔离的资源安全区域中的资源服务程序。
其中,上述计算节点设备,可以包括用于构建上述云计算***的任何类型的计算设备。例如,在实际应用中,上述计算节点设备具体可以包括物理服务器、PC机等。
上述资源服务程序,可以包括提供任何类型资源的资源服务程序。例如,在实际应用中,上述资源服务程具体可以包括提供存储资源的资源服务程序、提供数据库资源的资源服务程序、提供网络资源的资源服务程序、提供媒体资源的资源服务程序等。
在本说明书中,上述各计算节点设备分别搭载了至少一个虚拟节点和与上述至少一个虚拟节点对应的资源访问代理程序;上述各计算节点设备与搭载的各个虚拟节点之间分别保持了基于virtio协议的RPC通道。
其中,上述虚拟节点,可以包括搭载在上述计算节点设备上的任何类型的虚拟节点。
在示出的一种实施方式中,上述虚拟节点可以包括以下任一:虚拟机、虚拟容器。其中,上述虚拟机及上述虚拟容器的类型,在本说明书中不作具体限定。
例如,上述虚拟机具体可以包括KVM虚拟机、Xen虚拟机、Vmware虚拟机、Hyper-v虚拟机等;上述虚拟容器具体可以包括普通容器、安全容器;其中,容器的类型比如可以包括docker容器、lxc容器等。
上述资源访问代理程序,可以包括搭载在上述计算节点设备上的与上述至少一个上虚拟节点对应的资源访问代理程序;上述资源访问代理程序用于作为中间代理,来接收并处理上述至少一个虚拟节点上安装的业务应用所发起的针对上述资源服务程序维护的数据资源的IO访问命令。
其中,上述资源访问代理程序可以被直接部署在上述计算节点设备上运行,也可以被部署在上述计算节点设备搭载的硬件设备(比如:智能网卡、GPU等)中运行。
在本说明书中,上述业务应用,可以包括安装在上述虚拟节点的任何类型的业务应用。例如,以上述虚拟节点为虚拟机为例,在实际应用中,上述业务应用具体可以包括安装在该虚拟机的网络业务应用、存储业务应用、媒体业务应用等。
为了方便理解和描述,请参考图3,图3是本说明书一实施例提供的另一种云计算***中的跨安全区域的资源访问的组网架构示意图。
图3与图1中描述的用户售卖区、资源服务区及各个安全区域基本相同,图3相对图1的主要区别在于:位于用户售卖区中的各个安全区域中的各计算节点设备,可以分别基于virtio协议的RPC通道(如图3中所示的virtio-rpc)和各自对应的资源访问代理程序向位于资源服务区中的安全区域中的资源分布式地发起资源访问。
在示出的一种实施方式中,上述各计算节点设备搭载了基于virtio协议的RPC服务;上述各计算节点设备搭载的上述至少一个虚拟节点,分别搭载了与上述基于virtio协议的RPC服务对应的基于virtio协议的前端驱动;其中,上述基于virtio协议的RPC通道包括上述基于virtio协议的RPC服务和上述基于virtio协议的前端驱动之间保持的RPC通道。
例如,请参考图4,图4是本说明书一实施例提供的又一种云计算***中的跨安全区域的资源访问的组网架构示意图。图4是图3的更加具体细化的组网架构展示。
如图4所示,上述计算节点设备具体可以为物理宿主机、上述至少一个虚拟节点具体可以包括运行在该物理宿主机上的一个或多个虚拟机(VM)、与该一个或多个虚拟机(VM)对应的Proxy(资源访问代理程序的简称)。
其中,每个VM包括virtio-rpc前端驱动(基于virtio协议的前端驱动的简称);在每个物理宿主机上还运行有virtio-rpc server(基于virtio协议的RPC服务的简称),virtio-rpc server可以与每个物理宿主机上的多个虚拟机(VM)上运行的virtio-rpc前端驱动进行通信分别建立基于virtio协议的RPC通道。
在示出的一种实施方式中,上述至少一个虚拟节点搭载的上述基于virtio协议的前端驱动,分别面向安装的业务应用提供了与上述基于virtio协议RPC服务对应的基于virtio协议的API接口;其中,上述API接口包括用于触发创建上述RPC通道的第一目标API接口。
例如,请参考图4,每个VM除了包括virtio-rpc前端驱动外,还分别面向安装的业务应用提供了virtio-rpc api(virtio协议的API接口的简称);其中,virtio-rpc api为业务应用提供了API接口,通过调用该API接口可以控制virtio-rpc前端驱动与virtio-rpcserver进行在virtio协议上进行RPC通信。比如,该API接口具体可以额包括用于触发创建上述RPC通道的第一目标API接口。
在本说明书中,进一步地,任一目标上述计算节点设备在接收到搭载的上述虚拟节点上安装的业务应用发起的针对上述第一目标API接口的第一调用命令时,响应于上述第一调用命令,创建上述虚拟节点搭载的基于virtio协议的前端驱动,与上述目标计算节点搭载的基于virtio协议的RPC服务之间的RPC通道。
例如,请参考图4左上所示的物理宿主机,在该物理宿主机接收到搭载的多个虚拟机VM上安装的业务应用发起的针对第一目标API接口的第一调用命令时,响应于该第一调用命令,创建VM搭载的基于virtio协议的前端驱动,与该物理宿主机搭载的基于virtio协议的RPC服务之间的RPC通道。如图4所示的4个虚拟机VM,分别与该物理宿主机搭载的virtio-rpc server之间建立了对应的4个RPC通道。
需要说明的是,上述virtio协议的前端驱动,是指在virtio协议基础之上的基于RPC协议位于上述虚拟节点上的设备驱动。
在本说明书中,上述virtio协议的前端驱动也可以被简称为virtio-rpc前端驱动。通过virtio-rpc前端驱动在上述虚拟节点上可以生成virtio-rpc设备对象。
在实现时,virtio-rpc前端驱动可以在上述虚拟节点的内核中实现,也可以在上述虚拟节点的用户态环境中实现。
在本说明书中,上述云计算***中的多个上述计算节点设备中的任一目标上述计算节点设备,可以通过与搭载的上述各虚拟节点之间保持的基于virtio协议的RPC通道,接收上述各虚拟节点上安装的业务应用触发的针对上述资源服务程序维护的数据资源的IO访问命令。
接着以上示例继续举例,请参考图4,在4个虚拟机VM,分别与该物理宿主机搭载的virtio-rpc server之间建立了对应的4个RPC通道后,物理宿主机可以通过该4个RPC通道,分别接收4个虚拟机VM上安装的业务应用触发的针对资源服务程序(资源服务程序1、...、资源服务程序N)维护的数据资源的IO访问命令。
在本说明书中,响应于上述IO访问命令,任一目标上述计算节点设备可以将上述IO访问命令提交至搭载的上述资源访问代理程序,由上述资源访问代理程序进一步将上述访问命令提交至上述资源服务程序,以进行跨安全区域的资源访问。
例如,以某一虚拟机VM为例,在物理宿主机通过对应的1个RPC通道接收到某一虚拟机VM上安装的业务应用触发的针对资源服务程序(资源服务程序1、...、资源服务程序N)维护的数据资源的IO访问命令后,物理宿主机可以将该IO访问命令至搭载的资源访问代理程序Proxy,由该Proxy进一步将该访问命令提交至资源服务程序,以进行跨安全区域的资源访问。
在示出的一种实施方式中,上述各计算节点设备分别搭载了至少一个上述虚拟节点和与上述至少一个虚拟节点对应的多个资源访问代理程序;其中,不同的资源访问代理程序分别对应上述资源服务程序维护的不同类型的数据资源。
例如,请参考图4左上所示的物理宿主机,该物理宿主机搭载了4个虚拟机VM和与该4个虚拟机VM对应的4个Proxy(Proxy1、Proxy2、Proxy3、Proxy4);其中,4个Proxy分别对应资源服务程序维护的不同类型的数据资源,比如:该4个Proxy(Proxy1、Proxy2、Proxy3、Proxy4)分别与维护的不同类型的数据资源的资源服务程序1、资源服务程序2、资源服务程序3、资源服务程序4一一对应。
在本说明书中,进一步地,在任一目标上述计算节点设备响应于上述IO访问命令并将上述IO访问命令提交至搭载的上述资源访问代理程序的过程中,任一目标上述计算节点设备响应于上述IO访问命令,从搭载的上述多个资源访问代理程序中,确定与上述IO访问命令请求访问的数据资源的类型对应的目标资源访问代理程序,将上述IO访问命令提交至上述目标资源访问代理程序。
例如,以图4左上所示的物理宿主机中的最左侧的虚拟机VM为例,该物理宿主机响应于该VM发出的IO访问命令,从搭载的4个Proxy(Proxy1、Proxy2、Proxy3、Proxy4)中,确定与该IO访问命令请求访问的数据资源的类型对应的Proxy1作为目标资源访问代理程序,将该IO访问命令提交至Proxy1程序,以使由Proxy1程序进一步将该IO访问命令提交至维护对应类型数据资源的资源服务程序1,用于跨安全区域的资源访问。
需要说明的是,在确定与上述IO访问命令请求访问的数据资源的类型对应的目标资源访问代理程序的具体方法,在本说明书中不作具体限定。例如,可以基于上述IO访问命令中携带的请求访问的数据资源的类型进行判断确定,也可以基于上述IO访问命令的命令类型查找对应类型的数据资源的类型进行查找确定。
在示出的一种实施方式中,上述API接口还包括用于触发删除上述RPC通道的第二目标API接口;在任一目标上述计算节点设备搭载的上述虚拟节点上安装的上述业务应用针对上述资源服务程序维护的数据资源结束IO访问时,该任一目标上述计算节点设备接收搭载的上述虚拟节点上安装的业务应用发起的针对上述第二目标API接口的第二调用命令,响应于上述第二调用命令,删除上述虚拟节点搭载的基于virtio协议的前端驱动,与上述目标计算节点搭载的基于virtio协议的RPC服务之间的RPC通道。
例如,以图4左上所示的物理宿主机中的最右侧的虚拟机VM为例,在该物理宿主机接收到该VM上安装的业务应用针对资源服务程序1维护的数据资源结束IO访问时,该物理宿主机接收该虚拟机VM上安装的业务应用发起的针对第二目标API接口的第二调用命令,响应于该第二调用命令,删除该虚拟机VM通过virtio-rpc前端驱动与该物理宿主机中的virtio-rpc server之间已创建的RPC通道。
在示出的一种实施方式中,上述API接口还包括用于触发查询上述RPC通道的通道状态的第三目标API接口;在任一目标上述计算节点设备搭载的上述虚拟节点上安装的上述业务应用针对上述RPC通道的通道状态进行查询时,该任一目标上述计算节点设备接收搭载的上述虚拟节点上安装的业务应用发起的针对上述第三目标API接口的第三调用命令,响应于该第三调用命令,查询上述RPC通道的通道状态。
例如,以图4左上所示的物理宿主机中的最右侧的虚拟机VM为例,在该物理宿主机接收到该VM上安装的业务应用针对已创建的RPC通道的通道状态进行查询时,该物理宿主机接收该虚拟机VM上安装的业务应用发起的针对第三目标API接口的第三调用命令,响应于该第三调用命令,查询该虚拟机VM通过virtio-rpc前端驱动与该物理宿主机中的virtio-rpc server之间已创建的RPC通道的通道状态。
在示出的一种实施方式中,上述基于virtio协议的前端驱动与上述基于virtio协议的RPC服务之间部署了用于感知对端是否异常的心跳保活机制。
例如,以图4左上所示的物理宿主机中的各个虚拟机VM为例,各个虚拟机VM可以基于各自搭载的virtio-rpc前端驱动分别与该物理宿主机中的virtio-rpc server部署了用于感知对端是否异常的心跳保活机制;通过该心跳保活机制可以用来检测各virtio-rpc前端驱动与virtio-rpc server之间建立的各RPC通道是否正常,可以在virtio-rpc server出现异常或者virtio-rpc前端驱动出现异常或两者之间网络存在异常的情况下,使得对端可以感知异常并上报所在的计算节点进行异常快速恢复,从而确保对应RPC通道的高可用性。
在示出的一种实施方式中,上述基于virtio协议的前端驱动与上述基于virtio协议的RPC服务之间部署了用于针对上述IO访问命令进行优先级调度的Qos(Quality ofService,服务质量)机制。
例如,以图4左上所示的物理宿主机中的各个虚拟机VM为例,每个虚拟机VM上可能分别安装了多个业务应用,在每个虚拟机VM上的多个上述业务应用通过各自搭载的virtio-rpc前端驱动与该物理宿主机中virtio-rpc server建立RPC通道后,由于不同业务应用会存在不同的IO服务质量需求,可以在RPC通道中针对不同业务应用的IO访问命令基于QoS机制进行优先级调度,从而保证IO服务质量。比如:在实现时,可以基于IO访问命令中携带的优选级标识来进行优先级调度。当然,在实际应用中,还可以基于其它方式的QoS机制进行优先级调度。
在示出的一种实施方式中,上述IO访问命令包括目标IO数据;上述API接口还包括用于将上述目标IO数据在上述RPC通道中进行数据传输的第四目标API接口;在响应于上述IO访问命令,将上述IO访问命令提交至搭载的上述资源访问代理程序,由上述资源访问代理程序进一步将上述IO访问命令提交至上述资源服务程序,以进行跨安全区域的资源访问的过程中,任一目标上述计算节点设备响应于上述IO访问命令,调用上述第四目标API接口将上述目标IO数据经上述RPC通道发送至基于virtio协议的RPC服务,并由上述基于virtio协议的RPC服务将上述目标IO数据提交至上述资源访问代理程序。
例如,以图4左上所示的物理宿主机中的最右侧的虚拟机VM为例,在该物理宿主机接收到该VM上安装的业务应用发起的IO访问命令包括目标IO数据A,在该虚拟机VM通过virtio-rpc前端驱动与该物理宿主机中的virtio-rpc server之间已建立RPC通道后,该物理宿主机响应于该IO访问命令,调用第四目标API接口将该目标IO数据经该RPC通道发送至该物理宿主机中的virtio-rpc server,并由该virtio-rpc server将该目标IO数据A提交至Proxy4。
在本说明书中,进一步地,由上述资源访问代理程序进一步针对上述目标IO数据基于预设的资源访问协议进行封装,并将封装后的上述目标IO数据提交至上述资源服务程序,以进行跨安全区域的资源访问;其中,该资源访问协议为用于上述资源访问代理程序对上述资源服务程序维护的数据资源进行资源访问的协议,该资源访问协议与virtio-rpc协议为不同的协议。
接着以上示例继续举例,Proxy4接收到来自virtio-rpc server的目标IO数据A后,基于预设的资源访问协议(比如:http resful或其它资源访问协议)进行封装,并将封装后的目标IO数据A提交至对应数据资源类型匹配的资源服务程序4,以进行跨安全区域的资源访问;
需要说明的是,在以上实施例中,仅示例了virtio-rpc前端驱动通过上述RPC通道进行目标IO数据向virtio-rpc server发送的数据发送API接口。在实际应用中,还可以扩展增加其它API接口。比如:可以提供在virtio-rpc server针对接收到的目标IO数据进行应答的数据应答API接口,还可以用于针对目标IO数据进行轮询的数据轮询API接口。
另外需要强调的是,本说明书描述的基于virtio协议基础上的RPC协议,是一种全新的协议,可以被简称为virtio-rpc协议。以虚拟节点是虚拟机为例,由于virtio-rpc协议可以面向虚拟机中安装的业务应用直接提供数据传输接口,所以,与virtio-blk(仅用于模拟虚拟机中的虚拟磁盘,也即,块设备)、virtio-net(仅用于模拟虚拟机中的网卡,也即,网络设备)相比更加通用。
通过以上实施例可见,通过云计算***中的各计算节点设备通过与搭载的各虚拟节点之间保持的基于virtio协议的RPC通道,接收各虚拟节点上安装的业务应用触发的针对资源服务程序维护的数据资源的IO访问命令;响应于IO访问命令,将IO访问命令提交至目标计算节点设备搭载的资源访问代理程序,由资源访问代理程序进一步将访问命令提交至资源服务程序,以进行跨安全区域的资源访问,实现了位于用户安全区域中的各计算节点设备基于virtio协议基础上扩展的RPC机制对位于与用户安全区域隔离的资源安全区域中的资源服务程序的跨安全区域的资源的分布式访问。一方面,由于缩短了各计算节点上搭载的各虚拟节点安装的业务应用的资源访问的IO转发路径,可以极大降低了资源访问的IO延迟。另一方面,通过分布式访问机制进行资源访问,避免了网络虚拟化技术的中心转发机制存在的性能瓶颈,可以提升整体IO处理的吞吐效率。
例如,请参考图4,由于各个物理宿主机中都提供一个virtio-rpc server和对应的至少一个Proxy,也即,virtio-rpc server及其对应Proxy被分散至每个物理宿主机中运行,由此,与图1所示的网络虚拟化技术的中心转发机制相比,图4所示的分布式访问机制,可以将资源访问请求分散在各个物理宿主机上分布式地并发执行,避免了网络虚拟化技术的中心转发机制存在的性能瓶颈,可以提升整体IO处理的吞吐效率。
此外,请参考图4,由于无需额外配置虚拟网关、负载均衡设备及代理服务器硬件,减低了搭建云计算***的设备成本和弹性扩容成本,同时缩短了资源访问的IO转发路径,可以极大降低了资源访问的IO延迟。
与上述方法实施例相对应,本说明书还提供了一种云计算***中的跨安全区域的资源访问装置的实施例。
本说明书的装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
从硬件层面而言,如图5所示,为本说明书的云计算***中的跨安全区域的资源访问装置所在电子设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图6是本说明书一示例性实施例示出的一种云计算***中的跨安全区域的资源访问装置的框图。
请参考图6,云计算***中的跨安全区域的资源访问装置60可以应用在前述图5所示的电子设备中;所述云计算***包括位于用户安全区域中的计算节点设备、位于与所述用户安全区域隔离的资源安全区域中的资源服务程序;其中,所述计算节点设备分别搭载了至少一个虚拟节点和与所述至少一个虚拟节点对应的资源访问代理程序;所述计算节点设备与搭载的所述虚拟节点之间分别保持了基于virtio协议的RPC通道;所述装置应用于所述计算节点设备,所述装置50包括:
接收模块610,通过与所述虚拟节点之间保持的基于virtio协议的RPC通道,接收IO访问命令;所述IO访问命令为各虚拟节点上安装的业务应用触发的IO访问命令;所述IO访问命令,用于针对所述资源服务程序维护的数据资源进行IO访问;
访问模块620,响应于所述IO访问命令,将所述IO访问命令提交至所述资源访问代理程序,由所述资源访问代理程序将所述IO访问命令提交至所述资源服务程序,以进行跨安全区域的资源访问。
在本实施例中,所述各计算节点设备搭载了基于virtio协议的RPC服务;所述各计算节点设备搭载的所述至少一个虚拟节点,分别搭载了与所述基于virtio协议的RPC服务对应的基于virtio协议的前端驱动;所述基于virtio协议的RPC通道包括所述基于virtio协议的RPC服务和所述基于virtio协议的前端驱动之间保持的RPC通道。
在本实施例中,所述至少一个虚拟节点搭载的所述基于virtio协议的前端驱动,分别面向安装的业务应用提供了与所述基于virtio协议RPC服务对应的基于virtio协议的API接口;其中,所述API接口包括用于触发创建所述RPC通道的第一目标API接口;
所述装置还包括创建模块;
所述接收模块610进一步,接收任一目标计算节点设备搭载的虚拟节点上安装的业务应用发起的针对所述第一目标API接口的第一调用命令;
所述创建模块,响应于所述第一调用命令,创建所述虚拟节点搭载的基于virtio协议的前端驱动,与所述目标计算节点搭载的基于virtio协议的RPC服务之间的RPC通道。
在本实施例中,所述各计算节点设备分别搭载了至少一个虚拟节点和与所述至少一个虚拟节点对应的多个资源访问代理程序;其中,不同的资源访问代理程序分别对应所述资源服务程序维护的不同类型的数据资源;
所述响应于所述IO访问命令,将所述IO访问命令提交至搭载的所述资源访问代理程序,包括:
响应于所述IO访问命令,从搭载的所述多个资源访问代理程序中,确定与所述IO访问命令请求访问的数据资源的类型对应的目标资源访问代理程序;
将所述IO访问命令提交至所述目标资源访问代理程序。
在本实施例中,所述基于virtio协议的前端驱动与所述基于virtio协议的RPC服务之间部署了用于针对IO访问命令进行优先级调度的Qos机制。
在本实施例中,所述基于virtio协议的前端驱动与所述基于virtio协议的RPC服务之间部署了用于感知对端是否异常的心跳保活机制。
在本实施例中,所述API接口还包括用于触发删除所述RPC通道的第二目标API接口;
在所述业务应用针对所述资源服务程序维护的数据资源结束IO访问时,所述装置还包括删除模块;
所述接收模块610进一步,接收任一目标计算节点设备搭载的虚拟节点上安装的业务应用发起的针对所述第二目标API接口的第二调用命令;
所述删除模块进一步,响应于所述第二调用命令,删除所述虚拟节点搭载的基于virtio协议的前端驱动,与所述目标计算节点搭载的基于virtio协议的RPC服务之间的RPC通道。
在本实施例中,所述API接口还包括用于触发查询所述RPC通道的通道状态的第三目标API接口;
在所述业务应用针对所述RPC通道的通道状态进行查询时,所述装置还包括查询模块;
所述接收模块610进一步,接收任一目标计算节点设备搭载的虚拟节点上安装的业务应用发起的针对所述第三目标API接口的第三调用命令;
所述查询模块进一步,响应于所述第三调用命令,查询所述RPC通道的通道状态。
在本实施例中,所述IO访问命令包括目标IO数据;
所述API接口还包括用于将所述目标IO数据在所述RPC通道中进行数据传输的第四目标API接口;
所述访问模块620进一步:
响应于所述IO访问命令,调用所述第四目标API接口将所述目标IO数据经所述RPC通道发送至基于virtio协议的RPC服务,并由所述基于virtio协议的RPC服务将所述目标IO数据提交至所述资源访问代理程序;
由所述资源访问代理程序进一步针对所述目标IO数据基于预设的资源访问协议进行封装,并将封装后的所述目标IO数据提交至所述资源服务程序,以进行跨安全区域的资源访问。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。