掌桥专利:专业的专利平台
掌桥专利
首页

基于云技术的图形程序在线开发方法、系统及相关设备

文献发布时间:2023-06-19 19:40:14


基于云技术的图形程序在线开发方法、系统及相关设备

技术领域

本申请涉及云计算领域,尤其涉及基于云技术的图形程序在线开发方法、系统及相关设备。

背景技术

基于云技术的程序开发是一种易用的、跨多类型终端、快速接入的开发工具。基于云技术的程序开发指的是租户进行程序开发时,通过客户端访问云实例,云实例根据租户需求快速向租户提供开发环境,租户通过客户端完成代码的编写,由云实例进行代码的编译和运行,再由客户端显示程序运行结果,实现租户的随时随地开发。

但是,当租户进行图形程序的开发时,由于图形程序的运行需要云实例进行图像渲染,但是云实例通常不具备图像渲染的能力,使得基于云技术的程序开发方式无法运行图形程序,无法将图形程序的运行结果显示给租户,为图形程序的开发带来不便。

发明内容

本申请提供了基于云技术的图形程序在线开发方法、系统及相关设备,用于实现基于云技术的图形程序的在线开发。

第一方面,提供了一种基于云技术的图形程序在线开发方法,该方法包括以下步骤:云管理平台接收租户输入的图形程序在线开发请求,在云实例资源池中选择或创建用于图形渲染的云实例,并设置云实例与租户的客户端连接,云实例接收客户端发送的图形程序代码并将图形程序代码进行编译以产生图形程序,其中图形程序代码由租户输入至客户端,云实例运行图形程序以渲染出图形,并将图形发送至客户端进行显示。

具体实现中,客户端在租户所持终端设备的浏览器中运行,客户端基于网页开发技术构建,网页开发技术包括超文本标记语言html、javascript以及层叠样式表css中的一种或者多种。终端设备包括手机、平板电脑、个人电脑、智能电视、游戏机。云实例包括虚拟机、容器或裸金属服务器。

实施第一方面描述的方法,云管理平台接收租户输入的图形程序在线开发请求,在云实例资源池中选择或创建用于图形渲染的云实例,该云实例具备图像渲染的能力,使得云实例运行图形程序时可以实现图像渲染从而获得图形,从而实现基于云技术的图形程序的在线开发,提高用户的使用体验。

在一可能的实现方式中,图形程序在线开发请求包括显示配置信息,云管理平台在云实例资源池中选择或创建与显示配置信息匹配的云实例。

可选地,显示配置信息包括渲染方式,其中,渲染方式包括软渲染方式、本地硬件渲染方式和远程硬件渲染方式。其中,软渲染指的是通过软件实现图像渲染,本地硬件渲染指的是用云实例的GPU实现图像渲染,远程硬件渲染指的是用云实例远程连接其他计算节点的GPU实现图像渲染。

可选地,显示配置信息包括渲染参数,其中,不同的渲染模式对应不同的渲染参数,下面分别对各种模式下的渲染参数进行详细说明。

具体地,软渲染方式对应的渲染参数包括运行图形程序进行软渲染时所需的参数信息,比如软渲染所需的图形接口信息,这里的图像接口信息可包括图形接口的类型、图形接口版本信息、显示分辨率等等,还包括软渲染过程所需的其他参数信息,这里不一一举例说明。其中,上述图形接口的类型包括图形设备接口(graphics device interface,GDI)、多媒体编程接口(direct extension,DirectX)、开放图形库接口(open graphicslibrary,OpenGL)、Vulkan接口等等,本申请不对此进行限定。简单来说,若租户编写的图形程序代码中的API为OpenGL4.0的API,那么租户输入的图形程序在线开发请求中的渲染方式为软渲染方式,渲染参数中的图形接口为OpenGL,版本信息为4.0,应理解,上述举例用于说明,本申请不作具体限定。

具体地,本地硬件渲染方式对应的渲染参数包括本地GPU的规格信息,比如所需的本地GPU型号、规范、显示分辨率等规格信息,还包括其他本地GPU进行图像渲染时所需的参数信息,这里不一一举例说明。应理解,GPU作为一个硬件驱动装置,租户是无法直接使用的,通常情况下,GPU的厂商会按照各种规范提供GPU驱动,比如OpenGL规范、DirectX12规范等等,开发人员按照这些规范编写图形程序代码,当图形程序运行时,GPU驱动根据租户编写的图形程序和硬件的驱动程序沟通,启动GPU硬件的图形处理功能,实现图像的渲染。举例来说,假设租户编写的图形程序代码中的API是需要通过支持direcX12接口的GPU驱动来实现,那么租户输入的渲染参数中,本地GPU规格是型号为RTX5000,操作系统类型为windows,规范为DirectX12,云实例200根据该渲染参数,通过支持DirectX12接口的GPU租户态驱动完成图像渲染,应理解,上述举例用于说明,本申请不对此进行限定。

具体地,远程硬件渲染方式对应的渲染参数包括远程GPU的规格信息,比如远程GPU的规格、规范、显示分辨率和本地操作系统的信息等,还包括其他远程GPU进行图像渲染时所需的参数信息,这里不一一举例说明,其中,远程硬件规格和规范的描述参考本地硬件渲染的描述,这里不重复赘述。

应理解,租户根据自己的业务需求确定渲染方式,比如租户所需的图像渲染能力较低时,可以选择软渲染方式进行图像渲染,租户所需的图像渲染能力较高时,可以选择本地或者远程硬件渲染,如果租户频繁进行图形程序的开发,可以选择使用本地硬件渲染,若租户偶尔进行图形程序的开发,那么可以选择使用远程硬件渲染,降低开发成本。租户确定每种渲染模式后,可以根据业务需求确定对应的渲染参数,比如软渲染模式下,租户的业务需求使用OpenGL进行应用开发,那么租户锁输入的图形程序在线开发请求中,渲染方式为软渲染,对应的渲染参数为OpenGL。

可选地,显示配置信息还包括云实例的规格信息,例如云实例的操作系统规格、处理器规格、存储器规格、技术栈类型、生命周期等等,其中,操作系统规格包括云实例400的操作系统类型和版本信息,比如windows10、Ubuntu20.04等等,处理器规格包括处理器的内存、主频、核心数和线程数等参数信息,存储器的规格包括存储容量、带宽等等参数信息,技术栈类型指的是租户输入的图形程序代码的技术栈类型,比如java、C/C++、python、NodeJS、GO等等,生命周期指的是租户在客户端300无操作状态超过预设的等待时间后,云实例400与客户端300之间的连接将会主动断开,上述等待时间即为生命周期,租户根据使用习惯选择生命周期为30分钟、60分钟、4小时、24小时或者永不关闭。应理解,上述云实例的规格信息用于举例说明,还根据租户需求设置更多或者更少种类的规格信息,比如开发人员需要额外配置数据库,那么规格信息还包括数据库的类型、接口信息等等,本申请不对此进行限定。

可选地,显示配置信息还包括计费方式,计费方式包括按时计费和按需计费,按时计费包括包天、包月、包季或包年计费等等,按需计费包括按照存储资源计费和按照计算资源计费,存储资源指的是云实例从创建至删除所占用的磁盘存储资源,计算资源指的是云实例400从创建至删除所消耗的CPU、内存、网络资源的总和,应理解,上述计费方式用于说明,本申请不作具体限定。

实施上述实现方式,云管理平台接收的图形程序在线开发请求中携带有显示配置信息,该显示配置信息可包括多种渲染方式对应的渲染参数,用户可根据业务需求选择不同的渲染方式和不同的渲染参数,使得本申请提供的基于云技术的图形程序在线开发方法的普适性强,应用场景更加广泛,进一步提高用户的使用体验。

