【云计算】NIST Definition of Microservices, Application Containers and System Virtual Machines

在这里插入图片描述

摘要

应用程序容器的许多变体和定义都存在于行业中,这在试图解释容器是什么的人中造成了相当大的混乱。本文件旨在为应用程序容器、驻留在应用程序容器和系统虚拟机中的微服务提供NIST标准定义。此外,本文还解释了面向服务体系结构(SOA)和微服务之间的异同,以及系统虚拟机和应用程序容器之间的异同。

关键字

Application Containers; System Virtual Machines; Microservices; Services Oriented; Architecture

致谢

读者

本文档的目标读者是系统规划人员、项目经理、技术人员和其他云服务的消费者或提供者。

符合NIST标准和指南

国家标准与技术研究所(NIST)制定本文件是为了进一步履行其在2014年《联邦信息安全管理法》(FISMA)第113-283号公法下的法定职责。
NIST负责制定标准和指南,包括最低要求,为所有机构的运营和资产提供足够的信息安全;但此类标准和指南不适用于国家安全系统。本指南符合管理和预算办公室(OMB)通知A-130第8b(3)节“确保机构信息系统的安全”的要求,如A-130附录四“关键章节的分析”所述。补充信息见A-130附录三。
本指南已准备好供联邦机构使用。非政府组织可以在自愿的基础上使用,不受版权的限制,尽管需要归属。
本文件中的任何内容均不得视为与商务部长根据法定权限对联邦机构制定的强制性和有约束力的标准和指南相抵触,也不得将本指南解释为改变或取代商务部长、OMB主任或任何其他联邦机构的现有权限官方的。

执行摘要

服务器或硬件虚拟化的无处不在的部署使人们对术语虚拟机(VMs)的语义有了很好的理解。类似地,自20世纪90年代到2000年代以来流行的web服务部署模式已经就什么是面向服务的体系结构(Service-Oriented Architecture,SOA)达成了公平的协议。
然而,一个相对较新的趋势是操作系统级的虚拟化,它使用应用程序容器的概念,这些应用程序容器在操作系统内核之上作为独立的用户空间进程运行。由于应用程序容器和vm所提供的核心功能之间有着密切的相似性(即隔离性),因此需要对这两个术语提供一个正式的定义,并概述它们的异同。此外,这些应用程序容器是自包含的应用程序包,使用OS/library/binary组件构建,每个组件都提供OS级别的功能。
应用程序根据功能(而不是服务)分解为独立的组件,并放置到应用程序容器中,最终的部署范式称为微服务体系结构。反过来,这种微服务架构在其模块化结构方面与soa有许多相似之处,因此还需要对这两个术语进行正式定义,以促进这一技术空间中的各个利益相关者(如系统架构师、集成者等)之间的共同理解。

目录

在这里插入图片描述

1 介绍

自2000年初以来,用于内部企业应用程序和云计算服务的数据中心的一个趋势是越来越多地采用硬件或服务器虚拟化。硬件虚拟化允许在单个物理主机上运行称为系统虚拟机(S-vm)的多个计算堆栈。硬件虚拟化环境中的S-VM由一个或多个应用程序、操作系统(称为客操作系统)和虚拟硬件组成的完整计算堆栈(或引擎)组成。由于在S-vm和物理主机硬件之间运行的中间硬件仿真层或虚拟机监控程序,S-vm能够执行其任务。
另一个趋势是在操作系统层虚拟化应用程序。就像多个S-vm在同一个物理硬件上运行一样,在此上下文中,一个名为“应用程序容器”的实体的多个实例在用户空间中的操作系统内核上运行。正如硬件虚拟化允许多个操作系统实例在单个物理主机上运行一样,应用程序容器技术允许多个独立的用户空间实例(进程)在单个主机上运行。应用程序容器由应用程序代码(例如,web服务器或DBMS服务器)组成,这些代码可以访问表示操作系统核心功能的库/二进制文件集合。每个库组件都提供了一个传统的操作系统功能,如内存、命名空间和应用程序代码工作所需的进程。应用程序容器在部署时以独立进程的形式为应用程序提供执行环境。
放置在容器中的应用程序组件利用微服务体系结构。微服务体系结构可以与面向服务体系结构(Service-oriented architecture,SOA)形成对比,在SOA中,微服务由围绕功能而不是服务构建的小型、无状态、松散耦合和隔离的进程组成。微服务可以独立部署在应用程序容器中,使用更少的资源,并且可以比在SOA中更快地创建、销毁、启动和停止。
基于上述讨论,我们需要对这些新兴技术(如应用程序容器和微服务体系结构)及其密切相关的对等技术(S-VMs和SOA)的构建块进行正式定义,并解释其异同。本文的目的是提供这些定义、相似性和差异性,以便对这些术语的语义有一个共同的理解。

2 背景:面向服务架构(SOA)

从分布式服务出发组装企业级解决方案或单个系统是一种成熟的架构方法,称为面向服务架构(service-oriented architecture,SOA)[2]。SOA是一种体系结构模式,用于集成业务流程和支持IT基础设施,其中应用程序组件被分解为独立的服务,这些服务使用通信协议和一组定义良好的应用程序编程接口(api)相互通信,独立于任何供应商、产品或技术。
SOA允许重用和组合服务来处理不断变化的业务优先级。

3 微服务的定义

微服务:微服务是一个基本元素,它是应用程序组件的体系结构分解为松散耦合模式的结果,这些模式由独立的服务组成,这些服务使用标准通信协议和一组定义良好的api相互通信,独立于任何供应商,产品或技术。
微服务是围绕功能而不是服务构建的,构建于SOA之上,并使用敏捷技术实现。微服务通常部署在应用程序容器中。

4 SOA与微服务的异同

SOA和Microservices有以下几个共同点和不同点。

SOA微服务
独立的、单一的服务小型、可分解、独立部署的服务
服务之间的通信通过企业服务总线进行服务之间的通信通过轻量级的标准通信协议和接口进行
有状态的,需要在引入更改时映射服务依赖项引入更改时无状态且不那么脆弱
更长的启动/停止时间快速启动/停止时间
围绕服务构建围绕功能构建

5 应用程序容器的定义

应用程序容器:应用程序容器是设计用于打包和运行在共享操作系统上运行的应用程序或其组件的构造。
应用程序容器与其他应用程序容器隔离,共享底层操作系统的资源,允许跨云高效地重新启动、扩展或扩展应用程序。应用程序容器通常包含微服务。

6 系统虚拟机的定义

系统虚拟机:系统虚拟机(S-VM)是一个完整系统平台的软件实现,它支持在云中执行完整的操作系统和相应的应用程序。
每个S-VM都是运行在物理机器集群上的真实机器的有效、独立副本。

7 S-vm与应用程序容器的异同

S-VMs从底层硬件抽象操作系统,允许多个操作系统和应用程序共享单个系统的物理计算资源。应用程序容器从底层操作系统抽象应用程序,允许多个应用程序共享单个系统的操作系统和底层物理计算资源。
下图描述了系统虚拟机和应用程序容器之间的区别。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值