zoukankan      html  css  js  c++  java
  • 虚拟化向容器化发展

    0 容器的趋势所向

      IT企业的软件开发模型由传统的客户端/服务端模型,变成浏览器/服务器模型;由物理机变成虚拟机,再变成IaaS(基础架构云)和PaaS(应用云)。通过近些年的云化,很多企业实现了基础架构资源(虚拟机、网络、存储和数据库等资源)的云化和池化,用户可以通过云化讯处的获取业务应用所需的机器、数据库以及数据存储。当上层业务和下层基础架构资源完备后,中间的一个连接就应运而生——容器化,通过容器方案实现应用在基础架构资源上的“一键式”部署,快速(原来的应用需要几天甚至十几天才能全部部署完毕,现在只需要一天甚至几个小时就可以部署完毕)、便捷(原来的应用需要jar、war、rpm等方式部署,现在只需要镜像和容器化平台)且成本低(应用成本、资源成本,还有重要的人力成本在降低)。

    1 虚拟机和容器化比较

    运行在多个虚拟机上的应用

    运行在独立容器中的应用
    1)容器更加轻量级,允许在相同的硬件上运行更多数量的组件。每个虚拟机需要运行自己的一组系统进程,进程是运行在不同的操作系统上的。而一个容器仅仅是运行在宿主机上被隔离的单个进程,仅消耗应用容器消耗的资源,不会有其他进程的开销。容器低消耗
    2)虚拟机提供完全隔离的环境,每个虚拟机运行在它自己的Linux内核上,容器是调用同一个内核。

    2 容器实现隔离机制

    两种方式: Linux命名空间;Linux控制组(cgroups

    2.1 用Linux命名空间隔离进程

      Linux命名空间使每个进程只看到自己的系统视图(文件、进程、网络接口、主机名等)
      默认,每个Linux系统起始有一个命名空间,所有系统资源(如文件系统、用户ID、网络接口等)属于这个命名空间,但可以创建额外的命名空间,以及在它们之间组织资源,一个进程可以运行在其中一个命名空间中,该进程只能看到该命名空间下的资源。
      命名空间用于隔离一组特定的资源,命名空间类型如下:

    • Mount(mnt)
    • Process ID(pid)
    • Network(net)
    • Inter-process communication(ipd)
    • UTS
    • User ID(user)

    2.2 Linux控制组

      通过cgroups限制容器能使用的系统资源,cgroups升级一个Linux内容功能,可以限制一个进程或者一组进程的资源使用,一个进程的资源(CPU、内存、网络带宽等)使用量是不可以超过被分配的量。

  • 相关阅读:
    java8学习笔记之lambda表达式
    spring注解value的用法
    mybites
    spring bean的初始化以及销毁
    java并发之线程间通信
    mybatis常见问题和错误
    hadoop安装问题记录
    linux 常用命令
    省选模拟98 题解
    省选模拟97 题解
  • 原文地址:https://www.cnblogs.com/Andya/p/12402855.html
Copyright © 2011-2022 走看看