在一可能的实现方式中,不同的渲染方式下,云管理平台可根据显示配置信息为云实例配置相应的渲染能力,下面分别对软渲染方式、本地硬件渲染模式和远程硬件渲染模式下云管理平台对云实例的配置方法步骤进行说明。

可选地,若渲染方式为软渲染方式,渲染参数包括软渲染所需的图形接口信息,云管理平台在云实例资源池中选择或创建与云实例规格信息匹配的云实例,根据图形接口信息为云实例配置对应的图形接口,图形程序运行时,云实例调用配置好的图形接口实现图像渲染功能,获得图形。举例来说,若渲染方式为软渲染方式,渲染参数中图形接口类型为OpenGL,版本号为4.3,那么云管理平台创建或选择与云实例规格信息匹配的云实例后,可为云实例配置OpenGL接口,且版本号为4.3,以供云实例上述图形程序运行时调用该接口实现图像渲染。

可选地,若渲染方式为本地硬件渲染方式,渲染参数包括本地GPU的规格信息,那么云管理平台在云实例资源池中选择或创建与云实例规格信息和上述本地GPU的规格信息相匹配的云实例,图形程序运行时,云实例可以调用本地GPU的驱动接口,使用本地GPU实现图像渲染功能,获得图形。具体实现中,若本地GPU可支持多种规范类型的GPU驱动来完成渲染时,云管理平台还可以根据渲染参数,为创建或选择好的云实例配置渲染参数对应的GPU驱动。举例来说,渲染参数中本地GPU的规格信息包括:本地GPU型号为RTX5000,规范为DirectX12,图像分辨率为800*600,那么云管理平台可以创建本地GPU型号为RTX5000的云实例,为云实例配置规范为DirectX12的驱动,图形分辨率设置为800*600,使得云实例在上述编译后的图形程序运行时调用本地GPU的驱动完成图像渲染。

可选地,若渲染方式为远程硬件渲染方式,渲染参数包括远程GPU的规格信息,那么云管理平台在云实例资源池中选择或创建与云实例规格信息相匹配的云实例,在云实例资源池中获取与远程GPU的规格信息相匹配的远程GPU的连接地址,并将连接地址发送给上述云实例,图形程序运行时,云实例根据远程GPU的连接地址调用远程GPU的驱动,使用远程GPU实现图像渲染功能,获得图形。举例来说,渲染参数中的远程GPU型号为RTX5000,规范为DirectX12,那么云管理平台可以根据渲染参数中远程GPU的规格信息,获取符合条件的远程GPU的连接地址,以及用于保持远程GPU与云实例之间通信连接的鉴权令牌(token)信息等等,然后将连接地址和token信息发送给云实例,使得云实例在上述图形程序运行时,调用远程GPU的驱动完成图像渲染。

可选地,渲染方式还包括无图形渲染模式,也就是说,租户上传的图形程序代码是非图形程序代码,非图形程序代码运行时无需进行图像渲染,运行结果通常是字符串的形式,该种情形下,云实例运行图形程序代码,输出运行结果对应的字符串给客户端进行显示。

实施上述实现方式,云管理平台根据渲染参数为云实例配置相应的图形渲染能力,比如软渲染能力、本地硬件渲染能力或者远程硬件渲染能力,使得本申请提供的基于云技术的图形程序在线开发系统可以支持用户输入多种类型的图形程序代码,提高用户的使用体验。

在一可能的实现方式中,云实例对图形进行图像数据编码,然后将编码结果发送至客户端,客户端接收到编码结果后,可以按照与编码方式对应的解码方式对编码结果进行解码,获得图形,并将其显示给租户。其中,编码方式可以是H.264、H.265等,也可以是其他或者自定义的编码方式,本申请不作具体限定。

具体实现中,云实例向客户端发送图形时,可以通过网页即时通信(web real-time communication,webRTC)技术与客户端进行数据通信,其中,webRTC是一个支持网页浏览器进行实时音视频对话的API。

实施上述实现方式,云实例将图形进行图像数据编码后再进行数据传输,可以提高数据传输的安全性,同时,通过webRTC技术进行数据传输,传输方式简单便捷,无需额外的插件或客户端也实现web的音视频通信功能。

第二方面,提供了一种基于云技术的图形程序在线开发系统,该系统包括云管理平台,用于接收租户输入的图形程序在线开发请求,在云实例资源池中选择或创建用于图形渲染的云实例,并设置云实例与租户的客户端连接;云实例,用于接收客户端发送的图形程序代码并将图形程序代码进行编译以产生图形程序,其中图形程序代码由租户输入至客户端;云实例,用于运行图形程序以渲染出图形,并将图形发送至客户端进行显示。

实施第二方面描述的方法,云管理平台接收租户输入的图形程序在线开发请求,在云实例资源池中选择或创建用于图形渲染的云实例,该云实例具备图像渲染的能力,使得云实例运行图形程序时可以实现图像渲染从而获得图形,从而实现基于云技术的图形程序的在线开发,提高用户的使用体验。

在一可能的实现方式中,图形程序在线开发请求包括显示配置信息;云管理平台,用于在云实例资源池中选择或创建与显示配置信息匹配的云实例。

在一可能的实现方式中,显示配置信息包括云实例规格信息、渲染方式和渲染参数,渲染方式包括软渲染、本地硬件渲染或者远程硬件渲染中的一种,其中,不同的渲染方式对应不同的渲染参数。

在一可能的实现方式中,在渲染方式为软渲染的情况下,渲染参数包括软渲染所需的图形接口信息;云管理平台,用于在云实例资源池中选择或创建与云实例规格信息匹配的云实例,根据图形接口信息为云实例配置对应的图形接口;云实例,用于运行图形程序,调用图形接口渲染出图形。

在一可能的实现方式中,在渲染方式为本地硬件渲染的情况下,渲染参数包括本地图像处理器GPU的规格信息;云管理平台,用于在云实例资源池中选择或创建与云实例规格信息和本地GPU的规格信息匹配的云实例;云实例,用于运行图形程序,调用本地图像处理器GPU的驱动接口,使用本地GPU渲染出图形。

在一可能的实现方式中,在渲染方式为远程硬件渲染的情况下,渲染参数包括远程GPU的规格信息;云管理平台,用于在云实例资源池中选择或创建与云实例规格信息匹配的云实例,根据远程GPU的规格信息获取远程GPU的连接地址,向云实例发送连接地址;云实例,用于运行图形程序,根据连接地址调用远程GPU的驱动,使用远程GPU渲染出图形。

在一可能的实现方式中,客户端在租户所持终端设备的浏览器中运行,客户端基于网页开发技术构建,网页开发技术包括超文本标记语言html、javascript以及层叠样式表css中的一种或者多种。

在一可能的实现方式中,终端设备包括手机、平板电脑、个人电脑、智能电视、游戏机。

在一可能的实现方式中,云实例包括虚拟机、容器或裸金属服务器。

第三方面,提供了一种云实例,应用于基于云技术的图形程序在线开发系统,云实例包括:编译单元,用于接收客户端发送的图形程序代码并将图形程序代码进行编译以产生图形程序,其中图形程序代码由租户输入至客户端;渲染单元,用于运行图形程序以渲染出图形;输出单元,用于将图形发送至客户端进行显示。

具体实现中,上述基于云技术的图形程序在线开发系统包括云管理平台,云实例是云管理平台接收租户输入的显示配置信息后,在云实例资源池中选择或创建的与显示配置信息匹配的云实例。

