目录

1.简介

2.部署用例

3.部署选项

3.1单服务器

3.2虚拟机

3.3容器

4.资源利用比较

5.虚拟机和容器的比较

6.结论


本文的范围是比较可用于我们的应用程序部署用例的各种部署模型。本文假设读者将具备虚拟机,容器和管理程序的基本知识。

1.简介

有一系列技术可用于将应用程序部署到生产环境,选择正确的策略是特定用例的重要决策。在本文中,我们将主要关注为内部构建的应用程序选择正确的部署模型。

2.部署用例

让我们考虑两个应用程序,“文件下载器”和“文件处理器”。功能详细信息如下表所述:

请注意,我们有一个具有100GB HDD16 GB RAM4个核心处理器的物理服务器

我们的目标是将两个应用程序部署到此服务器,以实现基础架构的最佳利用和更好的性。

3.部署选项

下图显示了可供我们使用的各种部署选项。

3.1单服务器

在此选项中,两个应用程序都部署在单个可用服务器中。

3.2虚拟机

在此选项中,我们将使用管理程序(Hypervisor)将可用服务器拆分为两个虚拟机。管理程序(Hypervisor),也称为虚拟机监视器/管理程序,是一个创建和运行虚拟机的过程。管理程序允许一台主机通过虚拟共享其资源(如内存和进程)来支持多个来宾VM(虚拟机)

有两种类型的管理程序如下:

类型1 - 直接在系统硬件上运行,例如,适用于MacOS的Hyper Kit,适用于Windows的Hyper-V和适用于Linux的KVM。

类型2(托管) - 在提供虚拟化服务的主机操作系统上运行。示例:VirtualBox和VMWare

上图使用类型1 Hypervisor。

每个VM都有客户操作系统,我们计划在VM1中部署“文件下载器”,在VM2中部署“ 文件处理器 ”。

由于“File Downloader”应用程序消耗更多内存,因此与VM2相比,我们需要为VM1分配更多内存限制。

由于“文件处理器”应用程序消耗更多的处理器时间,因此与VM1相比,我们需要为VM2分配更多的CPU核心限制。

通过这种方式,我们可以最佳地利用服务器资源。

3.3容器

在此选项中,我们将在现有操作系统之上安装容器引擎(例如,Docker Engine)。我们将创建两个容器来托管“File Downloader”和“File Processor”应用程序。

由于“File Downloader”应用消耗更多内存,因此与Container 2相比,我们需要为Container 1分配更多内存限制。

由于“File Processor”应用程序消耗更多处理器时间,因此与容器1相比,我们需要为容器2分配更多CPU核心限制。

通过这种方式,我们可以最佳地利用服务器资源。

4.资源利用比较

下图显示了我们到目前为止讨论的所有三个部署选项的资源利用率图表。

根据利用率图表,我们注意到以下观察结果:

  1. 单个服务器部署提供的性能很差,因为两个应用程序共享相同的资源
  2. 虚拟机和容器部署都提供了几乎相同的性能。
  3. 虚拟机部署消耗更多资源。
  4. 单服务器和容器部署都提供了几乎相同的资源利用率。

5.虚拟机和容器的比较

下表显示了虚拟机和基于Container的部署之间的比较:

SL

虚拟机

容器

1

重量大,性能有限

重量轻,性能提高

2

每个VM都在自己的操作系统中运行,无法在普通服务器上运行更多虚拟机

所有容器共享主机的相同内核,并且可以在普通服务器上运行更多容器

3

虚拟机需要几分钟才能启动

容器需要几毫秒才能启动

4

浪费资源 - 每个VM需要更多空间和内存(GB条款)

节省资源 - 每个容器需要更少的空间和内存(MB条款)

硬件级虚拟化需要更多操作系统许可证和成本

操作系统虚拟化,只需要一个操作系统许可证并降低成

6

VM正在运行物理文件的实例(.VMX和.VMDK)

Container正在运行Container Image的实例

7

每个VM都有自己的虚拟网络适配器,IP和端口

每个Container都有自己的虚拟网络适配器,IP和端口

8

虚拟机具有可扩展性,并具有专用磁盘空间,核心和内存分配

容器是可扩展的,并带有专用磁盘空间,核心和内存分配

9

从另一个VM无法看到一个VM中的进程

无法从另一个Container中看到一个Container中的进程

10

每个VM都有自己的根文件系统

每个Container都有自己的根文件系统

6.结论

基于各种部署选项,资源利用率图表以及虚拟机、容器之间的比较,对于我们的用例,基于容器的部署选项为我们提供了具有良好性能的经济高效的解决方案。

原文地址:https://www.codeproject.com/Articles/1277634/Application-Deployment-Strategy-Virtual-Machine-vs

