用于远程开发和管理的系统及方法、相关设备与流程

文档序号:31708886发布日期:2022-10-01 13:59阅读:74来源:国知局
用于远程开发和管理的系统及方法、相关设备与流程

1.本公开涉及计算机技术领域,尤其涉及一种用于远程开发和管理的系统及方法、相关设备。


背景技术:

2.在相关技术中,软件开发者在开始开发之前,需要准备开发环境,包括软件环境、硬件环境及网络环境,而不同的软件系统对环境要求不同,特别是硬件环境的准备较为困难。


技术实现要素:

3.本公开提出一种用于远程开发和管理的系统及方法、相关设备,以解决或部分解决上述问题。
4.本公开第一方面,提供了一种用于远程开发和管理的系统,包括:
5.代理服务器,被配置为:接收用户发送的用于远程开发和管理的资源分配请求,并根据所述资源分配请求,在多个资源服务器中确定目标服务器;以及,向所述目标服务器发送资源申请指令;
6.多个资源服务器,包括所述目标服务器,所述目标服务器被配置为:根据所述资源申请指令,运行所述资源分配请求对应的环境资源,并生成用户返回用于远程开发和管理的所述目标服务器的访问地址;
7.所述代理服务器,还被配置为:根据所述目标服务器的访问地址以及所述代理服务器的访问地址,向所述用户返回用于远程开发和管理的访问地址,以使所述用户基于所述用于远程开发和管理的访问地址进行远程开发和管理。
8.本公开第二方面,提供了一种远程开发和管理的方法,包括:
9.利用代理服务器接收用户发送的用于远程开发和管理的资源分配请求,并根据所述资源分配请求,在多个资源服务器中确定目标服务器;以及,向所述目标服务器发送资源申请指令;
10.利用目标服务器根据所述资源申请指令,运行所述资源分配请求对应的环境资源,并生成用户返回用于远程开发和管理的所述目标服务器的访问地址;
11.利用所述代理服务器根据所述目标服务器的访问地址以及所述代理服务器的访问地址,向所述用户返回用于远程开发和管理的访问地址,以使所述用户基于所述用于远程开发和管理的访问地址进行远程开发和管理。
12.本公开第三方面,提供了一种计算机设备,包括一个或者多个处理器、存储器;和一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据第二方面所述的方法的指令。
13.本公开第四方面,提供了一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行第一方面所述的方
法。
14.本公开第五方面,提供了一种提供了一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行第一方面所述的方法。
15.本公开提供的用于远程开发和管理的系统及方法、相关设备,可提高硬件资源利用率,从而提升开发效率。
附图说明
16.为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1a示出了本公开实施例所提供的示例性系统的示意图。
18.图1b示出了本公开实施例所提供的示例性系统的另一示意图。
19.图2a示出了本公开实施例所提供的示例性方法的流程示意图。
20.图2b示出了根据本公开实施例的示例性界面的示意图。
21.图3a示出了根据本公开实施例的另一示例性界面的示意图。
22.图3b示出了根据本公开实施例的示例性开发页面的示意图。
23.图3c示出了根据本公开实施例的示例性管理页面的示意图。
24.图4示出了本公开实施例所提供的示例性计算机设备的硬件结构示意图。
具体实施方式
25.为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
26.需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
27.软件开发者在开始开发之前,需要准备开发环境,包括软件环境、硬件环境及网络环境,而不同的软件系统对环境要求不同,相对于软件开发环境与网络环境,硬件开发环境的准备更困难(如运行某一算法要求gpu资源,或者要求某一具体型号的gpu资源),软硬件可能导致的环境不一致,都增加了生产上线的风险。因此,如何简单合理地调度丰富的服务器资源给开发者,充分发挥其强大的功能特性,对提升开发效率有重要影响。
28.在ai算法开发场景中,涉及到的资源环境更为复杂,通常包括网络服务、存储服务、软件运行环境、硬件运行环境等环境,而不同的资源环境对算法的执行效率、兼容性会有影响,因此,同一套代码需要在不同的资源环境下在测试。此外,算法产生的中间结果不
方便实时查看、管理等操作,开发及测试过程工作效率低、工作量大、成本较高。
29.鉴于此,本公开实施例提供了一种用于远程开发和管理的系统,包括:
30.代理服务器,被配置为:接收用户发送的用于远程开发和管理的资源分配请求,并根据所述资源分配请求,在多个资源服务器中确定目标服务器;以及,向所述目标服务器发送资源申请指令;
31.多个资源服务器,包括所述目标服务器,所述目标服务器被配置为:根据所述资源申请指令,运行所述资源分配请求对应的环境资源,并生成用户返回用于远程开发和管理的所述目标服务器的访问地址;
32.所述代理服务器,还被配置为:根据所述目标服务器的访问地址以及所述代理服务器的访问地址,向所述用户返回用于远程开发和管理的访问地址,以使所述用户基于所述用于远程开发和管理的访问地址进行远程开发和管理。
33.本公开实施例提供的用于远程开发和管理的系统及方法、相关设备,可提高硬件资源利用率,从而提升开发效率。
34.图1a示出了本公开实施例所提供的示例性系统100的示意图。
35.该系统100可以用于远程开发软件并可以对已开发的软件进行管理。如图1a所示,该系统100可以包括代理服务器102和多个资源服务器(例如,第一服务器104a、第二服务器104b、第三服务器104c)。
36.其中,代理服务器102用于从用户处(例如,用户的终端设备200)接收请求,并基于用户的请求在多个资源服务器之间完成调度。多个资源服务器则可以基于代理服务器102发送的指令来执行相应的操作。
37.其中,多个资源服务器中可以包括具有不同硬件资源的服务器。
38.作为一个可选实施例,第一服务器104a和第二服务器104b的硬件资源可以是不同的。这样,在软件开发场景中,由于第一服务器104a和第二服务器104b的硬件资源不同,使得用户可以根据其所需的硬件开发环境来选择资源服务器,从而扩大了系统100的适用范围,更好地满足了开发者的需求。
39.在一些实施例中,所述多个资源服务器均为图形处理器(gpu)服务器,第一服务器104a和第二服务器104b可以具有不同型号的显卡,从而可以针对不同的ai算法来提供不同的gpu硬件环境。作为一个可选实施例,多个资源服务器中的每个资源服务器的显卡型号可以各不相同,从而可以提供更多的硬件资源来适应更多类型的ai算法。作为另一个可选实施例,在多个资源服务器中,具有相同型号显卡的资源服务器的数量可以是至少两台,从而当一个ai算法的计算量较大时,可以在两台以上资源服务器中并行处理数据,从而提高处理效率。
40.在一些实施例中,为了实现代理服务器102与各资源服务器之间的通信和调度,代理服务器102与多个资源服务器之间可以采用grpc框架,从而可以基于grpc协议来保持长连接通信。当然,可以理解的是,代理服务器102与各资源服务器之间的通信方式不限于grpc,也可通过http、消息队列、rpc方式通信。
41.图1b示出了本公开实施例所提供的示例性系统100的更为详细的结构示意图。
42.如图1b所示,作为一个可选实施例,系统100中可以包括具有不同硬件资源的资源服务器104a~104c,各自型号分别为型号a、型号b、型号c,每台资源服务器分别具有唯一的
ip地址。
43.代理服务器102作为grpc框架中的服务端,可以部署一个指令控制端应用程序s(例如,应用程序1024),该代理服务器102与各资源服务器网络畅通,负责接收用户端200的操作指令并下发控制指令到相应的资源服务器。作为grpc框架中的服务端,代理服务器102可以包括资源申请接口、资源释放接口、任务下发、数据存储(查看、下载、清理等)、远程服务器数据汇总等功能。具体地,
44.作为一个可选实施例,指令控制端应用程序s(grpc服务端)可以使用golang+mysql开发,功能可以包括:1)提供资源申请、回收功能接口,以http协议提供;2)提供客户端服务资源汇总接口,以http协议提供;3)提供资源调度服务功能,按申请资源需求,下发到向符合条件的客户端,以完成开发环境容器的创建与回收;4)提供客户端服务器状态上报接收服务。
45.各资源服务器104a~104c作为grpc框架中的客户端,可以分别部署一个指令接收端应用程序c。部署成功后,各资源服务器可以分别具有与其型号对应的标签,例如,标签a、标签b、标签c,该标签与其ip地址一一对应,用于标识该客户端所在服务器的资源类型。作为grpc框架中的客户端,各资源服务器与服务端建立grpc通信,负责任务接收(容器启动或容器回收)、状态上报等功能。其中,状态上报可以进一步包括服务器状态上报(gpu、cpu、内存、硬盘等)和容器状态上报(数量或资源占用)等功能。
46.作为一个可选实施例,指令接收端应用程序c(grpc客户端)可以使用golang+mysql开发,功能可以包括:1)接收grpc服务端指令,完成开发环境容器启动、回收操作;2)收集所在服务器的cpu、内存、gpu、硬盘、网络等信息,上报grpc服务端;3)软件开发者申请的服务器资源,也就是客户端所启动的docker容器,开发、调试、测试等工作都在docker容器中进行,每一个docker容器都有两个可访问的http地址。
47.在部署完成后,各资源服务器104a~104c与代理服务器102通过grpc协议保持长连接通信,各资源服务器104a~104c每间隔x秒(例如,x≥10)发送心跳包给代理服务器102,心跳报文中可以包含该资源服务器的gpu型号、gpu利用率、ip地址、cpu、内存/硬盘资源占用等信息。
48.这样,代理服务器102通过接收各资源服务器104a~104c的心跳信息,获取所有资源服务器104a~104c的gpu信息、ip地址,并可以在内存映射表中保存ip地址与gpu型号的关系映射,以供后续查询使用。
49.为了为所述多个资源服务器提供共享代码和数据,在一些实施例中,如图1b所示,该系统100的数据存储服务器106中还可以部署网络文件系统(nfs),用于为资源服务器提供共享存储服务,数据库包括但不限于mysql、postgresql、oracle、sqlserver等关系型数据库。各资源服务器104a~104c都需要挂载该网络文件系统(nfs),各资源服务器104a~104c中启动的每个docker容器挂载该存储目录,以完成数据持久化。
50.为了给用户端200提供可视化操作界面的相关功能,在一些实施例中,该系统100还可以包括开发后台系统。作为一个可选实施例,该开发后台系统可以采用代理服务1022(例如,nginx代理容器)来实现,并可以与指令控制端应用程序s一起部署在代理服务器102中,各自负责实现不同的功能。该开发后台系统的功能可以包括用户管理、服务器管理、数据上传下载、开发环境申请与管理、日志管理等功能。具体地,用户管理可以包括用户的增
加、修改、权限管理(服务器配置、容器数量配置、容器生命周期配置等)、查看等功能;服务器管理可以包括服务器列表、资源占用信息(gpu、cpu、内存、硬盘等)、状态设置(禁用或启用)等功能;数据上传下载可以包括数据上传、数据下载和数据清理等功能;开发环境申请与管理可以包括开发环境申请(服务器选择、远程密码配置等)、开发环境控制台(端口查看、url访问、资源释放等)等功能;日志管理可以包括日志查看和日志清理等功能。
51.进一步地,该开发后台系统可以包括前端和后端,前端可以使用vue.js开发从而可以提供,后端可以使用golang+mysql开发,前端提供可视化操作页面w,并可以接收用户端200的输入操作,进而调用后端接口,将该操作转化成指令发送给指令控制端应用程序s,以完成数据接收、存储以及相关逻辑功能。该后台管理系统同样可以挂载该网络文件系统(nfs),以统一管理数据。
52.为了方便用户开发和管理软件,在一些实施例中,可以采用docker容器的集成方式,将开发组件(例如,code-server)、管理组件(例如,vnc)部署在docker里面,形成基于docker的开发和管理环境。可以理解,在一些场景下,为了对开发环境和管理环境进行区分,也可以将开发组件和管理组件分别部署在不同的docker里。
53.为了利用docker来提供软件开发和管理环境,在初始状态下,如图1b所示,可以构建同时包括开发组件212和管理组件214的docker镜像文件。其中,开发组件212,例如,可以是基于code-server开发的组件,从而可以实现任何设备通过浏览器即可访问vscode,进而实现在远程编程;管理组件214,例如,可以是基于vnc(virtual network console,虚拟网络控制台)开发的组件,从而可以实现远程控制与管理。由于docker容器运行环境不带图形用户界面(gui)进程,无法展示交互窗口,只能通过命令行操作,为了方便用户使用,基于vnc技术构建带有gui桌面环境的docker镜像,实现docker容器可视化操作,从而方便、快捷的管理容器。
54.在开发完成docker镜像文件之后,可以将该镜像文件存储在镜像仓库(例如,docker hub、harbor registry等),以便后续拉取使用。在一些实施例中,为了保证数据安全性,可以采用harbor registry搭建私有镜像仓库。
55.在完成前述准备工作之后,用户端200可以利用系统100来完成软件的开发以及对软件的管理工作。
56.图2a示出了本公开所提供的示例性方法210的流程示意图。该方法210可以由系统100来实现。如图2a所示,该方法210可以进一步包括以下步骤。
57.在步骤212,用户可以打开浏览器并输入开发后台系统的ip地址或网址,以向代理服务器102的开发后台系统发送进入系统100的请求,代理服务器102响应该请求,利用开发后台系统向用户端200提供界面220,以提示用户已登录系统后台,如图2b所示。
58.在一些实施例中,如图2b所示,在界面220中,可以提供资源申请相关信息,例如,可供选择的gpu型号。用户通过用户端200选择相应型号的gpu之后,输入访问密码,然后点击“提交申请”按钮,从而向代理服务器102发送用于远程开发和管理的资源分配请求,该资源分配请求可以包括gpu型号信息。其中,用户的账户、权限可以由系统管理员负责分配,权限可以包括可使用资源标签、申请资源数量、资源使用时长等。访问密码可以由用户自行设置。在一些实施例中,ide密码和vnc密码可以是分开设置的,从而保证开发和管理各自的安全性。
59.在步骤214,代理服务器102的开发后台系统可以接收用户发送的用于远程开发和管理的资源分配请求,并调用后端接口,从而将该资源分配请求发送给代理服务器102的应用程序1024(指令控制端应用程序s),应用程序1024根据所述资源分配请求中的gpu型号信息,在内存映射表(该映射表中保存有在部署系统100时建立的gpu型号与服务器ip地址的映射关系)中查找该gpu型号对应的ip地址,从而在多个资源服务器中确定具有相应gpu型号的目标服务器,然后向所述目标服务器发送资源申请指令(可以是一种grpc控制指令)。在一些实施例中,若查找不到相应gpu型号的ip地址,则代理服务器102可以向用户端200返回查找失败消息,例如“没有可申请的gpu资源”,并显示在界面220中(图中未示出)。
60.在步骤216,所述目标服务器(例如,第二服务器104b)可以根据所述资源申请指令,运行所述资源分配请求对应的环境资源,并生成用户返回用于远程开发和管理的所述目标服务器的访问地址。
61.在一些实施例中,可以通过获取镜像文件并运行所述镜像文件以生成运行有所述资源分配请求对应的环境资源的容器,从而可以将相应的处理任务实现在容器提供的环境中,保证资源一致性。
62.具体地,作为一个可选实施例,所述目标服务器的指令接收端应用程序c接收该资源申请指令,调用所述目标服务器本地的docker api接口,从镜像仓库中拉取相应的docker镜像文件并在所述目标服务器中启动相应的docker容器,从而在所述目标服务器中形成所述资源分配请求对应的环境资源。在启动docker容器后,目标服务器的目录(例如,/data)与容器内目录(例如,/data)挂载,从而实现容器、服务器间数据共享,并且,各资源服务器均挂载数据存储服务器106的共享目录(例如,/data)进而实现各资源服务器及其运行的容器的数据共享。
63.在docker容器启动成功后,所述目标服务器的指令接收端应用程序c可以向代理服务器102的应用程序1024发送资源申请成功响应消息,该响应消息中可以包括目标服务器的ip地址、远程开发端口号(dport)、远程管理端口号(mport)。其中,远程开发端口号(dport)为远程开发ide(集成开发环境),使用code-server实现(vscode服务器版)。远程管理端口号(mport)为远程开发环境可视化管理桌面,使用vnc实现。在一些实施例中,该端口号可以随机生成的,从而保证访问地址的安全性。
64.在步骤218,所述代理服务器102接收目标服务器的资源申请成功响应消息,根据该资源申请成功响应消息以及所述代理服务器102的访问地址(ip地址),可以组织成一个可以同时完成远程开发和管理的地址,并可以向所述用户返回用于远程开发和管理的访问地址,以使所述用户基于所述用于远程开发和管理的访问地址进行远程开发和管理。
65.如图2b所示,该用于远程开发和管理的访问地址可以显示在界面220中,从而向用户端200显示资源申请成功信息,并使用户可以在界面220中查看已申请资源,并可以基于该访问地址通过本地浏览器来进行远程开发和管理。可以看出,该访问地址中包含了远程开发端口信息和远程管理端口信息,从而用户可以使用一个远程地址同时完成远程开发和管理工作。作为一个可选实施例,用户还可以在界面的“开发环境”资源列表(图中未示出)中管理已申请资源,可完成资源释放、数据上传下载等。资源释放、数据上传下载的流程与前述申请资源的流程类似,在此不再赘述。
66.如图2b所示,界面220中可以展示已申请资源,当用户需要使用该资源来进行软件
开发或管理时,可以点击对应的块状区域222,从而在用户端200的浏览器地址栏中自动输入对应的访问地址202,从而进入开发与管理界面300,如图3a所示。
67.如图3a所示,在界面300中可以提供远程开发按钮302和远程管理按钮304,二者对应的端口是不同的。当用户点击远程开发按钮302或远程管理按钮304,用户端200可以相应生成远程开发请求或远程管理请求,并发送到代理服务器102。代理服务器102的开发后台系统可以接收用户的远程开发请求或远程管理请求,并向用户提供远程开发界面或远程管理界面,并展示在开发/管理页面306中如图3b和图3c所示。然后,用户就可以基于开发/管理页面306来进行软件开发或管理(或调试)。
68.作为一个可选实施例,用户可以通过任意点击远程开发按钮302或远程管理按钮304来实现开发页面和管理页面的自由切换。
69.在一些实施例中,代理服务器102向用户端200提供界面220/300的过程可以由代理服务1022来实现。以下以nginx代理服务为例进行说明。
70.首先,可以在192.168.1.101上启动nginx代理容器,端口为1000,index.html为开发的静态页面,并启动以下命令:
71.docker run-p 1000:80-v index.html:/usr/share/nginx/html/index
‑‑
name nginx。
72.然后,当用户在浏览器中点击界面220的块状区域222,相当于在浏览器地址栏输入以下地址:
73.http://192.168.1.101:1000/index.html?ip=192.168.1.102&dport=1001&mpor t=1002。
74.接着,index.html页面300使用javascript脚本解析上述地址中的ip、dport、mport三个参数,并生成:
75.远程开发地址:http://192.168.1.101:1000/192.168.1.102:1001,该远程开发地址与index.html页面300上的“远程开发”按钮302绑定,当访问该地址时nginx代理服务将请求转发到http://192.168.1.102:1001;
76.远程管理地址:http://192.168.1.101:1000/192.168.1.102:1002,该远程管理地址与index.html页面300上的“远程管理”按钮304绑定,当访问该地址时nginx代理服务将请求转发到http://192.168.1.102:1002。
77.在index.html页面300中,有一个iframe标签,点击“远程开发”、“远程管理”两个按钮302、304,可以修改iframe的src属性值为具体的连接地址,完成开发、管理页面切换。
78.这样,系统100就结合了nginx代理技术和docker技术,利用可视化界面暴露在线开发与管理端口,使得用户可以完成远程开发、调试、测试、数据管理等工作,方便开发阶段调试测试并节约硬件资源成本。这种方式很适合推广作为公司内部开发或测试部门的测试环境,而且由于docker镜像可以方便在公司内部分享,轻松实现迁移和扩展,可以快速的创建开发、测试所需的软硬件环境的容器。
79.由于docker是一个开源的应用容器引擎,可以轻松为应用程序创建轻量级、可移植、自给自足的容器,开发者可以打包应用程序及其依赖包到一个可移植的容器中,容器之间相互隔离互不干扰,也没有性能开销,可以很容易地在不同服务器上运行。开发者使用一个标准镜像构建一套开发环境完成开发、测试工作后,把开发代码打包到该镜像内构建成
新的镜像,运维人员使用该镜像完成部署。docker启动速度快,可以大量的节约开发、测试、部署时间。
80.由于各资源服务器可以具有不同的硬件资源,当docker容器运行在具有不同硬件资源的资源服务器上时,就可以使用不同硬件资源的开发环境来实现软件的远程开发、调试。特别是,ai算法要求不同型号gpu进行开发测试时,该ai算法可以在系统100的不同型号的资源服务器中并行处理,解决了环境兼容性问题,也提升了执行效率。解决了ai算法开发、测试过程中工作效率低、工作量大,数据管理困难的问题。
81.在上述实施例所提到的每个docker容器中,可以同时启动一个vnc管理服务,开发者在浏览器中输入管理服务url地址,可实时完成对算法开发中的文件预览、数据管理、模型管理等操作,进行远程开发、调试及测试。
82.并且,为了保证n个(资源服务器个数)开发环境下,共享一套代码,本公开实施例的数据存储服务器106中还可以部署网络文件系统(nfs),在n个gpu资源服务器上完成共享目录挂载,在各环境启动docker容器时,也需要把该服务器上的目录挂载到容器中,从而实现共享代码、共享数据,提高了开发人员的开发效率。
83.为了保障代码及数据安全,在n个gpu资源容器启动时,还可以配置远程开发url密码,开发者在输入正确密码才能进行远程开发。
84.开发完成后,数据及代码都会留下网络文件系统(nfs)的共享目录中,退出开发环境即可完成容器资源释放。开发完成后可通过共享的网络文件系统(nfs)查看或下载远程代码、日志及相关数据文件。同时,使用者需求、gpu资源与ip地址映射关系、使用者申请记录都可以持久化到网络文件系统(nfs)中,以便后续查询。
85.需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
86.需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
87.本公开实施例还提供了一种计算机设备,用于实现上述的方法210。图4示出了本公开实施例所提供的示例性计算机设备400的硬件结构示意图。计算机设备400可以用于实现图1的代理服务器102或资源服务器104a~104c。在一些场景中,该计算机设备300,也可以用于实现图1的数据存储服务器106和终端设备200。
88.如图4所示,计算机设备400可以包括:处理器402、存储器404、网络模块406、外围接口408和总线410。其中,处理器402、存储器404、网络模块406和外围接口408通过总线410实现彼此之间在计算机设备400的内部的通信连接。
89.处理器402可以是中央处理器(central processing unit,cpu)、图像处理器、神经网络处理器(npu)、微控制器(mcu)、可编程逻辑器件、数字信号处理器(dsp)、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路。
处理器402可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器402还可以包括集成为单一逻辑组件的多个处理器。例如,如图4所示,处理器402可以包括多个处理器402a、402b和402c。
90.存储器404可以配置为存储数据(例如,指令、计算机代码等)。如图4所示,存储器404存储的数据可以包括程序指令(例如,用于实现本公开实施例的方法的程序指令)以及要处理的数据(例如,存储器可以存储其他模块的配置文件等)。处理器402也可以访问存储器404存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器404可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器404可以包括随机访问存储器(ram)、只读存储器(rom)、光盘、磁盘、硬盘、固态硬盘(ssd)、闪存、存储棒等。
91.网络模块406可以配置为经由网络向计算机设备400提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、wifi、近场通信(nfc)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。
92.外围接口408可以配置为将计算机设备400与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
93.总线410可以被配置为在计算机设备400的各个组件(例如处理器402、存储器404、网络模块406和外围接口408)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(usb端口、pci-e总线)等。
94.需要说明的是,尽管上述计算机设备400的架构仅示出了处理器402、存储器404、网络模块406、外围接口408和总线410,但是在具体实施过程中,该计算机设备400的架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述计算机设备400的架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
95.基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的方法210。
96.本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
97.上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的方法210,并且具有相应的方法实施例的有益效果,在此不再赘述。
98.基于同一发明构思,与上述任意实施例方法210相对应的,本公开还提供了一种计算机程序产品,其包括计算机程序。在一些实施例中,所述计算机程序由一个或多个处理器可执行以使得所述处理器执行所述的方法210。对应于方法210各实施例中各步骤对应的执
行主体,执行相应步骤的处理器可以是属于相应执行主体的。
99.上述实施例的计算机程序产品用于使处理器执行如上任一实施例所述的方法210,并且具有相应的方法实施例的有益效果,在此不再赘述。
100.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
101.另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
102.尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。
103.本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1