实施第三方面描述的方法,云管理平台接收租户输入的图形程序在线开发请求,在云实例资源池中选择或创建用于图形渲染的云实例,该云实例具备图像渲染的能力,使得云实例运行图形程序时可以实现图像渲染从而获得图形,从而实现基于云技术的图形程序的在线开发,提高用户的使用体验。

在一可能的实现方式中,显示配置信息包括云实例规格信息、渲染方式和渲染参数,渲染方式包括软渲染、本地硬件渲染或者远程硬件渲染中的一种,其中,不同的渲染方式对应不同的渲染参数。

在一可能的实现方式中,在渲染方式为软渲染的情况下,渲染参数包括软渲染所需的图形接口信息;渲染单元,用于运行图形程序,调用图形接口信息对应的图形接口渲染出图形,图形接口是云管理平台根据图形接口信息为云实例配置的。

在一可能的实现方式中,在渲染方式为本地硬件渲染的情况下,渲染参数包括本地图像处理器GPU的规格信息;渲染单元,用于运行图形程序,调用本地图像处理器GPU的驱动接口,使用本地GPU渲染出图形。

在一可能的实现方式中,在渲染方式为远程硬件渲染的情况下,渲染参数包括远程GPU的规格信息;渲染单元,用于运行图形程序,获取远程GPU的规格信息对应的远程GPU的连接地址,调用远程GPU的驱动,使用远程GPU渲染出图形,其中,远程GPU的连接地址是云管理平台向云实例发送的。

第四方面,提供了一种计算设备,该计算设备包括处理器和存储器,存储器存储有代码,处理器包括用于执行第一方面或第一方面任一种能实现方式中云管理平台或云实例或客户端实现的功能。

第五方面,提供了一种计算机读存储介质,所述计算机读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本申请在上述各方面提供的实现方式的基础上,还进行进一步组合以提供更多实现方式。

附图说明

图1是基于云技术的程序在线开发系统;

图2是本申请提供的一种基于云技术的图形程序在线开发系统的架构图;

图3是本申请提供的一种公有云场景下的基于云技术的图形程序在线开发系统的结构图;

图4是本申请提供的一种基于云技术的图形程序在线开发方法的步骤流程示意图;

图5是本申请提供的一种客户端的示例性界面;

图6是本申请提供的另一种客户端的示例性界面;

图7是本申请提供的一种计算设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

首先,对本申请涉及应用场景进行说明。

基于云技术的程序开发是一种易用的、跨多类型终端、快速接入的开发工具。基于云技术的程序开发指的是租户进行程序开发时,通过客户端访问云实例,云实例根据租户需求快速向租户提供开发环境,租户通过浏览器完成代码的编写,由云实例进行代码的编译和运行,再由客户端显示程序运行结果,实现租户的随时随地开发。

如图1所示,图1是基于云技术的程序开发系统架构示意图,如图1所示,该程序开发系统包括客户端100和云实例200,其中,客户端100和云实例200之间存在通信连接,具体连接方式可以是有线网络连接也可以是无线网络连接,本申请不作具体限定。

客户端100可以在租户所持有的终端设备上运行,该终端设备是部署有浏览器、拥有显示屏幕和租户能够输入代码的设备,比如计算机、智能手机、掌上处理设备、平板电脑、移动笔记本、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、一体化掌机、穿戴设备、车载设备、智能会议设备、智能广告设备、智能家电等等,此处不作具体限定。

可选地,客户端100可以在租户持有的终端设备的浏览器中运行,具体实现中,该浏览器中部署有基于web的程序编辑器,该程序编辑器通常基于html、javascript、css等常用的Web开发技术构建,通过websocket协议或者其他通信协议使得客户端100与云实例200进行交互,本申请不作具体限定。

云实例200是裸金属服务器(Bare Metal Server,BMS)、虚拟机或容器。其中,BMS指的是通用的物理服务器,例如,ARM服务器或者X86服务器;虚拟机指的是网络功能虚拟化(Network Functions Virtualization,NFV)技术实现的、通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,容器指的是一组受到资源限制,彼此间相互隔离的进程。

客户端100和云实例200建立连接后,客户端100将租户的开发请求发送给云实例200,该开发请求包括租户需要搭建的开发环境,云实例200根据该开发需求,搭建相应的开发环境。如图1所示,云实例200搭建好开发环境后,租户进行程序开发时,租户通过客户端100中的浏览器打开基于web的程序编辑器,然后在程序编辑器中完成代码的编写,客户端100将编写好的代码发送给云实例200,在接收到租户通过客户端100发送的程序编译指令后,云实例200对代码进行编译,获得编译后的程序代码,在接收到租户通过客户端100发送的运行代码指令后,云实例200运行编译后的程序代码,获得运行结果,然后将该运行结果返回客户端,客户端将运行结果显示给租户,实现基于云技术的程序开发。

但是,图形程序运行时,需要云实例200根据图形程序调用相应的图形应用程序接口(application programming interface,API)渲染出图形,但云实例200通常不具备图像渲染能力,无法处理这些图形API,使得基于云技术的程序开发方式无法运行图形程序,为图形程序的开发带来不便。

为了解决上述基于云技术的程序开发方式无法运行图形程序的问题,本申请提供了一种一种基于云技术的图形程序在线开发系统,该系统根据租户输入的在线开发请求对云实例进行配置,配置好的云实例具备图像渲染能力,使得基于云技术的程序开发方式也运行图形程序,提高租户的使用体验。

图2是本申请提供的基于云技术的图形程序在线开发系统的架构图,如图2所示,该开发系统包括客户端300、云实例400和云管理平台500,其中,客户端300、云实例400和云管理平台500之间存在通信连接,具体可以是有线网络连接也可以是无线网络连接,本申请不作具体限定。

其中,客户端300是租户持有的终端设备,云实例400是裸金属服务器(Bare MetalServer,BMS)、虚拟机或容器,云管理平台500可以是通用的物理服务器实现的,例如,ARM服务器或者X86服务器,也可以是结合网络功能虚拟化(network functionsvirtualization,NFV)技术实现的虚拟机(virtual machine,VM),本申请不作具体限定。上述终端设备、BMS、虚拟机和容器的描述参考图1实施例,这里不重复赘述。

客户端300、云实例400和云管理平台500可进一步划分为多个模块单元,示例性地,如图2所示,客户端300包括输入单元310和显示单元320,云实例400包括编译单元410、渲染单元420以及输出单元430,云管理平台500包括创建单元510和显示配置单元520。应理解,图2所示的划分方式用于举例说明,客户端300、云实例400和云管理平台500还包括更多或者更少的模块单元,本申请不对此进行限定。

客户端300中的输入单元310用于与租户进行人机交互,接收租户输入的图形程序在线开发请求,并将图形程序在线开发请求发送给云管理平台500,输入单元310还用于接收租户输入的图形程序代码,并将图形程序代码发送给云实例400。

其中,上述图形程序代码是租户使用高级计算机语言开发的程序源代码,高级计算机语言包括多种技术栈类型,比如C语言、C++语言、Fortran、java、python、NodeJS、GO等,本申请不对此进行限定。

具体实现中,输入单元310可以是浏览器中的基于web的程序编辑器,租户可通过该程序编辑器进行图形程序代码的编辑输入。图形程序在线开发请求可以是租户通过上述基于web的程序编辑器输入的,也可以是租户通过新的窗口、浏览器页面或tab页面输入的,本申请不对此进行限定。

