云原生的演进系列上:容器化技术的诞生

所有新技术的诞生,都是为了解决某个具体问题,而非凭空而来。在发展的过程中,它们常常会经历一段探索和试错的弯路,最终沉淀出优秀的解决方案。云原生技术体系可以说是当今社会网络技术生产力的基石,同时也是每一位志存高远的软件工程师在无限技术学习旅途中必须翻越的一座大山。本系列文章预计分为两篇,以记录和整理个人的学习心得。本篇为上篇,将重点介绍容器化技术的起源与发展。

物理机

在 1960 年左右,市场是物理机的时代,如果想启动一个新的应用,那么就需要购买一个物理机,安装操作系统,配置软件运行环境,最后托管到机房。这个时代,我们的工作负载就是物理机,没有资源的隔离。部署服务需要登录机器,手动更新配置。

一开始,由于技术条件落后,网络应用能够提供的服务比较单一,网络服务的规模不大。这种通过人工维护物理机上的软件版还能够被接受,不是当时技术条件下的生产力的主要矛盾。

摩尔定律简而言之"18 个月机器性能就会提高一倍"。计算性能的提高也就会带来需求的提高,软件架构复杂性的提高。很快,物理机部署的低效就暴露出来。通过物理机直接部署有以下几个缺点。

  1. 资源浪费:机器资源无法按需分配,即使是应用利用率很低,也会占用一台物理机。
  2. 部署复杂:软件强依赖硬件和操作系统。更新软件需要人工介入。在大规模部署时,这是无法接受的。而且系统出现故障时,恢复成本高。

虚拟化

1998 年前后虚拟化逐渐成熟。其中最具有代表性的技术是 2001 年 VMware 发布了第一个针对 x 86 服务器的虚拟化产品 —— VMware ESX。使用 VMware ESX 之后,可以在一台物理机器上运行多个虚拟机,如果业务需要扩容,那就再开通一个虚拟机,整个过程只要几分钟。
自此,资源有了初级的隔离,并具有基本的分配/利用的能力。这种隔离硬件级别的隔离,每个虚拟机运行在独立的虚拟硬件环境上,并运行各自的操作系统。

虚拟化的成熟,催生的云计算的市场。基于虚拟化技术的云计算产品在 2006 年开始,陆续的出现了。比如 lass,pass,faas, 公有云,私有云,等多种服务模型。

  • lass: 基础设施即服务。通过按时计费的方式租借服务器(卖资源)。用户可以自己选择虚拟机实例和相关的资源。
  • Paas:平台即服务。使开发者不必费心考虑操作系统和开发工具更新或者硬件维护,这些有云服务提供商来进行维护,并提供扩展和可用性。
  • Faas: 功能即服务,物理硬件,虚拟机,web 服务器等都有云服务商提供,用户只需要关注逻辑实现,不需要关注任何的基础设施。是 severless 的概念。

但虚拟化虽然提高了资源的利用率,并具备一定的隔离能力。但每一个虚拟化实例都是一个完整的操作系统,操作系统本身需要占用一定的物理资源,这导致资源的有效利用率不足。
同时当物理机本身发生错误时,那么这个错误讲影响上层的所有实例。

容器化

容器能力是当前云计算,微服务等核心技术的基石,是本文详细介绍的内容。在了解容器化之前,这里先介绍软件的各级别的兼容能力。

隔离级别

"一次编译,到处运行"是 Java 早年的宣传口号,而一个计算机软件要能够正确的运行,就必须有以下三个方面的兼容性来共同保障。

  • ISA 兼容:目标机器的指令集兼容。例如 ARM 架构的计算机软件无法运行在 x 86 架构的计算机上。
  • ABI 兼容:依赖环境和目标系统兼容。比如 window 上的程序不能直接在 linux 中运行。Android 上的程序不能在 IOS 上运行。
  • 环境兼容:配置文件,数据库地址,文件权限等。任何一个环境环节出错,程序都无法正常运行。

根据抽象目标和兼容性的高低不同,虚拟技术又被分为 5 大类。

  • 指令集虚拟化:通过软件来模拟不同的 isa 架构处理器的工作过程。通过增加转换层的方式,将程序的 isa 指令翻译成本机的 isa 指令。通过这种方式我们甚至可以直接在 web 游览器上运行一个完整的 linux 系统。但由于每条指令都需要进行转换或模拟,因此这种格式方式是性能损失是最大的。
  • 硬件层模拟化:通过软件来模拟硬件(芯片,内存,显卡,硬盘)的工作过程。可以通过软件直接模拟硬件,也可以将真实的硬件直通过到虚拟机中使用。市场上的代表产品为上面提到的 VMware ESX。但这种虚拟方式的每一个实例都需要运行一个操作系统,因此性能也会有一定的损失。
  • 操作系统层虚拟化:操作系统层虚拟化则不会提供真实的操作系统,而是采用隔离手段,使得不同进程拥有独立的系统资源和资源配额,在进程看起来看起来仿佛是独享了整个操作系统一般,其实系统的内核仍然是被不同进程所共享的。操作系统级的虚拟具有更轻量化,资源利用充分的特点。但这种虚拟化是依赖操作系统的,而且容器之间的管理方
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值