首页 > 其他分享 >WebVM:无需后端服务器直接在浏览器中实现的无服务器环境

WebVM:无需后端服务器直接在浏览器中实现的无服务器环境

时间:2023-09-09 18:11:40浏览次数:32  
标签:CheerpX WebAssembly 浏览器 x86 WebVM 服务器

https://www.jdon.com/58800.html

我们创建了一个无服务器的虚拟 Linux 环境,在浏览器中运行未经修改的 Debian 二进制文件。这由 WebAssembly 虚拟化平台 CheerpX 提供支持。
WebAssembly 为浏览器世界带来了真正的创新,以及视角和责任的转变。
我们相信 JIT编译的 WebAssembly 是实现在浏览器中运行任何应用程序愿景的真正关键。
们的使命是让现有应用程序能够运行:

  • 无需修改;
  • 无需重新编译;
  • 完全客户端。


几个月前,我们发布了REPL 演示,证明我们的 CheerpX x86-to-WebAssembly 虚拟化技术可用于在浏览器中运行多个不同的 REPL,而无需任何特定于语言的干预。
今天,我们自豪地宣布朝着实现我们的愿景迈出了重要一步:WebVM,一个在浏览器中运行的基于 Debian 的完整虚拟机,由 CheerpX 提供支持。
 
什么是 CheerpX?
CheerpX是一个 x86 虚拟机,用 C++ 编写,并通过Cheerp编译器编译为 JavaScript 和 WebAssembly 的组合。
CheerpX 已经开发了三年多,它已经作为CheerpX for Flash的一部分在生产中使用,这是一种运行旧版 Adob​​e Flash 内容的企业解决方案。
在高层次上,CheerpX 由

  • 一种高效的 x86 解释器,用于运行很少执行的代码并发现热代码的结构,以指导 JIT 编译
  • 一个复杂的 x86-to-Wasm JIT 编译器,可以从热 x86 代码动态生成新的 WebAssembly 模块。尽管 JIT 编译器有一些 x86 专用逻辑,但它大多与目标无关。
  • Linux 系统调用仿真层用于弥合未修改的 x86 二进制文件和 Web 环境之间的差距。
  • 一个基于块的文件系统后端,基于 Ext2。磁盘映像是通过 HTTP 和 CloudFlare CDN 分发的静态资源。选择 Ext2 是因为它经过验证的设计和可扩展性,我们可以随着时间的推移轻松扩展其功能,以兼容更现代的 Ext3 和 Ext4 格式,而无需完全重写。
  • 基于 IndexedDB的修改块的隐私保护存储。这种仅限客户端的技术允许对文件系统所做的任何修改都是持久的,但仅限于浏览器。我们不会看到或存储您的任何数据。


CheerpX 是一个非常复杂的系统,具有许多活动部件。它可以正确处理棘手的情况,例如自修改代码、多线程、多处理和进程间通信。尽管有这种复杂性,CheerpX 已经达到了高度的稳定性。
现在感觉是发布我们迄今为止最复杂的演示的最佳时机:WebVM。
 
什么是 WebVM?
如果您看过我们之前的 REPL 演示,您可能会注意到 WebVM 在概念上并没有太大的不同。使用相同的核心组件:

  • CheerpX作为执行引擎。JavaScript API,尤其是 cx.run(…),用于启动(并在需要时重新启动)bash进程。然后 bash 可以在用户键入命令时启动其他进程。
  • Xterm.js作为主要的 UI 组件。Xterm.js 负责解释vim 等应用程序使用的终端转义,并将用户输入发送回 CheerpX。输入通过应用程序的标准输入文件描述符提供给应用程序。
  • 一个 Debian buster 磁盘映像,采用 ext2 格式并安装了一堆软件包。这分布在 CDN 上,以最大限度地提高可扩展性。


WebVM 实际上是无服务器的,并且没有活动的服务器端组件。所有用户都从 CDN 访问同一个磁盘映像,他们的个人更改被本地保存到浏览器。这意味着我们可以以最少的成本和资源支持甚至数百万并发用户。

