一种虚拟编程仿真管理平台
文献发布时间:2023-06-19 11:35:49
技术领域
本发明涉及计算机技术领域,具体涉及一种虚拟编程仿真管理平台。
背景技术
在线运行代码就像为每个用户提供对计算机的在线公共访问权限。由于每个用户提供一台计算机的成本以及它所隐含的所有安全问题,因此它很复杂。
目前,存在许多用于在线运行代码的解决方案,但是大多数解决方案所支持的功能非常有限。它们通常允许在单击RUN时创建的临时OS(容器)中运行脚本,并在代码执行结束时将其销毁。一些公司直接将在线服务公开为工具,而其他公司则将其嵌入在线学习平台中。
更高级的服务不仅允许运行代码,而且还允许访问整个会话的临时OS(容器),因此用户可以运行多个服务,甚至更改执行上下文。这种服务通常是围绕开源笔记本技术构建的。
所有提供编程环境的平台都非常适合研究脚本,Web开发或AI,但不适用于机器人技术。这是因为机器人技术不仅需要操作系统访问权限,而且还需要并行运行世界模拟和多个过程,其中一些过程依赖于图形工具。学习机器人技术时,需要一个带有终端、文件夹和窗口的真实桌面。
发明内容
针对现有技术中的缺陷,本发明提供一种虚拟编程仿真管理平台,用户可以学习与编程、机器人或人工智能相关的任何东西,而无需在自己的计算机上安装任何软件。
一种虚拟编程仿真管理平台,包括服务器集群和至少一个客户端,所述服务器集群包括主控节点和至少一个工作节点;其中,
所述客户端通过应用程序向所述主控节点发送编程环境请求,建立与所述主控节点的连接,并通过所述应用程序访问所述主控节点提供的编程环境服务;
所述主控节点接收并处理所述编程环境请求,根据所述编程环境请求在所述工作节点中建立虚拟编程环境,并将所述虚拟编程环境与所述应用程序进行链接。
进一步,所述虚拟编程环境由一个容器化的UBUNTU操作系统组成。
进一步,每个所述虚拟编程环境都在其自身的虚拟子网中被沙盒化。
进一步,所述编程环境请求携带有用户令牌;
所述主控节点包括前门Haproxy模块和Manager Service模块,所述服务器集群由Manager Service模块进行管理组织,通过添加或删除工作节点来管理服务器集群负载。
进一步,所述Manager Service模块通过添加或删除工作节点来管理服务器集群负载,具体包括:
步骤S300:获取当前工作节点的数量和容器的数量,执行步骤S301;
步骤S301:计算当前服务器集群可以支持的容器的最小阈值和最大阈值,判断当前容器的数量是否大于所述最大阈值,若是,执行步骤S302;若否,执行步骤S307;
步骤S302:计算当前容器数量和工作节点数量,执行步骤S303;
步骤S303:将所有终止状态的工作节点恢复为INSWARM状态,执行步骤S304;
步骤S304:用工作节点数量来执行playbook scaleup-worker的创建,判断创建是否成功,若是,执行步骤S305;若否,执行步骤S306;
步骤S305:设置工作节点的状态为INSWARM状态;
步骤S306:设置工作节点的状态为失败状态;
步骤S307:判断当前容器的数量是否小于所述最小阈值,若是,执行步骤S308;若否,执行步骤S311;
步骤S308:获取容器负载为零的工作节点,判断该工作节点的状态是否为“已启动”状态或INSWARM状态;若是,执行步骤S309;若否,执行步骤S310;
步骤S309:将该工作节点的状态标记为终止状态;
步骤S310:判断该工作节点的状态是否为终止状态,若是,执行ANSIBLE playbookscaledown-worker销毁最后创建的工作节点,将工作节点的状态设置为终止状态;
步骤S311:将所有终止状态的工作节点的状态更改为INSWARM状态,继续执行步骤S300。
进一步,所述应用程序为web应用程序。
进一步,所述主控节点接收并处理所述编程环境请求,具体包括:
步骤S100:使用外部服务检查用户令牌是否存在,若否,返回http json错误;若是,执行步骤S101;
步骤S101:检查用户是否有正在运行的编程环境,若否,返回http json环境状态;若是,执行步骤S102;
步骤S102:检查服务器集群是否达到最大限制,若否,返回http json错误;若是,执行步骤S103;
步骤S103:以唯一ID、用户令牌和状态将所述编程环境请求储存在队列中,将所述状态设定为“请求”状态,执行步骤S104;
步骤S104:返回http json环境状态。
进一步,所述队列为mysql队列。
进一步,所述根据所述编程环境请求在所述工作节点中建立虚拟编程环境,具体包括:
步骤S200:轮询所述队列中可运行的编程环境请求,并判断编程环境请求的状态是否为“请求”状态,若否,执行步骤S201;若是,执行步骤S203;
步骤S201:判断编程环境请求的状态是否为“已启动”状态,若否,执行步骤S200;若是,执行步骤S202;
步骤S202:http调用容器内部的api.GetStatus文件,设置编程环境请求的状态为“运行”状态;
步骤S203:查找到负载最小的工作节点,若否,执行步骤S204;若是,执行步骤S205;
步骤S204:设置编程环境请求的状态为“失败”状态;
步骤S205:设置编程环境请求的状态为“请求待定”状态,执行步骤S206;
步骤S206:以工作节点名称和用户令牌执行ANSIBLE手册并部署沙盒堆栈,执行步骤S207;
步骤S207:判断部署沙盒堆栈是否成功,若否,执行步骤S204;若是,执行步骤S208;
步骤S208:设置编程环境请求的状态为“已开始”状态,执行步骤S209;
步骤S209:触发docker-proxy-flow新容器事件并使用用户令牌向前门Haproxy模块添加新路由。
进一步,将所述虚拟编程环境与所述应用程序进行链接,具体包括:将所述虚拟编程环境嵌入到所述Web应用程序中,在所述客户端的显示窗口上加载显示。
本发明的有益效果体现在:
第一,本发明的虚拟编程仿真管理平台为用户提供了具有AI功能、编程环境功能齐全的机器人虚拟编程环境,用户无需在自己的计算机上安装任何软件,只需使用其互联网浏览器访问网络应用即可访问此虚拟编程环境,可以在该虚拟编程环境中学习关于编程机器人技术或AI相关技术的知识。
第二,本发明的虚拟编程仿真管理平台自由度高,用户可以可从Web应用程序访问的完整机器人的桌面,其中包括一个仿真环境,可用于测试不同虚拟机器人功能的结果,允许用户安装有授权来源的新库。
最后,本发明的虚拟编程仿真管理平台可扩展性强、安全性高和成本效益高。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为本发明实施例提供的一种虚拟编程仿真管理平台的系统结构框图;
图2为本发明实施例提供的一种虚拟编程仿真管理平台的主控节点接收并处理编程环境请求的流程图;
图3为本发明实施例提供的一种虚拟编程仿真管理平台的主控节点建立虚拟编程环境的流程图;
图4为为本发明实施例提供的Manager Service模块通过添加或删除工作节点来管理服务器集群负载的流程图;
图5为本发明实施例提供的Jupyter Notebook服务嵌入到Web应用程序的界面图;
图6为本发明实施例提供的使用两个内嵌框架嵌入到Web应用程序的界面图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当…时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
如图1所示,本发明实施例提供的一种虚拟编程仿真管理平台,包括服务器集群和至少一个客户端,所述服务器集群包括主控节点和至少一个工作节点。其中,所述客户端通过应用程序向所述主控节点发送编程环境请求,建立与所述主控节点的连接,并通过所述应用程序访问所述主控节点提供的编程环境服务。所述主控节点接收并处理所述编程环境请求,根据所述编程环境请求在所述工作节点中建立虚拟编程环境,并将所述虚拟编程环境与所述应用程序进行链接。
主控节点和工作节点都具有相同的最小配置,即4vcpu+16GB内存+32GB存储空间。主控节点包括前门Haproxy模块和Manager Service模块,服务器集群由Manager Service模块进行管理组织,通过添加或删除工作节点来管理服务器集群负载。所有针对ManagerService模块或虚拟编程环境本身提出的请求都要经过前门Haproxy模块反向代理。
具体的,如图4所示,所述Manager Service模块通过添加或删除工作节点来管理服务器集群负载,具体包括:
步骤S300:获取当前工作节点的数量和容器的数量,执行步骤S301;
步骤S301:计算当前服务器集群可以支持的容器的最小阈值和最大阈值,判断当前容器的数量是否大于所述最大阈值,若是,执行步骤S302;若否,执行步骤S307;
步骤S302:计算当前容器数量和工作节点数量,执行步骤S303;
步骤S303:将所有终止状态的工作节点恢复为INSWARM状态,执行步骤S304;
步骤S304:用工作节点数量来执行playbook scaleup-worker的创建,判断创建是否成功,若是,执行步骤S305;若否,执行步骤S306;
步骤S305:设置工作节点的状态为INSWARM状态;
步骤S306:设置工作节点的状态为失败状态;
步骤S307:判断当前容器的数量是否小于所述最小阈值,若是,执行步骤S308;若否,执行步骤S311;
步骤S308:获取容器负载为零的工作节点,判断该工作节点的状态是否为“已启动”状态或INSWARM状态;若是,执行步骤S309;若否,执行步骤S310;
步骤S309:将该工作节点的状态标记为终止状态;
步骤S310:判断该工作节点的状态是否为终止状态,若是,执行ANSIBLE playbookscaledown-worker销毁最后创建的工作节点,将工作节点的状态设置为终止状态;
步骤S311:将所有终止状态的工作节点的状态更改为INSWARM状态,继续执行步骤S300。
用户向Manager Service模块请求虚拟环境后,Manager Service模块将根据工作节点的负载选择满足负载要求的工作节点,并在满足负载要求的工作节点上生成用于运行虚拟编程环境的容器。
所述应用程序为web应用程序,用户通过Web应用程序请求和访问虚拟编程环境。所述编程环境请求携带有用户令牌。具体的,所述虚拟编程环境由一个容器化的UBUNTU操作系统组成,该操作系统公开了要交互的不同Web服务。所述虚拟编程环境将对其可以声明的共享cpu、内存、存储和网络具有逻辑限制。每个所述虚拟编程环境都在其自身的虚拟子网中被沙盒化,用户只能通过NGINX反向代理网关访问授权的Web服务。
具体的,如图2所示,所述主控节点接收并处理所述编程环境请求,具体包括:
步骤S100:使用外部服务检查用户令牌是否存在,若否,返回http json错误;若是,执行步骤S101;
步骤S101:检查用户是否有正在运行的编程环境,若否,返回http json环境状态;若是,执行步骤S102;
步骤S102:检查服务器集群是否达到最大限制,若否,返回http json错误;若是,执行步骤S103;
步骤S103:以唯一ID、用户令牌和状态将所述编程环境请求储存在队列中,将所述状态设定为“请求”状态,执行步骤S104;
步骤S104:返回http json环境状态。
进一步,所述队列为mysql队列。
进一步,如图3所示,所述根据所述编程环境请求在所述工作节点中建立虚拟编程环境,具体包括:
步骤S200:轮询所述队列中可运行的编程环境请求,并判断编程环境请求的状态是否为“请求”状态,若否,执行步骤S201;若是,执行步骤S203;
步骤S201:判断编程环境请求的状态是否为“已启动”状态,若否,执行步骤S200;若是,执行步骤S202;
步骤S202:http调用容器内部的api.GetStatus文件,设置编程环境请求的状态为“运行”状态;
步骤S203:查找到负载最小的工作节点,若否,执行步骤S204;若是,执行步骤S205;
步骤S204:设置编程环境请求的状态为“失败”状态;
步骤S205:设置编程环境请求的状态为“请求待定”状态,执行步骤S206;
步骤S206:以工作节点名称和用户令牌执行ANSIBLE手册并部署沙盒堆栈,执行步骤S207;
步骤S207:判断部署沙盒堆栈是否成功,若否,执行步骤S204;若是,执行步骤S208;
步骤S208:设置编程环境请求的状态为“已开始”状态,执行步骤S209;
步骤S209:触发docker-proxy-flow新容器事件并使用用户令牌向前门Haproxy模块添加新路由。
本实施例中,当请求虚拟编程环境时,Manager Service模块将检查所有工作节点,并查看哪一个工作节点的负载较小,可以在其中创建新环境。
具体的,将所述虚拟编程环境与所述应用程序进行链接,具体包括:将所述虚拟编程环境嵌入到所述Web应用程序中,在所述客户端的显示窗口上加载显示。
下面将以Jupyter Notebook服务嵌入到Web应用程序中作为示例进行说明。
如图5所示,Jupyter Notebook服务直接托管在编程环境中。它使用以下URL通过
在此URL中,传递的是在请求期间使用的相同用户令牌和所需的服务名称:jupyter。
然后,该服务将处理其余的通信。对于Jupyter Notebook服务,该服务在很大程度上依赖于Web Socket技术来与其后端通信。所有Web套接字请求将如下所示:
http://mydomain.com/usertoken123/proxy/jupyter/websocket/...
下面如图6所示,是使用两个内嵌框架嵌入到Web应用程序中的Web终端和Web桌面服务的另一个示例:
它们也都依赖于Web套接字,它将产生这种请求:
http://mydomain.com/usertoken123/proxy/webterm/websocket/...
http://mydomain.com/usertoken123/proxy/webdesktop/websocket/...
综上所述,本发明的虚拟编程仿真管理平台为用户提供了具有AI功能、编程环境功能齐全的机器人虚拟编程环境,用户无需在自己的计算机上安装任何软件,只需使用互联网浏览器访问网络应用即可访问此虚拟编程环境,可以在该虚拟编程环境中学习关于编程机器人技术或AI相关技术的知识。
本发明的虚拟编程仿真管理平台自由度高,用户可以可从Web应用程序访问的完整机器人的桌面,其中包括一个仿真环境,可用于测试不同虚拟机器人功能的结果,允许用户安装有授权来源的新库。
最后,本发明的虚拟编程仿真管理平台安全性高、可扩展性强和成本效益高。
安全性:虚拟编程环境默认情况下无法访问互联网。每个虚拟编程环境都受到沙盒的保护,该沙盒仅允许来自允许的应用程序的流量。虚拟编程环境通过安全令牌链接到用户。
可扩展性:创建虚拟编程环境时,限制了它们可以使用的最大vcpu/ram/存储/网络。它们还分布在不同的工作节点上,这些工作节点都对它们可以接受的容器数量进行了最大限制(根据容器限制计算)。这种设计允许按比例缩放,并避免了容器可能损害整个结构并打扰其他用户的情况。
达到上述限制的虚拟编程环境将引发错误,显示不良性能,或者在最坏的情况下,直到管理器将其销毁之前,它都将变得无响应。
成本效益:虚拟编程环境具有最长的使用寿命,如果未使用,则会自动销毁。例如,每个虚拟编程环境的启动时间为15分钟,随着时间的流逝而减少。如果虚拟编程环境的寿命达到了软限制(还剩3分钟),并且用户仍在使用它,则将请求额外的时间(只能请求X分钟的时间)。当寿命达到0时,虚拟编程环境将被破坏。这种设计避免了虚拟编程环境运行数天的情况,而且避免了过于频繁地重新创建新的虚拟编程环境。如果用户在短时间内离开该服务并返回,则他的虚拟编程环境仍然可用。
根据负载自动分配或销毁人工节点。即使人工节点处于空闲状态,工作节点运行也会产生成本。为了防止这种情况,只有1个工作节点在全天24小时不间断运行,并且当快要达到最后一个工作节点的工作负载上限时,将添加一个新的工作节点。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
- 一种虚拟编程仿真管理平台
- 一种跟踪虚拟机操作的方法、装置及虚拟机管理平台