基础:容器在微服务体系结构中的作用

爱德华Kisller
2021-09-14 13:49

用户添加图片

企业应用程序部署的方法在过去二十年中发生了巨大的变化。作为低成本商品的服务器在90年代末和21世纪初,取代大型机的公司终于找到了一种负担得起的方式隔离他们彼此的申请。他们能够部署一个主要服务到每个物理机器。他们还可以配置每个服务器,以适应其承载的应用程序的资源和安全需求。这很方便,因为如果服务器宕机,只有一个应用程序会受到影响。这导致了巨大的增长数据中心内的服务器数量——这不仅变得越来越难以管理,而且导致许多服务器没有充分利用。

然后,一个新的时代虚拟机(vm)。这使得相同的硬件可以承载,从而更好地利用了计算资源2022世界杯阿根廷预选赛赛程多个服务器,每一台机器都有自己的功能。然而,在过去的几年里,组织已经开始采用一种不同的方法分区基础设施一种新型的应用程序体系结构——使用容器而且microservices,分别。本指南简要解释了什么是容器和微服务——它们的优点、缺点以及它们之间的共生关系。

容器是什么?

容器是vm提供的轻量级替代方案孤立的工作负载的操作环境。他们用一种不同的方法抽象2022世界杯阿根廷预选赛赛程资源。容器不使用管理程序,而是共享内核主机操作系统的名称。因此,它们避免了一个成熟操作系统的基础设施开销,只提供那些资源(例如,2022世界杯阿根廷预选赛赛程安装依赖关系,代码您的应用程序实际需要的。这意味着他们可以更快地停止和开始响应波动的扩展并提供比虚拟机更好的综合性能。

Microservices是什么?

微服务体系结构是一种软件设计方法,其中应用程序被分解为分布式阵列的松散耦合服务。每个微服务执行自己的特定功能独立组成应用程序的其他微服务的。微服务可以部署到专用的VM上,在某些情况下,这样做是有意义的。但是,一般来说,微服务更适合容器,它提供细粒度控制超过资源分配和更有效地使用您的计算能力。

优势

除了更好的性能和更低的基础设施占用之外,容器化微服务通常比传统的单块应用程序更健壮。例如,如果将整个应用程序部署到VM,那么当机器停机时,整个应用程序也会随之停机。但是,通过容器,您可以在一个较小的虚拟机集群中复制微服务。因此,在发生VM故障时,应用程序仍然能够使用集群中的其他微服务并继续工作。

用户添加图片

此外,你可以更新代码和补丁每个微服务的运行环境是独立的、独立的,不会引起故障中断对您的应用程序的整体运行,从而有助于消除停机检修时间

集装箱化的微服务也使开发人员的工作更加轻松。每个微服务都是一个相对较小的独立组件,它允许编码人员处理自己的特定任务,而不必不必要地卷入应用程序整体的复杂性中。此外,容器化应用程序使他们可以自由地用最适合自己的语言编写每个服务。

容器也高度便携,易于使用持续集成(CI)而且持续交付(CD)管道,这有助于进一步提高生产力。每个微服务都有一个更小的攻击表面并且与其他微服务隔离开来。这使得安全漏洞更难从一个集装箱传播到另一个集装箱。

缺点

尽管微服务体系结构正迅速成为高可伸缩性和低成本效率工作负载的应用程序设计选择,但它仍然是一个银弹。例如,它可能不适合遗产应用程序,其中涉及重新构建代码库的工作可能被证明是一场复杂而昂贵的后勤噩梦。

此外,基于微服务的应用程序更复杂的测试和部署。它们也是基于动态基础设施在美国,集装箱不断地启动和关闭。这可能会使部署、监视和管理更具挑战性。因为容器是一次性的、短暂的环境,所以需要一种将数据写入的方法持久存储在你的容器外面。

集装箱编配

容器编排工具为您提供了一种跨微服务集群提供、配置、协调、扩展和监视容器的方法。主要的开源解决方案包括Kubernetes便,以及Docker的本地集群引擎,.虽然Kubernetes是使用最广泛的,但每个产品都给表带来了一些稍有不同的东西,比如灵活性、功能深度和易用性。

从根本上说,所有的编排引擎都能够:

  • 在容器之间分配计算资源2022世界杯阿根廷预选赛赛程
  • 根据应用程序工作负载添加或删除容器
  • 管理容器之间的交互
  • 监视容器的运行状况
  • 平衡微服务之间的负载

Microservices模式

随着企业采用容器技术,解决方案架构师面临的挑战是如何最好地分解应用程序转化为更小的自治服务。微服务模式是一组已建立的拓扑该模型是给定应用程序的体系结构。

微服务模式的概念相对较新,仍在发展中。然而,目前正在出现的共同模式是基于下列战略:

  • 分裂将为一系列用途设计的大型遗留应用程序升级为执行更分散的业务功能的更小的容器化任务。
  • 逐渐地用单独的函数替换应用程序中的现有函数集装箱组件直到整个系统被完全重构。
  • 用不同的微服务服务不同的浏览器的格式(台式机、手机和平板电脑)。
  • 创建两个复合只委派任务和的容器服务单一的集中执行这些独立任务的微服务。
  • 设计一个网络服务为了获得最大的性能和弹性。

用户添加图片

了解更多关于容器的信息

发布日期:2020年6月22日

最后更新:2021年3月17日