首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

容器和微服务 — 完美的一对(1)

容器和微服务 — 完美的一对(1)

容器和微服务:完美的一对除非您完全不了解云技术和云本机应用程序开发,否则您或许听说过 Linux 容器和在过去两年来迅猛发展的 Linux                容器和基于容器的项目。如果您没有听说过它们,那么您可以将 Linux                容器视为轻量型的虚拟机,从而可以更灵活地使用、更快速地继承和更容易地分发它们。Docker 是在这方面走在前沿的项目之一。自 2012                年启动以来,Docker 团队(现在已是公司)提供了一种通过 Linux 容器构建、打包和分发云本机应用程序的非常简单的方法。
容器与虚拟机有何不同?每个虚拟机(如下图中的左侧所示)运行自己的来宾操作系统实例,并提供它自己的库和二进制文件。容器(如右侧所示)是隔离的,它们共享底层的主机                OS 和库,只打包必要的应用程序二进制文件。
“许多行业领导都转而使用基于云的基础架构(包括在云中和内部)来获得极大收获。”

容器作为 Linux 系统上一个极小的资源集来运行,打包的应用程序常常不超过几百                MB。基于虚拟机的应用程序通常比它大 3 到 4 个数量级(数十                    GB)。您很容易看到容器如何融入到微服务模式中,它们更小更快—  中介绍的微服务的两个特征。
许多行业领导者都在转而使用基于云的基础架构(包括在云中和内部)来获得极大收获。一个重要的收获是,Docker 和其他类似的 Linux                容器技术很容易集成到持续继承和持续交付管道中:依据 Docker 最近自行资助的一项研究,Docker 用户发布软件的频率平均快了 7 倍。Gilt                Groupe                等公司已开始采用微服务和容器化的基础架构,他们有时发布软件的频率高达一天 100                次。快速推送代码更改,自动重新构建极小的                Docker                映像,以及从一个通用代码库管理大量已部署映像的能力,使公司的交付管道能够非常快地完成。
Docker 容器的其他好处之一是这些打包的应用程序(称为                    Docker                映像)的可移植性。Docker                映像可在环境之间和在构建管道中无缝地移动。例如,BBC                News(英国广播公司的一个分部)表明它的持续集成工作在基于                Docker 的基础架构中的运行速度快                60%。与以往相比,在整个交互管道中移动相同的代码的能力加速了应用程序的开发、测试和生产周期,该能力最小化了在每个阶段配置软件的需求,而且在移动过程中拥有可预测的硬件资源需求。公司能够看到这些效率优势,因为他们的系统组件在每个                Docker 映像中是模块化的。您不需要在每次需要软件时配置它。只需启动一个容器实例,就可以使用它。
Docker                是一个代码运输集装箱系统,它使得通过                Linux 的软件开发和交付变得很容易。Docker                充当着一个引擎,使任何有效工作负载都可封装为轻量型、可移植、自给自足的容器。这些容器可使用标准操作来处理,并在几乎任何硬件平台上一致地运行。
如果您不熟悉容器和 Docker,请参阅  ,获取一些有关 Docker 和 Linux                容器的优秀的一般性介绍资料的链接。如果您拥有使用 Docker 的经验并希望在云中动手使用 Docker,                 是一个您可立即免费开始使用的企业级容器服务。您将获得自己的私有注册表来存储所有映像,能够访问包含支持的中间件的 IBM                公共注册表,获得托管的交付管道集成功能,还能够访问                150多个                Bluemix™ 服务。您可让您的应用程序在 Docker                容器中更快地运行。
更快且更小:容器就像软件开发的纳米机器人在开始了解为什么容器对微服务如此重要的同时,作为该架构风格的关键支持技术之一,您还会看到容器的管理也同样重要。您在                  中已经知道,我们在微服务中没有纵向扩展,而执行横向扩展。我们没有向微服务运行时添加更多                RAM,我们只是获得另一个相同种类的微服务运行时。需要更多                RAM?获取第三个实例。此方法仅适合一两个分别拥有一个容器实例的服务,但任何拥有计算机技能和大量服务器的人都知道,在您远程管理数十个服务器时,事态很快就会失控。
想想您需要多快地管理超过 100                个单独的实例。如果您的应用程序最初仅由少量微服务组成(假设五六个),每个微服务都应拥有至少                3                个容器实例来支持它。所以您立刻拥有了                18 个容器实例。假设您添加另一个微服务,或者您的应用程序非常成功,某些服务需要扩展到 5 到                10                个容器实例。您很容易就会拥有                100 多个需要管理的容器实例— 在情况好的时候。
幸运的是,许多开源项目可以处理此需求。例如, 、  和                  使用了一种基于基础架构的特定于域的语言,使得从单个控制台或命令行管理数千个容器实例变得很容易。
这个管理概念严格执行了   中的 “是家畜而不是宠物”                的概念。它的理念是,我们通过持续集成/持续交付流程部署的所有容器都不可变。在部署它们后,就无法更改它们。如果需要更改或更新,可以建立另一个应用了正确的更新的新的容器集群,并销毁旧的容器集群。管理                1,000 头家畜比管理 1,000                只宠物容易得多。不要误解我的意思:我们都爱自己的宠物,但是,如果您想快速创新,为客户带来价值,给您的业务带来收入,那么您可能无法承受对每只宠物进行细心呵护所需的时间。Kubernetes、Apache                Mesos 和 fleet                等项目(和                IBM Containers                等托管容器服务)使得集成交付管道和映像注册表来快速轻松地管理基础架构的所有阶段成为可能,就像非常高效的家畜管理一样。
顺便说一下,应该注意的是,尽管某些容器服务仍在使用虚拟机作为 Docker 主机,但仍应将这些服务视为家畜。这些 VM                具有更健全的资源和集成管理功能,但它们通常仍被视为家畜,因为它们是根据基于容器的工作负载的需求来动态管理的。
返回列表