应用程序部署策略——虚拟机与容器相关推荐

  1. Java之JVM调优案例分析与实战(1) - 高性能硬件上的程序部署策略

    本JVM系列均来源于<深入理解Java虚拟机>一书中,版权归该书作者所有. 环境:一个15万PV/天左右的在线文档类型网站最近更换了硬件系统,新系统硬件为4个CPU.16GB物理内存.OS ...

  2. 使用Helm将ASP.NET Core应用程序部署到Kubernetes容器集群

    在<容器化单页面应用中RESTful API的访问>以及<容器化单页面应用中Nginx反向代理与Kubernetes部署>两篇文章中,我介绍了一套容器化ASP.NET Core ...

  3. asp网上书店的代码_使用Helm将ASP.NET Core应用程序部署到Kubernetes容器集群

    在<容器化单页面应用中RESTful API的访问>以及<容器化单页面应用中Nginx反向代理与Kubernetes部署>两篇文章中,我介绍了一套容器化ASP.NET Core ...

  4. 从虚拟机到容器,详谈各种服务虚拟化技术及其应用场景

    前言 近几年容器(Container).Kubernetes等技术在数据中心.云计算.各互联网公司的业务服务中得到广泛应用,和20世纪60年代就兴起的虚拟机(Virtual Machine,VM)技术 ...

  5. 虚拟机VS容器 安全比拼谁更胜一筹?

    我们经常说,"HTTPS很安全"或者"HTTP不安全",但其实我们的意思是"HTTPS很难被窥探,中间人攻击很难执行". 然而,HTTPS已 ...

  6. 微服务实战(六):选择微服务部署策略

    http://dockone.io/article/1066 微服务实战(六):选择微服务部署策略 [编者的话]这篇博客是用微服务建应用的第六篇,第一篇介绍了微服务架构模板,并且讨论了使用微服务的优缺 ...

  7. 计算机世界的虚拟机,容器和医学界的人工硬脑膜

    这是Jerry 2020年的第69篇文章,也是汪子熙公众号总共第251篇原创文章. 本文不含惊悚内容的图片,请大家放心阅读. 医学界的虚拟化技术挽救了Jerry的生命,所以有了这篇文章. 计算机世界的 ...

  8. docker集群_使用Docker,Chef和Amazon OpsWorks进行集群范围的Java / Scala应用程序部署...

    docker集群 Docker非常适合在单个节点上运行隔离的容器. 但是,大多数软件系统都在多个节点上运行,因此,除了Docker之外,我们还需要某种方法来指定哪些容器应在哪些节点上运行. 我要解决的 ...

  9. 使用Docker,Chef和Amazon OpsWorks进行集群范围的Java / Scala应用程序部署

    Docker非常适合在单个节点上运行隔离的容器. 但是,大多数软件系统都在多个节点上运行,因此,除了Docker之外,我们还需要某种方法来指定哪些容器应在哪些节点上运行. 我要解决的特定问题如下:我有 ...

最新文章

  1. dice系数 交叉熵_语义分割中的损失函数
  2. 计算机无法开机按了f2,开机提示按f2 解决电脑开机时总是提示按F2 to continue的方法...
  3. HP Color LaserJet Pro MFP M277dw初始化 清零方法
  4. 【队列】Team Queue(luogu-UVA540/poj 2259)
  5. TensorFlow自带例子
  6. 20165212 预备作业3 Linux安装及学习
  7. 中小企业老板辛苦一整年,为什么就赚不到钱?
  8. 阿里达摩院拿什么救人?
  9. 年度最强浏览器插件来袭,打造个人完美生产力
  10. E+H流量计5P3B15-BBDBAAAFADEA1S1AA1+AK
  11. 【GitHub】中SSH key的配置
  12. DTOI 10.25 测试 T3 雪人
  13. 基于vue的分享插件
  14. Android device supports but apk only supports armeabi,x86,x86_64
  15. WebDriver简单总结-Python
  16. 百度购YY:追风者能翻盘?
  17. 解决 unity 按住鼠标右键 WS不能前进后退(我被自己蠢哭了)
  18. 突然无法访问局域网内的共享文件夹
  19. python函数可以改变哪种数据类型的实参_Python函数参数的几种类型
  20. Eclipse安装最新SVN插件

热门文章

  1. java异常中return_求大神!!!!java 异常处理中return的意思
  2. mysql是bsd协议吗_freebsd下实现mysql的自动备份
  3. pythonwindows文件_python查询windows文件
  4. dijkstra最短路径算法视频_Dijkstra最短路径算法
  5. UI资源模板| 针对iOS系统设计的购物APP移动应用UI设计套件
  6. matlab求解lmi,Matlab的LMI工具箱中最优化问题
  7. html怎么根据控IE制台找错误,IE调试网页之三:控制台查看错误和状态
  8. Windows直接获取文件的哈希值
  9. Qemu Tracing
  10. Linux内核:内存从BIOS->e820->memblock->node/zone基本流程