ZeroVM虚拟化了什么?


12

我在将头缠绕在ZeroVM上时遇到了一些麻烦。

假设我要运行Wordpress。一种选择是租用运行VMWare,Virtualbox,Xen,CoreOS或类似工具的托管虚拟服务器。在这种情况下,正在虚拟化的是服务器及其硬件。设置虚拟服务器后,我可以对其进行SSH,启动和停止服务,重新启动计算机等操作。

我在网上阅读的内容说ZeroVM对应用程序进行了虚拟化,但是我不明白这意味着什么。 ZeroVM是否提供类似于Docker的容器?

继续上面的示例,我将如何使用ZeroVM运行Wordpress?这样做会带来什么好处?

让我们将我的Wordpress示例扩展到共享托管环境。

ZeroVM主页显示:

对ZeroVM应用程序或zapp的每个请求都会产生一个独立的实例。每个实例都是隔离且安全的,在不到5毫秒的时间内就会旋转,并在完成请求后销毁。ZeroVM的速度来自每个实例仅虚拟化运行单个进程所需的实例。

这是否意味着对ZeroVM应用程序的每个请求都会产生一个新进程?如果在一台服务器上运行多个ZeroVM应用程序,会发生什么情况?如何将请求路由到正确的应用程序?

Answers:


9

好问题!我在ZeroVM团队中工作,希望我能帮助解决问题!

ZeroVM是否提供类似于Docker的容器?

不,不是。Docker使用LXC和其他内核功能来提供沙盒环境。ZeroVM完全在用户空间中运行,并将单个应用程序沙箱化。

简而言之,ZeroVM的工作原理是首先验证要运行的应用程序,然后简单地执行它。执行后,该应用程序运行时几乎没有额外的开销-它背后没有虚拟机。

为了验证应用程序,必须将其交叉编译为特殊形式的x86机器代码。这种特殊形式具有不错的属性,可以静态验证为“安全”。其中,“安全”是指代码不会跳转到ZeroVM提供的某个内存段之外的地址。该程序也不能调用正常的系统调用,它只能调用ZeroVM提供的非常狭窄的syscall接口。该验证来自Google的Native Client项目。

我将如何使用ZeroVM运行Wordpress?这样做会带来什么好处?

原则上,您可以交叉编译作为PHP解释器的C程序。然后,ZeroVM可以在沙箱中启动PHP解释器,并向其提供组成WordPress的PHP文件。ZeroVM提供了一个只读的内存文件系统,可用于从中读取SQLite数据库。那将为您提供一个只读的WordPress网站-并不十分令人兴奋:-)

但是,正如我所看到的,这不是ZerovM的主要用例。需要重写现有的大量数据库应用程序以与ZeroVM一起使用。ZeroVM更适用于要并行处理许多数据项的大规模可扩展系统。

假设您有1,000,000封电子邮件需要搜索。邮件存储在块存储中,例如OpenStack SwiftAmazon S3。这意味着物理文件存储在一定数量的存储服务器上。传统上,您需要将所有邮件拉到一定数量的计算节点上才能搜索它们。借助ZeroVM及其与Swift的集成,您可以将代码发送到数据。之所以可行,是因为与庞大的虚拟机映像相比,代码很小(大约几兆字节),并且可以安全地在ZeroVM沙箱中执行不受信任的代码。

因此,ZeroVM适用于高度可扩展的体系结构,其中每个请求都对不同的数据进行操作。

对于WordPress网站,这可能意味着应该将每个博客帖子存储在单独的数据中,并有一个专门的ZeroVM实例负责每个帖子。当前,文件系统是只读的,但是已经计划使其成为可读写的,并且负责给定博客文章的ZeroVM实例可以处理诸如注释之类的事情。您可能需要在前面安装一个能够适当路由流量的负载平衡器。结果是与当前WordPress截然不同的体系结构,但可伸缩性更高。实际执行此操作目前留给读者练习。


4

似乎是最前沿。Rackspace一直在比较LXC,因为它们比较“不安全”,但是直到白皮书上出现该主题之前,我都会保持判断力。

  • ZeroVM是否提供类似于Docker的容器?

来自:信息世界 “ ZeroVM与Docker之类的项目之间可能会进行一些明显的比较,但意图有所不同。Docker涉及的是通过各种环境进行打包的打包。ZeroVM的目的更多是为应用程序提供虚拟化方式在给定的环境中以轻量级的方式使用完整的VM解决方案,而实际上并不需要。”

  • 如何使用ZeroVM运行Wordpress?

大概您需要为ZeroVM编译Apache。我不确定在这种情况下会破坏多少Wordpress代码库。

  • 有什么好处?

Rackspace公司的营销部门将弥补这方面最好的情况:这里

  • 我将面对哪些挑战?(添加以供将来的读者使用)

该软件/平台处于前沿,因此与运行前沿软件相关的所有试验和难点都适用。(包括缺乏大量的支持用户)。它也是一个新的“ 平台”。软件开发人员已习惯于使用虚拟化平台……但这是除硬件(VMWare,OracleVM,HyperV)和内核虚拟化(OpenVZ)之外的一种全新的虚拟化。如果在游戏初期没有任何预期的效果,请不要感到惊讶。


2

继续上面的示例,我将如何使用ZeroVM运行Wordpress?这样做会带来什么好处?

ZeroVM本质上是构建PaaS的平台。因此,以上问题在“ ZeroVM世界”中意义不大。但是,我们假设有人为您安装了ZeroVM基础架构(将其称为“提供程序”)。然后,您可以在该基础架构之上创建自己的PaaS或SaaS。如果是WordPress:提供程序使您能够在提供程序的基础架构上运行任何代码,则可以在代码运行时运行WordPress-您需要为此付费。当您的代码未运行时-您无需付款。也就是说,当有人打开wordpress页面时,您将为请求付费,在响应发送给用户之后-您无需支付任何费用。不仅如此,由于每个ZeroVM实例将处理一个请求,因此您的WordPress网站实际上只需要为一个用户提供一页。然后,我认为您实际上并不需要“ WordPress”,因为WordPress现在是MySQL数据库的PHP接口,并且在有一个用户和一个请求的情况下,您不需要任何集中式数据库。等等。

这是否意味着对ZeroVM应用程序的每个请求都会产生一个新进程?

是的,没有。取决于您要如何使用它。如果每个请求都是一个完全不同的应用程序,并且具有完全不同的代码库-那么,是的,您将需要一个全新的流程。但是,如果每个请求都是对PHP或WSGI Web应用程序的调用,那么ZeroVM可以通过节省平台的设置时间(例如,在使用WSGI应用程序的情况下设置文件系统+ python + wsgi)来充当“守护程序”,从而更快地处理请求。 )。

如何将请求路由到正确的应用程序?

现在,基础架构已集成Swift对象存储中。请求Swift对象将触发特定代码段的执行。或对特定URL的POST将触发POST请求有效负载的执行。当然,任何其他类型的集成都是可能的,例如集成到Web服务器或分布式队列中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.