QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Hyper:基于 Hypervisor 的容器化解决方案

  • 2015-06-02
  • 本文字数:2389 字

    阅读完需:约 8 分钟

近日,初创公司 HyperHQ 发布了他们的开源项目 Hyper ,Hyper 是一个可以在 hypervisor 上运行 Docker 镜像的引擎,它融合了 Docker 容器和虚拟机的优点,旨在打造一个性能更好、更安全的引擎。Hyper 与 Docker 的核心区别在于 Hyper 没有使用 Container 技术,而是通过 VM 直接运行 Docker 镜像,它是一个完全基于虚拟化的解决方案。

InfoQ:能简单介绍下 Hyper 吗?为什么你们要做 Hyper?

王旭: Hyper 是一个可以在 hypervisor 上,不安装完整操作系统,直接运行 Docker Image 的运行引擎。Hyper 可以在 hypervisor 上运行一组相关的 Docker Image,而不是一个,也正是 Kubernetes 所阐述的 Pod 的概念——不是一个虚机,不是一个胖容器,而是一组关联的容器。再进一步说,Hyper 致力于成为一个平台中立、hypervisor 中立的执行引擎,除了支持 KVM/QEMU 外,接下来 Hyper 还将会支持 Xen。

Docker 的发明,给每个人以震撼,同时也有遗憾。当你看到不同的创新的时候,心境并不完全相同,对于有些,你感慨它如此卓越新颖,着实叹服;对于有些,你感慨它工作量如此巨大,令人景仰;而对于 Docker 这些,我想,很多人的感慨都是——怎么不是我。

Docker 的影响是如此深远,它以一种 App-Centric 的完整环境封装,串联了开发、测试、交付的各个环节,从此 OS 与应用被彻底解耦了,这绝对是开源 / 技术创业的一个典范。然而,Docker 使用的技术却“毫无新意”,UnionFS 已经在 Live CD 中应用了近 10 年,容器,即使是 LXC 也比 Docker 早五年,一切条件都已具备,可是却只有 dotCloud 的家伙们捡起了这个贝壳,让人不禁感慨与成功失之交臂。

随着 Docker 的火热,我们也在不断地思考——Docker 对 DevOps 的影响,OS 的本质是什么,Docker 领域还有什么创新。Mesos、Kubernetes、Novm 这些项目都有不错的发展,我们也从中得到了启发。其实 Google 的非官方项目 Novm 就是一个使用 hypervisor 的执行引擎,只是开发一直停留在业余项目的水平而已。

虚拟机的问题不在“虚拟”,而在“机”,摆脱复杂的 OS,虚机也能飞;Docker 的核心在于以应用为中心的镜像封装,而非容器,封装改变了世界,而容器是封装的运行时承载而已。有了这两方面的思路,我们就取两者的长处,成为了一个新的选择。

InfoQ:您提到,Hyper 其实就是 Hypervisor+Docker 镜像,而 Docker 是 LXC+Docker 镜像。Hyper 为什么会选择 Hypervisor?相比 LXC,Hypervisor 有什么优势?

王旭: Hypervisor 的最明显的好处就在于,hypervisor 的进程是由另一个 kernel 调度,系统调用由另一个 kernel 处理,而并非宿主机的 kernel。这样,一方面用户可以选择自己的 kernel,另一方面也增强了隔离性,hypervisor 发生漏洞,对宿主机和其它虚拟机的威胁的概率是远低于容器漏洞的,毕竟容器向用户进程暴露了太多的入口点。

虚拟机的另一个优势是,虚拟机相关的产业链已经非常成熟,Xen/KVM 已经有十多年的历史了,围绕虚拟机打造的 OpenStack 也有五年的历史了,和虚拟机有顺畅合作的软硬件上下游产品非常多,容器正在赶超,但虚拟机无疑是先行者。

InfoQ:Docker 的优势是快、轻量,你们有对 Hyper 做性能测试吗?表现如何?

王旭:对于虚拟机本身的性能,不仅我们,很多人也测试过,对于 CPU/ 内存子系统为主要约束的应用,虚拟机的性能开销非常低,在大多数测试中,都可以得到 95% 甚至 99% 以上的裸机性能。

而在 IO 层面上,虚拟机确实性能开销相对大,但这和 IO 设备关系很大,一般 IO 设备越高速,影响越明显。很多云场景中,高速设备是通过 IOV 等技术,直接透明映射给虚机,来增强性能的,而对大部分云存储设备的性能来说,虚拟机并不构成关键损失。并且,对多租户环境,如果不使用 hyper 这样的技术,那么就必然还是需要把容器放入虚拟机来进行管理。

对于容器来说,启动时间也是一项被感知的明显指标,在第一次亮相 meetup 时,我使用一台装备超低电压 i3 处理器的小盒子,1 秒钟便启动了一个完整的 ubuntu docker image,在发布的时候,这个小盒子的性能大概达到了 450 毫秒,而在一台至强 CPU 的服务器上,能达到大约 350 毫秒启动。

InfoQ:Hyper 为什么能有如此好的性能?