具体实现中,输入单元310可以先接收图形程序在线开发请求,再接收租户输入的图形程序代码,也可以先接收图形程序代码,再接收租户输入的图形程序在线开发请求,本申请不对此进行限定。举例来说,客户端可以先向租户显示输入图形程序在线开发请求的界面,然后再向租户显示基于web的程序编辑器,用以获取租户输入的图形程序代码;或者,先向租户显示基于web的程序编辑器,检测到租户输入的图形程序代码为图形程序时,以弹窗或其他形式提醒租户输入图形程序在线开发请求。应理解,上述举例用于说明,本申请不对此进行限定。

在一实施例中,图形程序在线开发请求包括显示配置信息,该显示配置信息可用于供云管理平台500在云实例资源池中选择或创建与该显示配置信息匹配的云实例。

可选地,显示配置信息包括渲染方式,其中,渲染方式包括软渲染方式、本地硬件渲染方式和远程硬件渲染方式。其中,软渲染指的是通过软件实现图像渲染,本地硬件渲染指的是用云实例400的GPU实现图像渲染,远程硬件渲染指的是用云实例400远程连接其他计算节点的GPU实现图像渲染。

可选地,显示配置信息包括渲染参数,其中,不同的渲染模式对应不同的渲染参数,下面分别对各种模式下的渲染参数进行详细说明。

具体地,软渲染方式对应的渲染参数包括运行图形程序进行软渲染时所需的参数信息,比如软渲染所需的图形接口信息,这里的图像接口信息可包括图形接口的类型、图形接口版本信息、显示分辨率等等,还包括软渲染过程所需的其他参数信息,这里不一一举例说明。其中,上述图形接口的类型包括图形设备接口(graphics device interface,GDI)、多媒体编程接口(direct extension,DirectX)、开放图形库接口(open graphicslibrary,OpenGL)、Vulkan接口等等,本申请不对此进行限定。简单来说,若租户编写的图形程序代码中的API为OpenGL4.0的API,那么租户输入的图形程序在线开发请求中的渲染方式为软渲染方式,渲染参数中的图形接口为OpenGL,版本信息为4.0,应理解,上述举例用于说明,本申请不作具体限定。

具体地,本地硬件渲染方式对应的渲染参数包括本地GPU的规格信息,比如所需的本地GPU型号、规范、显示分辨率等规格信息,还包括其他本地GPU进行图像渲染时所需的参数信息,这里不一一举例说明。应理解,GPU作为一个硬件驱动装置,租户是无法直接使用的,通常情况下,GPU的厂商会按照各种规范提供GPU驱动,比如OpenGL规范、DirectX12规范等等,开发人员按照这些规范编写图形程序代码,当图形程序运行时,GPU驱动根据租户编写的图形程序和硬件的驱动程序沟通,启动GPU硬件的图形处理功能,实现图像的渲染。举例来说,假设租户编写的图形程序代码中的API是需要通过支持direcX12接口的GPU驱动来实现,那么租户输入的渲染参数中,本地GPU规格是型号为RTX5000,操作系统类型为windows,规范为DirectX12,云实例200根据该渲染参数,通过支持DirectX12接口的GPU租户态驱动完成图像渲染,应理解,上述举例用于说明,本申请不对此进行限定。

具体地,远程硬件渲染方式对应的渲染参数包括远程GPU的规格信息,比如远程GPU的规格、规范、显示分辨率和本地操作系统的信息等,还包括其他远程GPU进行图像渲染时所需的参数信息,这里不一一举例说明,其中,远程硬件规格和规范的描述参考本地硬件渲染的描述,这里不重复赘述。

应理解,租户根据自己的业务需求确定渲染方式,比如租户所需的图像渲染能力较低时,可以选择软渲染方式进行图像渲染,租户所需的图像渲染能力较高时,可以选择本地或者远程硬件渲染,如果租户频繁进行图形程序的开发,可以选择使用本地硬件渲染,若租户偶尔进行图形程序的开发,那么可以选择使用远程硬件渲染,降低开发成本。租户确定每种渲染模式后,可以根据业务需求确定对应的渲染参数,比如软渲染模式下,租户的业务需求使用OpenGL进行应用开发,那么租户锁输入的图形程序在线开发请求中,渲染方式为软渲染,对应的渲染参数为OpenGL。

可选地,显示配置信息还包括云实例的规格信息,例如云实例的操作系统规格、处理器规格、存储器规格、技术栈类型、生命周期等等,其中,操作系统规格包括云实例400的操作系统类型和版本信息,比如windows10、Ubuntu20.04等等,处理器规格包括处理器的内存、主频、核心数和线程数等参数信息,存储器的规格包括存储容量、带宽等等参数信息,技术栈类型指的是租户输入的图形程序代码的技术栈类型,比如java、C/C++、python、NodeJS、GO等等,生命周期指的是租户在客户端300无操作状态超过预设的等待时间后,云实例400与客户端300之间的连接将会主动断开,上述等待时间即为生命周期,租户根据使用习惯选择生命周期为30分钟、60分钟、4小时、24小时或者永不关闭。应理解,上述云实例的规格信息用于举例说明,还根据租户需求设置更多或者更少种类的规格信息,比如开发人员需要额外配置数据库,那么规格信息还包括数据库的类型、接口信息等等,本申请不对此进行限定。

可选地,显示配置信息还包括计费方式,计费方式包括按时计费和按需计费,按时计费包括包天、包月、包季或包年计费等等,按需计费包括按照存储资源计费和按照计算资源计费,存储资源指的是云实例从创建至删除所占用的磁盘存储资源,计算资源指的是云实例400从创建至删除所消耗的CPU、内存、网络资源的总和,应理解,上述计费方式用于说明,本申请不作具体限定。

客户端300中的显示单元320用于接收云实例400发送的图形,该图像是云实例400运行图形程序以渲染出的图形,并将其显示给租户。具体实现中,显示单元320将图形在上述基于web的程序编辑器中显示,也可以弹出新的窗口或tab页面来显示该图形,本申请不对此进行限定。

云管理平台500中的创建单元510用于接收输入单元310发送的图形程序在线开发请求,在云实例资源池中选择或创建用于图形渲染的云实例400,并设置云实例400与租户的客户端300连接。

具体实现中,创建单元510用于在云实例资源池中选择或创建与云实例规格信息匹配的云实例400,显示配置单元520用于根据渲染方式和渲染参数对云实例400的渲染单元进一步配置,使其拥有对应的图形处理能力。

可选地,若渲染方式为软渲染方式,渲染参数包括软渲染所需的图形接口信息,创建单元510用于在云实例资源池中选择或创建与云实例规格信息匹配的云实例400,显示配置单元520用于根据图形接口信息为云实例400的软渲染单元421配置对应的图形接口。举例来说,若渲染方式为软渲染方式,渲染参数中图形接口类型为OpenGL,版本号为4.3,那么云管理平台500创建或选择与云实例规格信息匹配的云实例400后,可为云实例400的软渲染单元421配置OpenGL接口,以供软渲染单元421在上述图形程序运行时调用该接口实现图像渲染。

可选地,若渲染方式为本地硬件渲染方式,渲染参数包括本地GPU的规格信息,那么云管理平台500在云实例资源池中选择或创建与云实例规格信息和上述本地GPU的规格信息相匹配的云实例400,具体实现中,若本地GPU可支持多种规范类型的GPU驱动来完成渲染时,显示配置单元520还可以根据渲染参数,为创建或选择好的云实例400的本地硬件渲染单元422配置渲染参数对应的GPU驱动。举例来说,渲染参数中本地GPU的规格信息包括:本地GPU型号为RTX5000,规范为DirectX12,图像分辨率为800*600,那么云管理平台500的创建单元510可以创建本地GPU型号为RTX5000的云实例400,显示配置单元520为云实例400配置规范为DirectX12的驱动,图形分辨率设置为800*600,使得本地硬件渲染单元422在上述编译后的图形程序运行时调用本地GPU的驱动完成图像渲染。

