![image.png](https://cdn.nlark.com/yuque/0/2023/png/35086385/1691486689411-b93423c4-ed1a-4171-b5d9-6066ee8c8225.png#averageHue=%23545329&clientId=u839e9698-903a-4&from=paste&height=284&id=ubabeecb3&originHeight=709&originWidth=1969&originalType=binary&ratio=2.5&rotation=0&showTitle=false&size=113143&status=done&style=none&taskId=u1ab50bda-bc69-4ffe-bd1e-07b6e4b7355&title=&width=787.6) ## 互联网业务部署大致分为三个时代 1. 传统部署时代(托管时代):早期将业务程序直接部署在物理服务器中,这种部署方式的优点是部署和运维都很简单。同样缺点也很致命, 如:每个应用程序都运行在不同的物理服务器上, 但可能会因为部分应用程序资源利用率不足而浪费资源。为了提高资源利用率,在同一台物理服务器上运行多个应用程序, 则可能会出现一个应用程序占用大部分资源的情况,从而导致其他应用程序的性能下降。在这个时代里服务器租赁、托管业务快速发展。 2. 虚拟化部署时代(云时代):为解决托管时代服务器利用率问题,IBM研发出虚拟化技术,虚拟化技术允许用户在一台物理服务器中同时运行多台虚拟服务器,每台虚拟服务器都有自己独立的操作系统,且操作系统内的应用程序互不干扰。虚拟化技术提升了服务器资源利用率及进程安全性,但也存在一定的缺点,如业务程序难部署、启动速度慢、操作系统占用空间等。在这个时代里云厂商业务快速发展。 3. 容器部署时代(云原生时代):为了解决难部署、操作系统占用空间等问题、docker公司研发了容器技术。容器相较于云服务器具有更宽松的隔离特性,多容器共享主机的操作系统、内核等。目前互联网即处于云原生时代,各个互联网巨头业务已经容器化。 Kubernetes 就是目前主流的容器管理平台。(曾经还存在过很多容器管理平台,但是最后还是被谷歌的K8S打败了) ## 容器和虚拟机对比 - VM之间共享硬件,而容器之间共享硬件和内核,启动容器就相当于启动一个进程,速度更快。 - VM需要安装操作系统镜像及依赖等,占用GB级别磁盘空间,而容器不需要,通常为MB - 单机支持几千个容器,几十个VM | **虚拟机** | **容器** | | --- | --- | | 重量级 | 轻量级 | | 性能有限 | 本机性能 | | 每个VM都在自己的OS中运行 | 所有容器共享主机操作系统 | | 硬件级别虚拟化 | 操作系统虚拟化 | | 启动时间(分钟级别) | 启动时间(秒级别) | | 分配操作系统需要的内存 | 分配较少的内存 | | 完全隔离,更安全 | 进程级别隔离,安全性相对较差 |