AICon上海「Agent与多模态解决方案专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:548841
用户头像

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

关注

评论

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

【备战秋招冲击大厂】Java面试题系列,你还没弄明白存储键值对

Java 程序员 后端

《黑马程序员》通讯录管理系统实战,java程序设计实用教程第二版课后题答案

Java 程序员 后端

【Java笔记】数组的处理方法,idea搭建springboot入门

Java 程序员 后端

【SpringMVC笔记】Ajax 入门,springboot源码解读与原理分析

Java 程序员 后端

【Java 强化】单元测试,linux驱动开发入门与实战pdf

Java 程序员 后端

【Java后端】杭州三面字节,等hr面,虐慌!分享面经和刷过的面试题

Java 程序员 后端

【Spring Boot 8】Okhttp实现GitHub第三方登录

Java 程序员 后端

【Java程序员必知必会的90个细节】1,java面试题选择题

Java 程序员 后端

【初学入门Demo注解版】SpringBoot ,java面试大全下载

Java 程序员 后端

【数据库实验】,java语言零基础自学

Java 程序员 后端

【Java基础】枚举,nginx源码分析pdf百度网盘

Java 程序员 后端

【MyBatis 6】Statement,mysql基础教程西泽pdf

Java 程序员 后端

【Spring Boot 12】看完这篇,nginxkeepalived原理

Java 程序员 后端

【Spring Boot 19】Spring Boot整合阿里云OSS实现云存储

Java 程序员 后端

【大厂面经】我通过了某独角兽公司的魔鬼五面

Java 程序员 后端

《零基础》MySQL 管理(三),java程序设计精编教程第三版课后答案

Java 程序员 后端

「一探究竟」迷之序列化,Java性能优化最佳实践

Java 程序员 后端

【Effective Java】10,javaee架构设计与开发实践

Java 程序员 后端

【备战秋招冲击大厂】Java面试题系列(1),springboot入门程序

Java 程序员 后端

【Docker 系列】我们来看看容器数据卷到底是个啥

Java 程序员 后端

【Java 多线程 2】Java线程池详解,java多线程面试算法

Java 程序员 后端

【Java核心面试宝典】Day1,java高级工程师面试宝典

Java 程序员 后端

《零基础》MySQL 连接的使用(二十),mybatis实现分页原理

Java 程序员 后端

【Spring Boot 13】实现热部署,最新Java通用流行框架大全

Java 程序员 后端

【关于封装的那些事】 缺失封装,2021年腾讯Java高级面试题及答案

Java 程序员 后端

【并发编程】深入了解volatile,linux高级编程pdf

Java 程序员 后端

【Spring框架03】DI依赖注入,spring菜鸟教程pdf

Java 程序员 后端

【嵌入式实验】,面试官必问的技术问题之一

Java 程序员 后端

「Java」几种典型的内存溢出案例,学习linux的书籍

Java 程序员 后端

【2021软件创新实验室暑假集训】SpringBoot框架

Java 程序员 后端

【Java8 新特性 3】Supplier简介,springboot面试题

Java 程序员 后端

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