可选地,若渲染方式为远程硬件渲染方式,渲染参数包括远程GPU的规格信息,那么云管理平台500的创建单元510在云实例资源池中选择或创建与云实例规格信息相匹配的云实例400,显示配置单元520在云实例资源池中获取与远程GPU的规格信息相匹配的远程GPU的连接地址,并将连接地址发送给上述云实例400,将其配置在远程硬件渲染单元423中。举例来说,渲染参数中的远程GPU型号为RTX5000,规范为DirectX12,那么云管理平台500的显示配置单元520可以根据渲染参数中远程GPU的规格信息,获取符合条件的远程GPU的连接地址,以及用于保持远程GPU与云实例400之间通信连接的鉴权令牌(token)信息等等,然后将连接地址和token信息发送给云实例400的远程硬件渲染单元423,使得远程硬件渲染单元423在上述图形程序运行时,调用远程GPU的驱动完成图像渲染。

云实例400中的编译单元410用于接收客户端300发送的图形程序代码,对上述图形程序代码进行编译,获得编译后的图形程序。其中,编译指的是将一种语言翻译为另一种语言,例如,开发人员采用高级计算机语言(例如C语言,C++语言等)开发出的程序源代码,通过编译将其转换为机器识别并运行机器语言代码(例如二进制代码)。

具体实现中,编译单元410在对图形程序代码进行编译之前,还对租户输入的图形程序代码进行检查,比如语法合法检测、识别的编译问题等等,并将检查结果反馈给客户端300以供租户进行修改,应理解,上述举例用于说明,本申请不对此进行限定。

渲染单元420用于在云实例400运行编译好的图形程序时,加载配置好的对应类型的渲染单元进行图像渲染以生成对应的图形。

具体实现中,在渲染方式为软渲的情况下,在图形程序运行后,云实例400加载之前配置好的软渲染单元421,软渲染单元421运行图形程序,调用之前配置好的图形接口实现图形程序中图形API,渲染出图形。

同理,在渲染方式为本地硬件渲染情况下,在图形程序运行后,云实例400加载之前配置好的本地硬件渲染单元422,本地硬件渲染单元422调用本地GPU的驱动接口,使用本地GPU渲染出图形。

同理,在渲染方式为远程硬件渲染的情况下,在图形程序运行后,云实例400启加载之前配置好的远程硬件渲染单元423,远程硬件渲染单元423获取预先配置好的远程GPU的连接地址,调用远程GPU的驱动,使用远程GPU渲染出图形。具体实现中,远程硬件渲染单元423可通过图形接口远程化的方式来实现,比如DirectX接口的远程、OpenGL接口的远程化等,还是其他图形接口方式的远程化,本申请不对此进行具体限定。

在一实施例中,云实例400还可包括显示控制单元,该显示控制单元可通过动态链接库技术实现,显示控制单元用于接收云管理平台中的显示配置单元520发送的显示配置信息请求,该显示配置信息请求中携带有上述显示配置信息,显示控制单元可根据显示配置信息对渲染单元进行配置,从而降低云管理平台500的处理压力,提高云实例的配置效率。当图形程序运行时,云实例400的编译单元410对图形程序代码进行编译后获得图形程序,可先加载上述显示控制单元,显示控制单元根据之前的配置自动加载对应的软渲染单元421、本地硬件渲染单元422或者远程硬件渲染单元423,具体可以以加载动态链接库的方式加载显示控制单元,使得编译单元410对图形程序代码进行编译获得图形程序后,自动加载上述显示控制单元,同理,渲染单元420也可以通过动态链接库的方式进行加载。以windows平台为例,可通过注册表来实现运行图形程序后,自动加载显示控制单元所在的动态链接库,显示控制单元启动之前配置好的渲染单元实现图形渲染获得图形。应理解,上述动态链接库的方式用于举例说明,本申请还使用其他技术手段实现显示控制单元和渲染单元的自动加载,本申请不作具体限定。

可以理解的,在云实例400中配置显示控制单元,不仅可以降低云管理平台500的处理压力,将配置渲染单元420的步骤分离至显示控制单元来处理,而且在图形程序运行过程中,编译单元410可以加载上述显示控制单元,由显示控制单元启动之前配置好的渲染单元,使得方案的实现只需要以动态链接库的方式增加显示控制单元和渲染单元,无需对原有的编译单元410进行修改,提高方案的普适性和可实施性。

输出单元430用于将渲染单元420生成的图形发送至客户端300,以供客户端300的显示单元320将图形显示给租户。

具体实现中,输出单元430对图形进行图像数据编码,将编码结果发送至至客户端300,客户端300的显示单元320接收到编码结果后,按照对应的解码方式进行解码,然后再进行图形的显示。其中,编码方式可以是H.264、H.265等,也可以是其他或者自定义的编码方式,本申请不作具体限定。

具体实现中,输出单元430通过网页即时通信(web real-time communication,webRTC)技术与客户端300进行数据通信,其中,webRTC是一个支持网页浏览器进行实时音视频对话的API,该传输方式简单便捷,无需额外的插件或应用程序也可以实现web的音视频通信功能。

在一实施例中,渲染方式还包括无图形渲染模式,也就是说,租户上传的程序代码是非图形程序代码,非图形程序代码运行时无需进行图像渲染,运行结果通常是字符串的形式,该种情形下,云管理平台500选择或创建云实例400时,显示配置单元520无需对云实例400的渲染单元420进行配置,当云实例400运行程序代码时,编译单元410对程序代码进行编译后,云实例400运行编译后的程序代码,获得输出结果并通过输出单元430发送至客户端300,该输出结果通常为字符串。

应理解,图2中客户端300和云实例400的数量用于举例说明,具体实现中,本申请提供的程序开发系统包括更多的客户端300和云实例400。下面结合公有云这一具体的应用场景,对本申请提供的程序开发系统进行举例说明。

图3是本申请提供的一种公有云场景下的基于云技术的图形程序在线开发系统的架构示意图,该系统部署于公有云,该系统包括客户端300以及公有云的数据中心130,并且,客户端300以及公有云的数据中心130通过网络120连接。其中,网络120是公共网络,比如因特网(internet)。

客户端300的描述参考图1实施例,这里不重复赘述,应理解,图2以客户端300的数量为1个,客户端300为个人电脑为例进行说明,但是本申请不对此进行具体限定。

公有云的数据中心130为租户提供共享资源服务,共享资源服务包括OBS服务、SFS服务、云手机(cloud phone)服务、内容分发网络服务(content delivery network,CDN)、云备份服务(cloud backup and recovery,CBR)、数据管理服务(data admin service,DAS)等等,本申请不对公有云的数据中心130提供的共享资源服务类型进行限定。

示例性地,公有云的数据中心130包括云管理平台500以及硬件资源池132,应理解,图2所示的划分方式用于举例说明,公有云的数据中心130还使用其他方式进行划分,本申请不对公有云的数据中心130的划分方式进行限定。

其中,云管理平台500可以是通用的物理服务器实现的,例如,ARM服务器或者X86服务器,也可以是结合网络功能虚拟化(network functions virtualization,NFV)技术实现的虚拟机(virtual machine,VM),云管理平台500也可以是硬件资源池132中的虚拟机或者物理机,本申请不作具体限定。