王旭:说来惭愧,其实我们只是展示了虚机本来能达到的能力,我们不生产性能,我们只是开销的搬运工——我们简化了硬件模型和 kernel 的硬件支持,这样就不必费力去扫描和初始化一些本没有用的设备;我们省掉了完整的 OS,这样就没有了 init 任务的影响;我们还是用了 qboot,降低了老旧 BIOS 在引导过程中消耗的空间;此外还有一些流程上的细节优化,最终呈现出了 Hyper 现在的性能。

InfoQ:你认为 Hyper 最大的创新点是什么?

王旭:我们把 App-Centric 的理念带回到虚机来,我们让虚机回到了它的原本使命——承载应用,而不是完全模拟物理机,承载完整的 Linux 发行版。

InfoQ:Hyper 与前段时间因特尔发布的 Clear Linux 有什么区别?是不是有异曲同工之处?

王旭:我们之前确实不了解 Intel 的这个项目,事后才知道他们做了一年多了,确实有很多相似之处——都在跑容器镜像,都在追求更低开销。

当然也很多不同,两个项目的出发点不完全相同,Intel 的项目的出发点在于追求极致性能,证明硬件能力,所以使用了很多极端优化手段,确实也取得了很好的效果。

而 Hyper 项目一开始就致力于打造应用为中心的 hypervisor,我们使用环境中已有的 QEUM,利用已有的 kernel feature,着重打造 pod 的可管理性,维持跨平台、多 hypervisor 的支持。虽然没有使用很多极端优化,但是事实证明,这种开箱即得的性能也是不错的。

更重要的是,两个项目都是开源的,大家可以互相借鉴,做得更好。尤其 Intel OTC 一直都是 kernel 的主要贡献机构之一,相信很多 Clear Linux 的 feature 大家都可以用上,而 Hyper 由于与 Clear Linux 相似,所以也可以第一时间把这些好处带给用户,就像 Hyper 已经集成了 qboot,来提升启动速度一样。

2015-06-02 07:548715
用户头像

发布了 219 篇内容, 共 142.8 次阅读, 收获喜欢 194 次。

关注

评论

发布
暂无评论
发现更多内容

Android 框架解析:EventBus 3.0 的特点与如何使用

拭心

android Framework 内容合集 签约计划第二季

Camtasia添加光标效果教程

淋雨

Camtasia

从0到1普及前端知识 | 内容合集

你好bk

内容合集 签约计划第二季

搭建基本Jest测试框架,解读覆盖率实现原理

梁龙先森

签约计划第二季

JavaScript 数据结构之 Object

devpoint

ES6 Object 内容合集 签约计划第二季

音视频实战(2)- 如何在网页端给视频添加硬水印

liuzhen007

签约计划第二季

音视频理论(3)- 视频中图片和文字渲染坐标问题

liuzhen007

签约计划第二季

音视频实战(3)- Mac 系统 MediaInfo 多实例媒体信息分析

liuzhen007

签约计划第二季

音视频实战(4)- 常见流媒体服务器方案对比分析

liuzhen007

签约计划第二季

勿拖延

Nydia

Go并不需要Java风格的GC

Robert Lu

Go 垃圾回收

.NET 6新东西--PeriodicTimer

喵叔

28天写作 12月日更

音视频实战(5)- FFmpeg 处理音视频常见问题集锦

liuzhen007

签约计划第二季

架构实战营毕业总结

Geek_d18264

架构实战营

音视频理论(2)- 音视频传输协议之 RTMP

liuzhen007

签约计划第二季

左耳听风,右手敲码

homber

成长 感悟 竞争力 签约计划第二季

华为中国大学生ICT大赛2021实践赛网络赛道晋级赛试题解析(答案版)

小韩

华为 网络 ICT

JavaScript 数据结构之 Map

devpoint

set map ES6 内容合集 签约计划第二季

Rust 元宇宙 13 —— 客户端连接

Miracle

rust 元宇宙

netty系列之:手持framecodec神器,创建多路复用http2客户端

程序那些事

Netty HTTP 程序那些事 http2 12月日更

如何通过Kubernetes事件来报告错误

Robert Lu

#Kubernetes#

为什么不上台?(5/28)

赵新龙

28天写作

音视频学习从理论到实战

liuzhen007

内容合集 签约计划第二季 技术专题合集

http协议

en

HTTP

实用机器学习笔记四:数据标注

打工人!

机器学习 学习笔记 12月日更 实用机器学习

JavaScript 数据结构之 Number

devpoint

ES6 math 内容合集 签约计划第二季

JavaScript数据结构实用集

devpoint

JavaScript 数据结构 内容合集 签约计划第二季

架构实战营毕业总结

白开水又一杯

#架构实战营

Prometheus Exporter (十七)JMX Exporter

耳东@Erdong

JMX Prometheus 28天写作 exporter 12月日更

JavaScript 数据结构之 Set

devpoint

set ES6 内容合集 签约计划第二季

如何有效处理素材

将军-技术演讲力教练

Hyper:基于Hypervisor的容器化解决方案_语言 & 开发_小盖_InfoQ精选文章