Replies: 4 comments 15 replies
-
@geekeren 目前在 OpenSumi 中,针对后端进程是有一定的拆分的(如插件进程、调试进程、终端进程),对于 WebIDE 来说,前端的核心交互是与 WebSocket 的通信达成的,可以考虑独立部署前端资源,而将后端服务独立进行部署,进一步可将插件进程...等做部署拆分及弹性,这块目前我们内部已经应用上了,方案上是可行。 |
Beta Was this translation helpful? Give feedback.
-
@geekeren 多容器架构我们有对外做一些输出分享的,你可以看一下 |
Beta Was this translation helpful? Give feedback.
-
@Ricbet 多容器 opensumi 这边有标准化的部署方案吗 |
Beta Was this translation helpful? Give feedback.
-
ext.host.proxy 可以自定义,不需要用框架默认提供的: import { ExtHostProxy } from '@opensumi/ide-extension/lib/hosted/ext.host.proxy-base';
const extHostProxy = new ExtHostProxy({
socketConnectOpts: {
port: 12345,
},
});
extHostProxy.init(); 之后可以在另外一个容器里拉起这个代理进程。 共享目录存在的意义就是可以在 ideserver 进程启动的时候将插件进程和插件进程代理进程复制到一个地方可以让主研发容器读到,目前就是插件进程和插件进程代理进程。 PS:双容器不只是插件进程需要改造,终端也需要改造,因为 ideserver 默认终端读取的是 ideserver 容器的终端,这块改造逻辑和插件进程改造逻辑类似,在主研发容器有一个 pty 的代理进程,这块在@opensumi/ide-terminal-next也有类似的视线 |
Beta Was this translation helpful? Give feedback.
-
由于 IDE 后端使用独立容器运行,同时需要较高的资源保障。是否可以考虑将后端服务进行一定的进程拆分,使用容器弹性伸缩的方式来动态扩展计算资源。
当用户处于非活动状态时,可以保障个基本运行资源(比如 1核2G),比如调试、编译 等高资源资源的操作可以动态启动新的 docker 容器节点(比如 8核16G)去运行。
顺便提一点,用户浏览器端的 WebContainer 也可以作为弹性计算的节点类型之一,最好能和后端节点注册扩展方式保持同样的技术架构。
整体来讲,就是 opensumi 是一个可以动态扩展运行节点的分布式架构,根据运行时所需的资源大小进行弹性伸缩运行节点;节点形式包括 服务器的 docker / k8s 等容器节点 和 用户端浏览器的 web container
Beta Was this translation helpful? Give feedback.
All reactions