从资源利用率角度来看 Docker 、k8s 、Serverless

zhushican 3年前 (2021-11-09) 六六互联 320 0

从资源利用率角度来看 Docker 、k8s 、Serverless

从资源利用率角度来看 Docker 、k8s 、Serverless

虚拟机

一般的物理服务器都会有很强的 CPU 核心、内存、网卡等。为了充分利用这些硬件资源,就有了虚拟化技术,物理服务器上可以虚拟出很多的虚拟机(VM),每个虚拟机都拥有独立的操作系统(windows、linux等)。根据需求来分配具体的硬件资源(CPU、内存等),就可以尽量大的利用物理服务器资源。

Docker

Docker 的出现,原因肯定有对虚拟机的资源利用率还是不满意,继续提高服务器的资源利用率。Docker 就是对机器的利用率到了进程级别,更细的控制 CPU、内存等。

k8s

Docker 可以在一台机器上快速的启动、关闭容器,但是缺乏对大量容器自动编排、管理和调度。k8s 就是一套管理系统,对容器进行更高级更灵活的管理。你只需要提供服务器,k8s 通过对容器的编排可以帮你最大化的利用这些服务器的资源。

Serverless

云服务可以让我们选择合适配置的虚拟的云主机,然后按时、按月、按年的收费,但不管你使用与否,费用都在那里,不增不减。Serverless 则可以让你只在使用时,根据使用时间、内存占用等一些你具体使用的东西来收费,不管你使用的频率高低都可以承受,就像水和电,用了多少就是多少费用。

前端工程中的使用

不同与服务端很多程序,前端代码运行在客户机器上。Docker 在前端工程上的使用,出发点和服务端程序,会有所不同。

Docker 的使用场景

构建部署发布

通常的前端应用构建部署流程:

安装依赖

执行构建命令,生成静态资源

上传静态资源到对应服务器

加入 Docker 理念后,前二个步骤几乎相同,理想的流程大致为:

安装依赖

执行构建命令,生成静态资源

构建容器镜像

上传容器镜像

拉取镜像,启动容器

从资源利用率角度来看 Docker 、k8s 、Serverless

步骤 3 中,构建出的镜像里面包括:

Web 服务器(一般都是从一个 nginx 基础镜像开始)

Web 服务器的相关配置

构建完的静态资源

一部分静态资源在构建完成之后也可以上传到 CDN 上,但是因为静态资源的大小几乎不会很大,所以放到镜像中没有多大问题。