Hyper:基于Hypervisor的容器化解决方案
近日,初创公司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,来提升启动速度一样。
Hyper:基于Hypervisor的容器化解决方案的更多相关文章
- 案例 | 腾讯广告 AMS 的容器化之路
作者 张煜,15年加入腾讯并从事腾讯广告维护工作.20年开始引导腾讯广告技术团队接入公司的TKEx-teg,从业务的日常痛点并结合腾讯云原生特性来完善腾讯广告自有的容器化解决方案 项目背景 腾讯广告承 ...
- DCOS实践分享(1):基于图形化模型设计的应用容器化实践
2015年11月29日,Mesos Meetup 第三期 - 北京技术沙龙成功举行.本次活动由数人科技CTO 肖德时 和 Linker Networks 的 Sam Chen 一起组织发起. 在这次m ...
- 容器部署解决方案Docker
容器部署解决方案Docker 课程目标 目标1:了解Docker与虚拟机的不同点,相比的优势 目标2:掌握Docker的启动方法 目标3:掌握Docker镜像操作 目标4:掌握Docker容器操作 ...
- .NET微服务 容器化.NET应用架构指南(支持.NET Core2)
介绍 企业通过使用容器,日益实现成本节约.解决部署问题并改进 DevOps 和生产操作. 通过创建 Azure 容器服务.Azure Service Fabric 等产品,同时与 Docker.Mes ...
- 网页静态化解决方案-Freemarker demo+语法
1.网页静态化技术Freemarker 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说 ...
- 支付宝客户端架构解析:Android 容器化框架初探
摘要: 本文将介绍支付宝 Android 容器化框架设计的基本思路. 1. 前言 由本章节开始,我们将从支付宝客户端的架构设计方案入手,细分拆解客户端在“容器化框架设计”.“网络优化”.“性能启动优化 ...
- 容器化-Docker介绍
导读:本文章对Docker技术进行了介绍,阐述了Docker的技术发展历程.容器与虚拟机的差异.Docker原理.特点.Docker三组件和Docker带来的影响,为我们进一步理解Docker打下基础 ...
- Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit 应用程序容器化总结 v2 s66.docx Atitit file cms api
Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx Aitit algo fi ...
- Docker---大型项目容器化改造
虚拟化和容器化是项目云化不可避免的两个问题.虚拟化由于是纯平台操作,一个运行于linux操作系统的项目几乎不需要做任何改造就可以支持虚拟化.而项目如果要支持容器化则需要做许多细致的改造工 ...
随机推荐
- JS全选checkbox
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/ ...
- HTTP Keep-Alive是什么?如何工作?(转)
add by zhj: 本篇只是Keep-Alive的第一篇,其它文章参见下面的列表. 原文: HTTP Keep-Alive是什么?如何工作? 1. HTTP Keep-Alive是什么?如何工作? ...
- python逆向工程:通过代码生成类图
python逆向工程:通过代码生成类图 大致过程 现在有一个core包,里面有python的代码. 通过core包,生成python的类图,如下: 实施步骤: 1.首先安装graphviz,一个画图工 ...
- Python 网络编程了解
阅读目录 一: 网络编程socket http://www.cnblogs.com/zhoujunhao/articles/7592671.html 二: TCP粘包处理 http://www.cnb ...
- ServiceModel 元数据实用工具 (Svcutil.exe)
ServiceModel 元数据实用工具用于依据元数据文档生成服务模型代码,以及依据服务模型代码生成元数据文档 一.SvcUtil.exe ServiceModel 元数据实用工具可在 Windows ...
- SharePoint 2010 以Jquery Ajax方式更新SharePoint列表数据!
之前本人的博客介绍了<sharepoint 2010自定义访问日志列表设置移动终端否和客户端访问系统等计算列的公式>,那如何通过Jquery提交访问日志到自定义的SharePoint的访问 ...
- Java分布式:RPC(远程过程调用)
Java分布式:RPC(远程过程调用) 引入RPC 比如我们有一个查询的接口IDBQuery,以及其实现类DBQueryImp,如果我们执行IDBQuery查询方法,只需要new一个DBQueryIm ...
- JavaScript:隐藏Url中的参数
<script type="text/javascript"> function submitForm(url, data) { var eleForm = docum ...
- SQL SERVER 索引中聚集索引分析和Transact-SQL语句优化
一. 聚集索引B树分析1.聚集索引按B树结构进行组织的,索引B树种的每一页称为一个索引节点.B树的顶端节点称为根节点. 索引中的低层节点称为叶节点.根节点与叶节点之间的任何索引级别统称为中间级.在聚 ...
- Android Camera 通过V4L2与kernel driver的完整交互过程
http://blog.chinaunix.net/uid-26215986-id-3552456.html 原文地址:Android Camera 通过V4L2与kernel driver的完整交互 ...