硬件资源池132包括至少一个物理机(图2以资源池包括物理机1、物理机2、物理机3和物理机4为例进行了举例说明),其中,物理机是通用的物理服务器,例如ARM服务器或者X86服务器,本申请不作具体限定。硬件资源池132中的物理机通过内部网络与其他物理机或云管理平台500之间进行通信。其中,每一个物理机至少包括硬件资源(比如物理机1包括硬件资源1,物理机2包括硬件资源2)和操作系统(比如操作系统1和操作系统2),一些物理机还包括多个虚拟实例,该虚拟实例可以是容器(比如物理机1包括容器11和容器12),也可以是虚拟机(比如虚拟机21和虚拟机22),物理机中的多个虚拟实例共享该物理机中的操作系统和硬件资源。

其中,硬件资源(比如硬件资源1和硬件资源2)包括物理机的各种用硬件资源,比如处理器1、存储器1、PCI设备1等等,还包括租户可能需要的其他硬件资源,本申请不作具体限定。操作系统(比如操作系统1和操作系统2)是容器、虚拟机或物理机适用的操作系统,比如安卓(Android)操作系统、windows操作系统、linux操作系统等等,本申请不作具体限定。需要说明的是,操作系统可以是官方完整的操作系统,也可以是为了适应服务器的运行方式对官方完整的操作系统的个别驱动模块进行修改后的操作系统,本申请不做具体限定。并且,图2所示的物理机数量、虚拟机数量、容器数量、硬件资源种类和数量仅用于举例说明,本申请不作具体限定。

在本申请实施例中,客户端300获取租户输入的图形程序在线开发请求和图形程序代码,其中图形程序在线开发请求和图形程序代码的描述参考图2实施例,这里不重复赘述。具体实现中,客户端300可以是云管理平台500的控制台(console)或者应用程序接口(application program interface,API),控制台具体是租户与云管理平台500进行交互的一个应用程序或者网页页面,租户通过控制台购买和使用各种云服务,应理解,上述举例用于说明,本申请不作具体限定。

云管理平台500接收客户端300发送的图形程序在线开发请求,该图形程序开发请求包括显示配置信息,显示配置信息可包括云实例的规格信息、渲染方式和对应的渲染参数,云管理平台500根据显示配置信息中规格信息和硬件资源池132的资源空闲情况,从硬件资源池132中创建符合该显示配置信息的云实例400,其中,实例的类型可以是虚拟机、容器或BMS。

具体实现中,若图形程序在线开发请求为创建显示配置信息为X的容器,云管理平台500接收到上述云实例的显示配置信息后,根据硬件资源池132的资源空闲情况和显示配置信息X,确定创建该容器的物理机(比如图2中的物理机1),然后向该物理机上的管理代理节点(比如图2中物理机1内的管理代理节点1)发送容器创建请求,该容器创建请求中携带上述显示配置信息X,云管理代理节点1根据该容器创建请求,创建显示配置信息为X的容器(比如图2中的容器11)为云实例1;若图形程序在线开发请求为创建显示配置信息为Y的虚拟机,云管理平台500接收到上述待云实例的显示配置信息后,根据显示配置信息Y以及硬件资源池132的资源空闲情况,确定创建该虚拟机的物理机(比如图2中的物理机2),然后向该物理机上的虚拟机管理器(比如图2中的虚拟机管理器2)发送虚拟机创建请求,该虚拟机创建请求中携带上述显示配置信息Y,虚拟机管理器2根据该虚拟机创建请求,创建显示配置信息为Y的虚拟机(比如图2中的虚拟机21),获得云实例2;若图形程序在线开发请求为创建显示配置信息为Z的物理机,云管理平台500接收到上述待云实例的显示配置信息后,根据显示配置信息Z以及硬件资源池132的资源空闲情况,确定符合显示配置信息Z的物理机,获得云实例3。上述举例用于说明,本申请不作具体限定。

需要说明的,云管理平台500根据租户请求创建好与显示配置信息匹配的云实例后,将云实例的连接方式比如连接密码,发送至租户的客户端300,租户根据该连接密码在任何时间、地点、使用客户端300与该云实例400连接,实现程序的随时随地开发。应理解,上述举例用于说明,本申请不作具体限定。

租户运行图形程序时,云实例400加载配置好的渲染单元420实现图形程序中的图像API,完成图像渲染,获得图形,并将其发送至客户端300进行显示。具体参考图2实施例中的描述,这里不重复展开赘述。

综上可知,本申请提供了一种基于云技术的图形程序在线开发系统,该系统中的云管理平台接收租户输入的图形程序在线开发请求,在云实例资源池中选择或创建用于图形渲染的云实例,并为云实例配置用户所需的图形处理能力,比如软渲染能力、本地硬件渲染能力或者远程硬件渲染能力等,使得云实例接收客户端发送的图形程序代码后,云实例可以调用之前配置好的图形渲染能力以渲染出图形,并将图形发送至客户端进行显示,从而实现基于云技术的图形程序在线开发。

下面结合附图,对本申请提供的基于云技术的图形程序在线开发方法进行解释说明。

如图4所示,本申请提供一种基于云技术的图形程序在线开发方法,该方法可应用于如图2~图3所示的基于云技术的图形程序在线开发系统中,该方法可包括以下步骤:

S410:云管理平台接收租户输入的图形程序在线开发请求,在云实例资源池中选择或创建用于图形渲染的云实例,并设置云实例与租户的客户端连接。

在一实施例中,客户端在租户所持终端设备的浏览器中运行,客户端可基于网页开发技术构建,网页开发技术包括html、javascript以及css中的一种或者多种。终端设备包括手机、平板电脑、个人电脑、只能电视、游戏机,云实例包括虚拟机、容器或BMS,具体可参考图1~图3实施例中关于终端设备和云实例的描述,这里不重复赘述。

在一实施例中,图形程序在线开发请求包括显示配置信息,云管理平台可以在云实例资源池中选择或创建与显示配置信息匹配的云实例。

具体实现中,显示配置信息包括渲染方式和渲染参数,渲染方式包括软渲染、本地硬件渲染或者远程硬件渲染中的一种,不同的渲染方式对应不同的渲染参数。其中,软渲染指的是通过软件实现图像渲染,本地硬件渲染指的是用云实例的GPU实现图像渲染,远程硬件渲染指的是用云实例远程连接其他计算节点的GPU实现图像渲染。

可选地,软渲染方式对应的渲染参数包括运行图形程序进行软渲染时所需的参数信息,比如软渲染所需的图形接口信息,这里的图像接口信息可包括图形接口的类型、图形接口版本信息、显示分辨率等等,还包括软渲染过程所需的其他参数信息,这里不一一举例说明。其中,上述图形接口的类型包括图形设备接口(graphics device interface,GDI)、多媒体编程接口(direct extension,DirectX)、开放图形库接口(open graphicslibrary,OpenGL)、Vulkan接口等等,本申请不对此进行限定。

可选地,本地硬件渲染方式对应的渲染参数包括本地GPU的规格信息,比如所需的本地GPU型号、规范、显示分辨率等规格信息,还包括其他本地GPU进行图像渲染时所需的参数信息,这里不一一举例说明。应理解,GPU作为一个硬件驱动装置,租户是无法直接使用的,通常情况下,GPU的厂商会按照各种规范提供GPU驱动,比如OpenGL规范、DirectX12规范等等,开发人员按照这些规范编写图形程序代码,当图形程序运行时,GPU驱动根据租户编写的图形程序代码和硬件的驱动程序沟通,启动GPU硬件的图形处理功能,实现图像的渲染。

