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

时间:2024-03-30 13:37:17

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

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

2 虚拟化技术

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

3 容器技术

容器技术已经经历过了几代的发展,目前最流行的是docker。docker是进程级别的隔离,直接运行在宿主机之上,省去了传统虚拟化中的Hypervisor层,不需要虚拟硬件资源,不需要客体机,所以容器是一种轻量级的虚拟化技术,比传统虚拟化技术更节省资源、性能更高。
云原生架构系列——资源隔离
在创建容器时,docker引擎会把磁盘上的容器镜像运行成宿主机上的一个进程。
docker是基于Linux内核上的Cgroup和Namespace技术来实现资源隔离的:
Cgroup:即Control Group,是对进程间使用系统资源进行限制和隔离
Namespace:即命名空间,每个Namespace的资源是相互独立的,所以进程在各自的Namespace下 使用资源不会形成干扰。Linux内核总共实现了6中Namespace
云原生架构系列——资源隔离