云原生架构系列——资源隔离

tech2024-03-13  53

1 为什么要对资源进行隔离

举个例子,假设现在你有一套一室一厅的房子,你想把这套房子出租出去,租金是1200/月。但是如果你把这套房子隔成三个单间,主卧600/月,两个次卧400/月,每个月的总房租就变成了1400/月,这样不仅提高了房屋的利用率也增加了收益。对于服务器资源也是一样,硬件资源是固定的,通过软件把硬件资源分隔成多个单独的资源,这每个独立的资源就可以租给不同的客户商。通过软件实现隔离还有一个好处就是弹性扩容,这是云计算技术一个非常重要的特性。实现资源隔离主要有两种技术:虚拟化技术和容器技术。

2 虚拟化技术

虚拟化架构如上图所示:

Hardware Layer:硬件层,即硬件资源Hypervisor:也叫虚拟机监视器(Virtual Machine Monitor,VMM),是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机。是所有虚拟化技术的核心。VM:虚拟机(Virtual Machine)Guest OS:客体机操作系统Applications:运行在客体机上的应用 虚拟化技术会在宿主机上虚拟出多个虚拟机,这些虚拟机是完全隔离的 常见的虚拟化管理平台有:OpenStack、KVM、VMware

3 容器技术

容器技术已经经历过了几代的发展,目前最流行的是docker。docker是进程级别的隔离,直接运行在宿主机之上,省去了传统虚拟化中的Hypervisor层,不需要虚拟硬件资源,不需要客体机,所以容器是一种轻量级的虚拟化技术,比传统虚拟化技术更节省资源、性能更高。 在创建容器时,docker引擎会把磁盘上的容器镜像运行成宿主机上的一个进程。 docker是基于Linux内核上的Cgroup和Namespace技术来实现资源隔离的:

Cgroup:即Control Group,是对进程间使用系统资源(CPU、存储等)进行限制和隔离Namespace:即命名空间,每个Namespace的资源是相互独立的,所以进程在各自的Namespace下 使用资源不会形成干扰。Linux内核总共实现了6中Namespace docker能够屏蔽因环境不一致而导致的一些问题,docker把应用和应用依赖的操作系统、jdk环境、jar包等打包成一个镜像,就像是一个集装箱,不管运行在开发、测试、线上哪个环境,都能保证版本的一致性,这样就不会出现因操作系统版本、jdk版本等基础环境的不一致而出现一些比较奇葩的问题。
最新回复(0)