可选地,远程硬件渲染方式对应的渲染参数包括远程GPU的规格信息,比如远程GPU的规格、规范、显示分辨率和本地操作系统的信息等,还包括其他远程GPU进行图像渲染时所需的参数信息,这里不一一举例说明,其中,远程硬件规格和规范的描述参考本地硬件渲染的描述,这里不重复赘述。

应理解,租户根据自己的业务需求确定渲染方式,比如租户所需的图像渲染能力较低时,可以选择软渲染方式进行图像渲染,租户所需的图像渲染能力较高时,可以选择本地或者远程硬件渲染,如果租户频繁进行图形程序的开发,可以选择使用本地硬件渲染,若租户偶尔进行图形程序的开发,那么可以选择使用远程硬件渲染,降低开发成本。租户确定每种渲染模式后,可以根据业务需求确定对应的渲染参数,比如软渲染模式下,租户的业务需求使用OpenGL进行应用开发,那么租户锁输入的图形程序在线开发请求中,渲染方式为软渲染,对应的渲染参数为OpenGL。

可选地,显示配置信息还包括云实例的规格信息,例如云实例的操作系统规格、处理器规格、存储器规格、技术栈类型、生命周期等等,其中,操作系统规格包括云实例400的操作系统类型和版本信息,比如windows10、Ubuntu20.04等等,处理器规格包括处理器的内存、主频、核心数和线程数等参数信息,存储器的规格包括存储容量、带宽等等参数信息,技术栈类型指的是租户输入的图形程序代码的技术栈类型,比如java、C/C++、python、NodeJS、GO等等,生命周期指的是租户在客户端300无操作状态超过预设的等待时间后,云实例400与客户端300之间的连接将会主动断开,上述等待时间即为生命周期,租户根据使用习惯选择生命周期为30分钟、60分钟、4小时、24小时或者永不关闭。应理解,上述云实例的规格信息用于举例说明,还根据租户需求设置更多或者更少种类的规格信息,比如开发人员需要额外配置数据库,那么规格信息还包括数据库的类型、接口信息等等,本申请不对此进行限定。

可选地,显示配置信息还包括计费方式,计费方式包括按时计费和按需计费,按时计费包括包天、包月、包季或包年计费等等,按需计费包括按照存储资源计费和按照计算资源计费,存储资源指的是云实例从创建至删除所占用的磁盘存储资源,计算资源指的是云实例400从创建至删除所消耗的CPU、内存、网络资源的总和,应理解,上述计费方式用于说明,本申请不作具体限定。

在一实施例中,云管理平台可以根据显示配置信息对云实例的渲染单元进行配置,使得云实例具有租户需求的图像渲染能力,其中,不同的渲染方式的配置方法不同,下面分别对三种渲染方式的配置方法进行描述。

可选地,在渲染方式为软渲染的情况下,渲染参数包括图形接口信息,云管理平台可在云实例资源池中选择或创建与云实例规格信息匹配的云实例,然后根据图形接口信息为云实例配置对应的图形接口。

可选地,在渲染方式为本地硬件渲染的情况下,渲染参数包括本地GPU的规格信息,云管理平台可以在云实例资源池中选择或创建与云实例规格信息和本地GPU规格信息匹配的云实例。

可选地,在渲染方式为远程硬件渲染的情况下,渲染参数包括远程GPU的规格信息,云管理平台可以在云实例资源池中选择或创建与云实例规格信息匹配的云实例,并获取与远程GPU规格信息匹配的远程GPU的连接地址,将连接地址发送给上述云实例。

S420:云实例接收客户端发送的图形程序代码并将图形程序代码进行编译以产生图形程序,其中图形程序代码由租户输入至客户端。

其中,编译指的是将一种语言翻译为另一种语言,例如,开发人员采用高级计算机语言(例如C语言,C++语言等)开发出的程序源代码,通过编译将其转换为机器识别并运行机器语言代码(例如二进制代码)。

具体实现中,在对图形程序代码进行编译之前,还对租户输入的图形程序代码进行检查,比如语法合法检测、识别的编译问题等等,并将检查结果反馈给客户端以供租户进行修改,应理解,上述举例用于说明,本申请不对此进行限定。

其中,租户上传的图形程序代码是租户使用高级计算机语言开发的程序源代码,高级计算机语言包括多种技术栈类型,比如C语言、C++语言、Fortran、java、python、NodeJS、GO等,本申请不对此进行限定。

具体实现中,客户端可以是浏览器中的基于web的程序编辑器,租户可通过该程序编辑器进行图形程序代码的编辑输入,图形程序在线开发请求可以是租户通过上述基于web的程序编辑器输入的,也可以是租户通过新的窗口、浏览器页面或tab页面输入的,本申请不对此进行限定。

具体实现中,云管理平台可以先接收图形程序在线开发请求,再接收租户输入的图形程序代码,也可以先接收图形程序代码,再接收租户输入的图形程序在线开发请求,本申请不对此进行限定。举例来说,客户端可以先向租户显示输入图形程序在线开发请求的界面,然后再向租户显示基于web的程序编辑器,用以获取租户输入的图形程序代码;或者,先向租户显示基于web的程序编辑器,检测到租户输入的图形程序代码为图形程序时,以弹窗或其他形式提醒租户输入图形程序在线开发请求。应理解,上述举例用于说明,本申请不对此进行限定。

S430:云实例运行图形程序以渲染出图形,并将图形发送至客户端进行显示。

具体地,当租户通过客户端启动上述图形程序后,客户端将程序运行的指令发送给云实例,经过步骤S420,云实例已经根据租户的显示配置信息拥有了相应的图像渲染能力,因此可以调用配置好的接口、驱动或远程调用接口来实现图形程序中的图像渲染功能。

具体实现中,在渲染方式为软渲染的情况下,云实例调用配置好的图形接口实现图像渲染功能,获得图形。在渲染方式为本地硬件渲染的情况下,云实例可以调用本地GPU的驱动接口,使用本地GPU实现图像渲染功能,获得图形。在渲染方式为远程硬件渲染的情况下,云实例根据远程GPU的连接地址调用远程GPU的驱动,使用远程GPU实现图像渲染功能,获得图形。

在一实施例中,渲染方式还包括无图形渲染模式,也就是说,租户上传的图形程序代码是非图形程序代码,非图形程序代码运行时无需进行图像渲染,运行结果通常是字符串的形式,该种情形下,云实例运行图形程序代码,输出运行结果对应的字符串给客户端进行显示。

在一实施例中,云实例对图形进行图像数据编码,然后将编码结果发送至客户端,客户端接收到编码结果后,可以按照与编码方式对应的解码方式对编码结果进行解码,获得图形,并将其显示给租户。其中,编码方式可以是H.264、H.265等,也可以是其他或者自定义的编码方式,本申请不作具体限定。

具体实现中,云实例向客户端发送图形时,可以通过网页即时通信(web real-time communication,webRTC)技术与客户端进行数据通信,其中,webRTC是一个支持网页浏览器进行实时音视频对话的API,该传输方式简单便捷,无需额外的插件或客户端也实现web的音视频通信功能。

图5和图6是本申请提供的一种客户端的示例性界面,该客户端可以是云数据中心的控制台,参考前述内容可知,客户端用于获取租户输入的显示配置信息,其中,显示配置信息可包括云实例的规格信息、渲染方式以及对应的渲染参数等等,图5和图6所示的例子中,图5用于获取显示配置信息中的云实例的规格信息以及渲染方式,图6用于获取租户选择的渲染方式对应的渲染参数。

