著名杂志《经济学人》曾经评价“没有集装箱,就没有全球化”,可以说集装箱的出现重塑了现代货运体系,实现了交通运输行业的标准化,有效降低物流运输成本,极大提升了货物转运效率。而在云原生领域,容器就相当于集装箱,它使得软件发布以及软件运行隔离实现标准化,引领了云原生基础设施的跨越式发展。从某种意义上来说,容器技术重塑了整个软件供应链。今天就和大家聊聊各个大厂都在玩的容器技术到底是个什么。
为什么需要容器技术
在正式介绍容器技术之前,我们先来看下软件领域为什么需要容器技术。一项新技术的出现必定是为了解决当下遇到的的某项具体问题或者说更加提高现有软件生产和运行效率。那我们就来分析下在容器技术出现之前,软件领域到底面临什么样的软件生产以及部署问题。
在很早很早之前,我们部署服务的时候都是直接部署在硬件服务器上。如果想对服务进行扩容就必须要购买服务器,然后再进行应用部署以及各种繁琐的环境配置以及服务配置,由于都是人工操作所以还特别容易出错,不仅浪费时间还很费程序猿,因此服务部署以及迁移升级效率都极其低下。在互联网早期的时候,用户数以及业务体量还不是很大,人工操作还能够应付得过来。但是随着业务规模不断发展以及用户数的爆炸式增长,这样的软件服务生产方式已经无法满足业务高速发展的需求。将应用服务直接部署在服务器上主要有以下三方面的问题。
服务互干扰
一台服务器一般不会只部署一个服务应用,都是部署多个服务应用。但是由于这些服务都是公用服务器中的CPU、内存、硬盘以及网络IO等服务器资源,那么必定就会存在资源互相争用、服务互相影响的情况。
资源利用低
业务是存在高峰期和低谷期的,对于电商平台来说,一般深夜的属于业务低谷期,这个时候的服务器的资源利用率相比业务高峰期的时候要低很多。因此在业务低谷期,实际服务器的资源利用率比较低,不能物尽其用。
迁移扩展难
原有的服务器数量不足以应对高速发展的业务时,就需要不断的进行服务器实例扩充,但是由于服务直接部署在服务器中,在进行服务迁移扩展的时候,需要各种依赖库、环境配置以及网络配置等,步骤复杂,扩展困难。
正是软件领域面临这么多问题,因此大神们才会发挥他们的聪明才智不断推进技术发展。因此大神们就设想如果有一种部署方式可以实现差别的服务构建,那就可以解决服务部署的各种配置问题。如果有一种技术可实现真正的资源隔离,进程之间互相不影响,这样就可以解决互相影响的问,那将是多么美好的一件事情。这些美好的技术设想实际就是容器技术发展的原动力。当然技术的发展并不是一蹴而就的,总是随着时间的推移不断进行完善。