什么是ZeroVM虚拟化?

我在使用ZeroVM时遇到了一些麻烦。

假设我想运行Wordpress。 一种select是租用运行VMWare,Virtualbox,Xen,CoreOS或类似软件的托pipe虚拟服务器。 在这种情况下,正在虚拟化的是服务器及其硬件。 一旦configuration了虚拟服务器,我就可以SSH连接,启动和停止服务,重启机器等。

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

继续我上面的例子, 我将如何使用ZeroVM运行Wordpress? 这样做有什么好处呢?

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

ZeroVM主页说:

对ZeroVM应用程序(或zapp)的每个请求都会导致独立实例的产生。 每个实例都是隔离的,安全的,在5毫秒以内旋转,完成请求后被破坏。 ZeroVM的速度来自于每个实例仅虚拟化运行单个进程所需的内容。

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

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

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

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

简而言之,ZeroVM首先validation要运行的应用程序,然后简单地执行它。 在执行时,应用程序基本上不会有额外的开销 – 没有虚拟机。

为了validation一个应用程序,它必须交叉编译成x86机器代码的特殊forms。 这种特殊的forms具有可以被静态validation为“安全”的好处。 除此之外,“安全”意味着代码不会跳转到由ZeroVM提供的特定内存段之外的地址。 程序也可以不调用正常的系统调用,它只能调用由ZeroVM提供的非常窄的系统调用接口。 此validation来自Google的Native Client项目。

我将如何使用ZeroVM运行Wordpress? 这样做有什么好处呢?

原则上可以交叉编译PHP解释器的C程序。 然后,ZeroVM可以启动沙盒中的PHP解释器,并将其组成WordPress的PHP文件。 ZeroVM提供只读内存文件系统,这可以用来从中读取SQLite数据库。 这会给你一个只读的WordPress网站 – 不是非常令人兴奋的:-)

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

想象一下,你有100万电子邮件,你需要通过search。 邮件存储在OpenStack Swift或Amazon S3等块存储中。 这意味着物理文件存储在一些存储服务器上。 传统上,您需要将所有邮件都下载到某些计算节点上,以便search它们。 使用ZeroVM及其与Swift的集成 ,您可以将代码发送到数据 。 这是可能的,因为与庞大的虚拟机映像相比,代码很小(几兆字节),并且因为在ZeroVM沙盒中执行不受信任的代码是安全的。

因此,ZeroVM是针对高度可扩展的架构而devise的,每个请求都在不同的数据块上运行。

对于一个WordPress站点来说,这可能意味着应该将每个博客文章存储在一个单独的数据片段中,并且有专门负责每个文章的ZeroVM实例。 目前,文件系统是只读的,但有计划让它读写,负责给定博客文章的ZeroVM实例可以处理注释等事情。 您需要一个负载均衡器,才能正确路由stream量。 结果是一个非常不同的体系结构比当前的WordPress,但更可扩展的。 实际上,实施这个目前是作为一个读者的练习。

似乎是最先进的。 相比之下,Rackspace对LXC的挖掘是“不安全的”,但直到白皮书出现在这个话题之前,我才会坚持下去。

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

来自: Info World “ZeroVM和像Docker这样的项目之间可能存在一些明显的比较,但是意图有点不同,Docker是关于通过各种环境进行部署的打包,ZeroVM更多的是为应用提供虚拟化以一种轻量级的方式在一个给定的环境中,一个完整的VM解决scheme将是过度的,而不是真的需要。

  • 我将如何使用ZeroVM运行Wordpress?

想必你会需要Apache为ZeroVM编译。 我不确定有多lessWordpress代码库会在这种情况下崩溃。

  • 有什么好处?

Rackspace的营销部门将为此做出最好的performance: 在这里

  • 我将面临什么挑战? (为了未来读者的利益而添加)

软件/平台的优势在于,所有与运行stream血边缘软件相关的试验和难点都适用。 (包括缺乏庞大的支持用户群)。 这也是一个新的“ 平台”。软件开发人员正在习惯于处理虚拟化平台……但这是一个全新的虚拟化品种,超越了硬件(VMWare,OracleVM,HyperV)和内核虚拟化(OpenVZ)。如果在游戏早期没有像预期的那样工作,不要感到惊讶。

继续我上面的例子,我将如何使用ZeroVM运行Wordpress? 这样做有什么好处呢?

ZeroVM本质上是构buildPaaS的平台。 所以上面的问题在“ZeroVM世界”中没有什么意义。 但是让我们假设有人为您安装了ZeroVM基础架构(称为“Provider”)。 然后,您可以在该基础架构之上创build自己的PaaS或SaaS。 在WordPress的情况下:提供商可以在供应商的基础设施上运行任何代码,您可以运行WordPress,当您的代码运行时,您可以为其付费。 当你的代码没有运行 – 你不支付。 也就是说,当有人打开一个wordpress页面时,你会为这个请求付钱,在向用户发送回复之后 – 你停止付钱。 更重要的是,因为每个ZeroVM实例都会提供一个请求,所以您的WordPress站点本质上只需要为一个用户提供一个页面。 然后我认为你并不需要“WordPress”,因为WordPress现在是MySQL数据库的PHP接口,并且在一个用户和一个请求的情况下,你不需要任何集中的数据库。 等等。

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

是和不是。 取决于你想如何使用它。 如果每个请求是一个完全不同的应用程序,完全不同的代码库 – 那么是的,你将需要一个全新的过程。 但是,如果每个请求都是对PHP或WSGI Web应用程序的调用,那么ZeroVM可以通过节省平台的设置时间(例如,在WSGI应用程序的情况下设置文件系统+ python + wsgi),作为“守护程序” )。

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

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