如图5所示,云实例的规格信息可包括云实例的实例名称(实例的描述可参考图2和图3实施例的描述,这里不重复赘述)、实例描述、需支持的技术栈类型、CPU规格、存储规格、生命周期和渲染方式,图5所示的例子中,租户选择技术栈类型为java开发,CPU规格为1U1G,存储容量为5GB,生命周期为30分钟,渲染方式为软渲染。参考前述内容可知,不同的渲染方式对应不同的渲染参数,租户点击下一步按钮后,可以显示如图6所示的渲染参数输入界面,租户可以根据业务需求选择需要的渲染参数,图6中租户选择图形接口类型为DirectX,接口版本为DirectX12,显示分辨率为800×600,租户点击下一步后,客户端可以将图5和图6的例子中租户输入的显示配置信息发送给云管理平台,云管理平台创建符合条件的云实例后,根据渲染参数配置云实例的软渲染单元,当云实例接收到租户发送的图形程序代码运行指令时,云实例可以加载配置好的软渲染单元,配置好的软渲染单元具有处理DirectX12类型的图形API的能力,实现图形程序所需的图像渲染功能,获得图形。可以理解的,图5和图6用于举例和说明,本申请不对客户端的具体界面进行限定。

综上可知,本申请提供了一种基于云技术的图形程序在线开发方法,该方法中,云管理平台接收租户输入的图形程序在线开发请求,在云实例资源池中选择或创建用于图形渲染的云实例,并为云实例配置用户所需的图形处理能力,比如软渲染能力、本地硬件渲染能力或者远程硬件渲染能力等,使得云实例接收客户端发送的图形程序代码后,云实例可以调用之前配置好的图形渲染能力以渲染出图形,并将图形发送至客户端进行显示,从而实现基于云技术的图形程序在线开发,解决了当前基于云技术的程序在线开发方法无法支持图形程序开发的问题,提高用户的使用体验。

图7是本申请提供的一种计算设备的结构示意图,该计算设备700是图1至图6实施例中的云实例、云管理平台或者客户端,其中,客户端可以是终端设备,云实例是物理服务器、虚拟机或容器,云管理平台可以是物理服务器、虚拟机或服务器集群,具体的描述可参考图2实施例,本申请对此不做限定。

进一步地,计算设备700包括处理器701、存储单元702、存储介质703和通信接口704,其中,处理器701、存储单元702、存储介质703和通信接口704通过总线705进行通信,也通过无线传输等其他手段实现通信。

处理器701由至少一个通用处理器构成,例如CPU、NPU或者CPU和硬件芯片的组合。上述硬件芯片是专用集成电路(Application-Specific Integrated Circuit,ASIC)、编程逻辑器件(Programmable Logic Device,PLD)或其组合。上述PLD是复杂编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场编程逻辑门阵列(Field-Programmable Gate Array,FPGA)、通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。处理器701执行各种类型的数字存储指令,例如存储在存储单元702中的软件或者固件程序,它能使计算设备700提供较宽的多种服务。

具体实现中,作为一种实施例,处理器701包括一个或多个CPU,例如图7中所示的CPU0和CPU1。

在具体实现中,作为一种实施例,计算设备700也包括多个处理器,例如图7中所示的处理器701和处理器706。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

存储单元702用于存储图形程序代码,并由处理器701来控制执行,以执行上述图1-图7中任一实施例中工作流系统的处理步骤。图形程序代码中包括一个或多个软件单元。

在计算设备是客户端时,上述一个或多个软件单元是图2实施例中的输入单元310和显示单元,其中,输入单元用于向租户获取图形程序代码和图形程序在线开发请求,显示单元用于将云实例发送的图形显示给租户,上述具体实现方式参考图4~图6方法实施例,此处不再赘述。

在计算设备是云实例时,上述一个或多个软件单元是图2实施例中的编译单元、渲染单元和输出单元,其中,编译单元用于接收客户端发送的图形程序代码,对图形程序代码进行编译获得图形程序,渲染单元用于运行图形程序,调用云管理平台为其配置好的渲染能力(比如软渲染能力、本地硬件渲染能力、远程硬件渲染能力等)实现图像渲染,获得图形,输出单元用于将图形发送给客户端,其中,本地硬件渲染方式和远程硬件渲染方式的配置方式可参考图1~图6实施例中的描述,这里不在重复赘述。

在计算设备是云管理平台时,上述一个或多个软件单元可以包括创建单元和显示配置单元,其中,创建单元用于接收客户端发送的显示配置信息,根据显示配置信息中云实例的规格信息创建符合条件的云实例,根据显示配置信息中的渲染方式和渲染参数为云实例配置相应的渲染能力,并在云实例和客户端之间建立通信连接,具体可参考图1~图6实施例中关于云管理平台的描述,这里不在重复赘述。

存储单元702包括只读存储器和随机存取存储器,并向处理器701提供指令和数据。存储单元702还包括非易失性随机存取存储器。例如,存储单元702还存储设备类型的信息。

存储单元702是易失性存储器或非易失性存储器,或包括易失性和非易失性存储器两者。其中,非易失性存储器是只读存储器(read-only memory,ROM)、编程只读存储器(programmable ROM,PROM)、擦除编程只读存储器(erasable PROM,EPROM)、电擦除编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器是随机存取存储器(randomaccess memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。还是硬盘(hard disk)、U盘(universalserial bus,USB)、闪存(flash)、SD卡(secure digital memory Card,SD card)、记忆棒等等,硬盘是硬盘驱动器(hard disk drive,HDD)、固态硬盘(solid state disk,SSD)、机械硬盘(mechanical hard disk,HDD)等,本申请不作具体限定。

存储介质703是存储数据的载体,比如硬盘(hard disk)、U盘(universal serialbus,USB)、闪存(flash)、SD卡(secure digital memory Card,SD card)、记忆棒等等,硬盘可以是硬盘驱动器(hard disk drive,HDD)、固态硬盘(solid state disk,SSD)、机械硬盘(mechanical hard disk,HDD)等,本申请不作具体限定。

通信接口704为有线接口(例如以太网接口),为内部接口(例如高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他服务器或单元进行通信,具体实现中,通信接口704用于接收报文,以供处理器701或处理器706对该报文进行处理。

总线705是快捷外围部件互联标准(Peripheral Component InterconnectExpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线705分为地址总线、数据总线、控制总线等。

总线705除包括数据总线之外,还包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线705。

需要说明的,图7仅仅是本申请实施例的一种能的实现方式,实际应用中,计算设备700还包括更多或更少的部件,这里不作限制。关于本申请实施例中未示出或未描述的内容,参见前述图1-图6实施例中的相关阐述,这里不再赘述。

本申请实施例提供一种计算机读存储介质,包括:该计算机读存储介质中存储有计算机指令;当该计算机指令在计算机上运行时,使得该计算机执行上述方法实施例所述的数据访问方法。

本申请实施例提供了一种包含指令的计算机程序产品,包括计算机程序或指令,当该计算机程序或指令在计算机上运行时,使得该计算机执行上述方法实施例所述的数据访问方法。

上述实施例,全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例全部或部分地以计算机程序产品的形式实现。计算机程序产品包括至少一个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机为通用计算机、专用计算机、计算机网络、或者其他编程装置。计算机指令存储在计算机读存储介质中,或者从一个计算机读存储介质向另一个计算机读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机读存储介质是计算机能够存取的任何用介质或者是包含至少一个用介质集合的服务器、数据中心等数据存储节点。用介质是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,DVD)、或者半导体介质。半导体介质是SSD。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,轻易想到各种等效的修复或替换,这些修复或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

技术分类

06120115989233