阿里云王牌架构师二问开发者:容器和虚拟化你会怎么选?

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 随着IT技术的发展,特别是serverless概念被提出以后,网络上出现了很多唱衰虚拟化以及对未来虚拟化方向的讨论,很多文章都做了vm和容器的对比,任何一种技术存在都有其合理性,我们不妨客观分析两种技术的特点选择适合自己业务的,才是最重要的,开始之前先再简单介绍下两种

_1_

阿里云高级解决方案架构师 杨旭

世界最大混合云的总架构师,4年前,开始作为双11阿里云技术负责人,负责搭建全球最大的混合云结构,把 “双11”的电商业务和技术场景在阿里云上实现,并保障这个混合云在双11当天能够满足全球客户的购物需求。

正文:

随着IT技术的发展,特别是serverless概念被提出以后,网络上出现了很多唱衰虚拟化以及对未来虚拟化方向的讨论,很多文章都做了vm和容器的对比,任何一种技术存在都有其合理性,我们不妨客观分析两种技术的特点选择适合自己业务的,才是最重要的,开始之前先再简单介绍下两种。

技术的定义:

所谓虚拟机(VM)就是对操作系统的完全模拟,虚拟机是架构在虚拟化指令之上,需要特定的硬件、软件同时的支持,,每台虚拟机会预分配需要的资源,包括CPU,内存,磁盘等,以及一个完整的用户操作系统
容器就是隔离一个运行环境,每个封装好的隔离环境我们就称为一个容器,容器包含应用以及其运行的依赖包,容器之间大家互相共享内核,所有的容器在宿主机操作系统中以分离的进程运行。

1

图片来自网络


从图上可以看出容器和虚拟机最大的区别就是容器没有Hypervisor这一层,每个容器和宿主机共享资源,主要为了解决了传统Hypervisor带来的性能开销;反之,虚拟化创造的是更加隔离的环境,每个虚拟机有独立的guest os,大家各自封闭运行,所有应用程序跑在虚拟机内部,不会因为某个虚拟机内部应用程序
的漏洞给宿主机造成危害,虚拟化技术是在硬件资源层面的虚拟,容器技术则是对应操作系统的进程层面,下面从几个方面做进一步对比:

15_36_48__08_08_2018

容器技术之所以火的原因笔者总结主要有三个:

1.传统IT诉求的演进

随着资源利用率,设备可维护性等问题的解决,人们对于资源的关注从基础iaas层开始向上发展,特别是微服务等概念的提出,大家都从一个大而全的应用演变成希望一个应用就只完成某个特定的功能,,更希望今天我们的开发是开箱即得,按需索取,并且 "build once,run everywhere,彻底解决应用的部署,分发,可用性,可运维性,监控等问题运维等问题,特别是线上线下的兼容性,我相信很多开发都遇到测试环境调通一到线上就挂的囧境,为什么—环境不一致导致,今天容器又天然就和微服务的理念是match的。

DevOps最佳实践

运维这个职位是个吃力不讨好的高危行业,干对了你是应该了,干错了第一个责任人就是你,运维本身不像研发没有实际产出,不出问题的时候大家不会感觉到你的存在,所以作为运维的职业如何在公司快速发展的业务过程中找到自我价值和定位是很多运维人在探索的方向,google最早对运维进行了重新定义,提出SRE的概念,并且结合devops在实际工作中的落地,取得了很好的效果,阿里在这条路上也进行了探索,并且觉得docker是最佳的落地方式,今天阿里也在做大规模的docker化,今天做docker化是为了解决我们环境不一致问题,提升我们的开发和发布效率,在阿里内部,docker和虚拟化根据各自处理场景的不通相互融合的非常好。

2

最底层的ECS服务可以是多种介质的异构,传统的kvm,最新的神龙裸金属服务器,GPU,FPA方案,上层可以直接对用户提供VM,也可以是容器,所以的容器服务都基于ECS来构建,最顶层的业务平台根据自身需求可以通过k8来进行容器的定义也可以通过paas平台直接调用api进行虚拟资源的弹性伸缩。

对性能的要求

传统部署在物理机上的高IO业务有服务化需求之后自然想到的就是docker+物理机,例如数据库服务,在未经优化的情况下,在虚拟机化上跑I/O业务性能将受损失。经过可靠的测试虚拟化对于物理硬件的损耗在优化的情况下也要有5%左右。

未来大部分业务系统将会变成虚拟机+Docker形式的组合,操作系统和Docker本身采用虚拟机镜像方式部署,软件、业务依赖组件,业务定义等与业务相关属性采用容器镜像,既实现安全隔离有提升资源的高利用率。
3

当然我们需要去优化和解决虚拟化以及容器带来的性能损耗,阿里云在裸金属服务器上的探索通过将虚拟化逻辑offload到神龙的MOC卡中,通过专有硬件方案来解决虚拟化的损耗,这样物理机本身的性能就和普通PC无异,完全给到业务使用,基于裸金属的方案可以跑anystack的方案,可以支持xen,kvm,vmware等,在阿里内部,已经开源的pouch通过内部大量场景的优化加上基于神龙的底座方案可以将整个三层的损耗做到<3%,让我们既做到了服务化又不损失性能。