标签:CheerpX,WebAssembly,浏览器,x86,WebVM,服务器
From: https://www.cnblogs.com/chinasoft/p/17689938.html

相关文章

  • 【浏览器按F12打不开开发者工具(兼容模式打开处)】
    操作首先选择浏览器的三个点样子的图标,不同浏览器位置可能不同,这里以edge为例接下来在更多工具中寻找到开发人员工具,即可顺利的打开网页的源码补充有时页面需要使用兼容模式打开,其选项也在此处,选择在IE模式下打开即可......
  • 服务器上安装kubectl
    1、登录服务器2、创建~/.kube文件夹3、cd~/.kube4、下载或创建k8s集群的config文件:wget config文件连接apiVersion:v1kind:Configclusters:-cluster:api-version:v1insecure-skip-tls-verify:trueserver:"https://172.172.241.170:8080/r/projects/1a9/......
  • 设置一台新服务器允许root用户登录
    操作如下:1.使用ubuntu用户登陆2.运行sudopasswdroot 要求输入密码和确认密码3.sudovi/etc/ssh/sshd_config修改ssh配置找到 #PermitRootLoginprohibit-password修改为 PermitRootLoginyes按esc:wq!保存退出4.重启ssh服务sudoservicesshrestart......
  • linux DNS服务器配置
    1、yuminstall-ybind   安装域名服务vim/etc/named.conf这个服务使用 /etc/named.conf 作为配置文件。BIND在那个文件中使用像下面这样的一些语句:options:用于全局BIND配置。logging:配置哪些需要记录,哪些需要忽略。我推荐你看看 Linuxsyslogserver。zone:定......
  • idrac登陆dell服务器 提示ssl错误解决方法
    1、使用idrac登陆dell服务器,提示ssl登陆错误,SSLmisserror错误2、勾选SSL以及TLS全选(兼容全部加密证书类型)3、edge使用IE模式访问......
  • ES6 Module模块,在vsCode中已服务器模式运行HTML文件
    操作步骤如下:一、安装LiveServer插件二、点击扩展设置三、设置liveserver默认打开浏览器为“chrome”四、配置-工作区五、在HTML文件中,右键选择"openwithLiveServer" 输出结果 ......
  • live555流媒体服务器在解决客户端异常掉线后没有释放相应资源问题的解决方法
    我们在基于live555研发流媒体服务器EasyRTSPServer,经过一年多的商用,已经表现得非常稳定了,今天有个客户反馈,在客户端突然断电后,EasyRTSPServer中有部分资源没有释放。分析问题压力测试都已经做过了,包括7x24小时不间断的频繁断连,都没有问题。突然断电….这个嘛…还没试过。其实这......
  • live555开源流媒体服务器实现直播秒开的构思
    live555开源流媒体服务器实现的是视频和音频的数据传输,在客户端请求音视频后,由上层调用程序将音视频数据推进队列,待和客户端的RTSP交互完成后,再通过RTP将音视频数据发给客户端;在客户端往往要2-3秒后才出视频画面;需求分析:我们封装实现的EasyRTSPServer是基于live555改造而来,在......
  • 基于live555开源流媒体服务器开发的EasyRTSPServer实现主动关闭指定通道session的方法
    我们在基于live555研发音视频流媒体服务器时,在某些特定场景下,需要主动关闭某一通道对应的所有连接,即要立即close所有观看当前视频通道的所有session;解决方案1.主动关闭通道APIEasy_APIEasy_I32Easy_APICALLEasyRtspServer_ResetChannel(EASY_CHANNEL_HANDLEchannelHandle);......
  • 基于live555开源流媒体服务器开发的EasyRTSPServer实现自定义数据与音视频数据的同步
    基于live555开源流媒体服务器开发的EasyRTSPServer实现的是视频和音频的数据传输,而随着智能分析的应用越来越多,如何将分析结果传给客户端也势在必行了。分析问题EasyRTSPServer基于live555改造而来,通过分析代码可以知道,其实它已经自带了metadata的传输.我们要做的就是怎样将这个me......