【往期回顾】
1.阿里云王牌架构师一问开发者:我需要一个高并发的架构,我的系统要改造成微服务吗
https://yq.aliyun.com/articles/623271?spm=a2c4e.11155435.0.0.120433122PgFrW

2.阿里云王牌架构师杨曦:也谈系统缓存设计误区及高阶使用技巧
https://yq.aliyun.com/articles/624061

3.阿里云王牌架构师杨曦:N多环境N多应用个性配置管理如何从混乱到简单?
https://yq.aliyun.com/articles/623882

更多干货内容尽在阿里云总监课,戳链接报名:https://yq.aliyun.com/promotion/689

阿里云总监系列课重磅上线!聚焦人工智能、弹性计算、数据库等热门领域,首次集齐12位阿里云技术高管,耗时半年精心打磨,从理论到实践倾囊相授,从零开始绘制技术大牛成长路径,限时直播课程免费报名中!

_

相关文章
|
2天前
|
缓存 监控 持续交付
构建高效微服务架构:后端开发者的七大秘诀
在本文中,我们将深入探讨构建和维护高效微服务架构的关键策略。不同于常规的技术细节介绍,我们将重点放在实践技巧和方法论上,帮助后端开发者提升系统设计能力,确保微服务架构的稳定性、扩展性和安全性。从服务划分到数据一致性,再到服务监控与调优,文中将提供一系列实用的建议和最佳实践,旨在指导读者如何在复杂多变的业务环境中构建出健壮且高效的微服务体系。
|
2天前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
760 2
|
2天前
|
消息中间件 负载均衡 持续交付
构建高效微服务架构:后端开发者的终极指南
【4月更文挑战第25天】在当今软件工程领域,微服务架构已经成为实现可扩展、灵活且容错的系统的首选模式。本文将探讨如何从零开始构建一个高效的微服务系统,涵盖关键组件的选择、通信机制、数据管理以及持续集成和部署策略。通过深入分析与案例研究,我们旨在为后端开发者提供一个全面的微服务实践指南,帮助他们在构建现代化应用时做出明智的架构决策。
|
2天前
|
弹性计算 数据库 Docker
学习阿里云架构设计知识2-wp搭建及配置
VPC分区清晰架构,VSW网络分隔,CEN连通VPC,按量付费小规格,均衡策略,ESS/ACK内置SNAT,ECS用NAT上网。建DMZ需VPC、VSW、NAT、EIP。主系统多VPC/VSW配ECS和Redis,CEN全连接。CEN设路由表,外网访问设DMZ、CEN、EIP,加堡垒机。Web系统ACR部署WordPress,配数据库。验证WordPress、弹性伸缩,测外访、发文、负载。含架构图。
29 1
学习阿里云架构设计知识2-wp搭建及配置
|
2天前
|
弹性计算 负载均衡 容灾
应用阿里云弹性计算:打造高可用性云服务器ECS架构
阿里云弹性计算助力构建高可用云服务器ECS架构,通过实例分布、负载均衡、弹性IP、数据备份及多可用区部署,确保业务连续稳定。自动容错和迁移功能进一步增强容灾能力,提供全方位高可用保障。
69 0
|
2天前
|
监控 Java 持续交付
构建高效微服务架构:后端开发者的终极指南
【5月更文挑战第4天】在当今快速迭代和竞争激烈的软件市场中,微服务架构已成为企业追求敏捷性、可扩展性和技术多样性的关键策略。本文深入探讨了如何构建和维护高效的微服务系统,从基本概念到高级实践,为后端开发者提供一套综合指南,以支持他们在这一变革性架构风格中扮演关键角色。
|
2天前
|
人工智能 分布式计算 Cloud Native
阿里云PAI平台架构介绍
阿里云PAI平台架构介绍
29 0
|
2天前
|
Linux Shell 虚拟化
【Linux学习】Linux 的虚拟化和容器化技术
【Linux学习】Linux 的虚拟化和容器化技术
|
2天前
|
运维 监控 Serverless
【专栏】无服务器架构,一种云计算模型,让开发者专注编写代码而不必管理服务器(Serverless)
【4月更文挑战第28天】无服务器架构,一种云计算模型,让开发者专注编写代码而不必管理服务器。它基于事件驱动,自动扩展资源并按需计费。优势包括缩短开发周期、优化资源利用、降低成本、提高可用性及简化维护。然而,冷启动延迟、调试困难、性能监控、安全性和学习曲线等挑战仍需解决。随着技术进步,无服务器架构将在科技发展中发挥更大作用。
|
2天前
|
安全 Devops 虚拟化
【专栏】虚拟化技术与云计算平台 OpenStack:硬件虚拟化、操作系统级虚拟化和容器化
【4月更文挑战第28天】本文探讨虚拟化技术原理,如硬件虚拟化、操作系统级虚拟化和容器化,以及开源云计算平台OpenStack如何利用这些技术提供优势。OpenStack支持多种虚拟化技术,具备开源灵活性、多租户架构、可扩展性、插件式设计和成本效益。未来,OpenStack将在容器化、DevOps、跨云策略和安全合规性方面发挥更大作用,助力企业数字化转型。