微服务和容器:选择哪个?

这篇具有很好参考价值的文章主要介绍了微服务和容器:选择哪个?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么选择微服务?为什么选择容器?

微服务是一种有吸引力的 DevOps 模式,因为它们能够加快上市速度。由于每个微服务都是独立开发、部署和运行的(通常使用不同的语言、技术堆栈和工具),微服务允许组织“分而治之”,并更有效地扩展团队和应用程序。当管道未锁定在工具集、组件依赖项、发布流程或基础结构的整体配置中时,可以更好地扩展开发和操作。它还可以帮助组织轻松确定哪些服务不需要扩展以优化资源利用率。

容器提供定义良好、隔离的运行时环境。容器支持将所有内容打包到 Docker 类型文件中,该文件通过管道在一致环境中作为单个容器提升,而不是交付项目及其所有变量。除了隔离和一致的环境之外,容器还具有非常低的运行容器进程的开销。这种对从开发到生产的环境一致性的支持,以及极快的配置、启动和扩展,加速并简化了开发和运营。

为什么要在容器中运行微服务?

在容器化环境中运行基于微服务的应用程序非常有意义。Docker 和微服务是天然的伴侣,构成了现代应用程序交付的基础。

在高层次上,微服务和Docker一起是DevOps的PB&J,因为:

  • 他们都旨在做好一件事,而这些事情是互补的。
  • 你需要学习擅长一个的东西可以很好地转化为另一个。

更具体地说:

目的

  • 微服务(通常)是专注于应用程序某个方面的单个进程,尽可能隔离运行。
  • Docker 容器在定义明确的环境中运行单个进程。

复杂性

  • 使用微服务,您现在需要部署、协调和运行多个服务(数十到数百个),而以前您可能拥有更传统的三层/整体式架构。虽然微服务支持敏捷性,尤其是在开发方面,但它们也带来了许多技术挑战,主要是在运营方面。
  • 容器有助于解决这种复杂性,因为它们可以轻松快速地在容器中部署服务,主要面向开发人员。

缩放

  • 微服务使缩放更容易,因为每个服务都可以独立于其他服务进行缩放。
  • 容器原生集群编排工具(如 Kubernetes)和云环境(如 Amazon ECS 和 Google Container Engine (GKE))提供了根据负载和业务规则轻松扩展容器的机制。

系统理解

  • 微服务和容器本质上都迫使您更好地理解系统——如果您不彻底了解您的架构、拓扑、功能、操作和性能,就无法成功使用这些技术。

挑战

  • 管理微服务和大规模 Docker 部署给企业 IT 带来了独特的挑战。由于组织必须精通哪些内容才能成功部署和修改微服务和容器,因此在大规模操作容器和微服务的挑战和最佳实践方面存在相当多的重叠。
  • 管道变化增加。编排交付管道变得更加复杂,移动部件也越来越多。将整体架构拆分为多个微服务时,管道数可能会从 50 个跃升至<>个(或者设置了多少个微服务)。您需要考虑需要多少个不同的团队,以及是否有足够的人员来支持每个微服务/管道。
  • 测试变得更加复杂。 需要考虑的测试量更大,包括集成测试、API 合约测试、静态分析等。
  • 部署复杂性增加。虽然缩放容器化应用相当容易,但首先需要进行大量活动。在发布到生产环境之前,必须在整个管道中多次部署它以进行开发和测试。随着如此多的不同服务独立开发,部署数量急剧增加。
  • 监视、日志记录和修复变得非常重要,并且越来越困难,因为有更多的移动部件和不同的分布式服务构成了整个用户体验和应用程序性能。
  • 有许多不同的工具链、架构和环境需要管理。
  • 需要考虑现有的遗留应用程序,以及如何将这些应用程序与基于容器或微服务的应用程序的新服务和功能进行协调。
  • 治理和审计(特别是在企业级别)变得更加复杂,因为如此大的分布式环境,组织必须同时支持容器和微服务,以及传统的发布和整体应用程序。

除了这些常见的挑战之外,微服务和容器也各有其独特的挑战。如果您正在考虑使用微服务,请了解:

  • 分布式系统是双重崇拜的,需要强大的系统理解能力。
  • 服务组合很棘手,更改成本可能很高。从整体式架构开始,避免过早分解,直到您彻底了解应用程序的行为。
  • 需要考虑进程间故障模式,尽管抽象在纸面上看起来不错,但它们容易出现瓶颈。
  • 注意事务边界和外键关系,因为它们会使分解变得更加困难。
  • 考虑使用基于事件的技术来进一步减少耦合。
  • 对于API和服务SLA:“在你做的事情上要保守,在你接受别人的东西上要自由”
  • 状态管理是硬事务、缓存和其他有趣的事情......
  • 测试(特别是服务之间的集成测试)和监视(由于服务数量的增加)变得更加复杂。
  • 服务虚拟化、服务发现以及 API 集成点的正确设计以及向后兼容性是必须的。
  • 故障故障排除:“每次停电都是谋杀之谜。
  • 即使服务很小,也必须考虑部署占用空间。
  • 您一切都依赖网络 - 您需要考虑带宽、延迟和可靠性。
  • 如何处理旧版应用程序:重写?忽视?混合?

容器挑战:文章来源地址https://www.toymoban.com/news/detail-413338.html

  • 安全性是一项关键挑战——既因为它仍然是一项相对较新的技术,也因为下载图像的安全问题 le.容器是OpSec的黑匣子:更少的控制,容器内部的可见性较低,现有工具可能不精通容器。确保签名和扫描图像,验证库等;还要强化容器环境;尽早放弃权限,并使用细粒度的访问控制,这样它就不全是根。明智地使用凭据(容器服务可以提供帮助)。
  • 监控非常棘手,因为容器实例可能会连续丢弃或扩展。需要将日志记录和监视配置为停用过期的容器,或保存日志和数据(业务数据、引用数据、合规性数据、日志、诊断)来自其他(临时)实例。
  • 了解什么在何处运行,以及为什么运行,并避免映像膨胀和容器蔓延。
  • 由于容器托管和集群编排市场仍在兴起,我们看到用户尝试在多个环境中运行容器,或使用不同的集群编排工具和API。这些早期采用者需要管理容器,同时最大限度地降低锁定到特定云供应商或点工具的风险,或者必须投入大量工作(和陡峭的学习曲线)来重写复杂的脚本,以便重新调整其部署或...

到了这里,关于微服务和容器:选择哪个?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 为什么大厂都选择用Go

    字节跳动正式宣布开源CloudWeGo,这是一套以Go 语言为核心中间件集合。字节相关技术负责人表示希望CloudWeGo能丰富云原生社区的Golang工具体系。 可以看出,字节内部已有诸多用Go语言开发的成熟项目,基本上也已经全员转Go了。其实不只是字节,阿里、腾讯、百度、B站等也都

    2023年04月08日
    浏览(124)
  • 为什么选择 Next.js 框架?

    Next.js 框架作为一种强大而受欢迎的工具,为开发人员提供了许多优势和便利。本文将探讨 Next.js 框架的优点,并解释为什么选择 Next.js 是一个明智的决策。 文档:https://nextjs.org/docs Next.js 框架提供了先进的服务端渲染(SSR)和静态生成(SSG)能力,使得我们能够在服务器上生

    2024年02月12日
    浏览(50)
  • 消息队列选型——为什么选择RabbitMQ

    前言 MQ消息是目前分布式系统必不可少的组件,但是面对市面上众多的MQ组件,我们该用什么呢?我以实际项目的需求出发,介绍今天的主角——rabbitMQ。同时也会告知有哪些优势和不足。事不宜迟,就开始今天的学习吧 目录 一、MQ及MQ组件 1. MQ的解释与用处 2. 几款常用的M

    2024年02月11日
    浏览(50)
  • 为什么选择 Flink 做实时处理

    优质博文:IT-BLOG-CN 【1】流数据更真实地反映了我们的生活方式(实时聊天); 【2】传统的数据架构是基于有限数据集的(Spark 是基于微批次数据处理); 【3】我们的目标:低延迟、高吞吐(分布式架构,可能会出现顺序上的混乱,比如统计1个小时内,可能在1小时的时候

    2024年03月11日
    浏览(86)
  • 为什么要选择外包区块链开发?

    经历过17年、21年的牛市行情,据dappradar数据,区块链行业爆发的Dapp项目已达上万个。但是即使是现在,启动区块链初创公司也并非易事——许多创始人在此过程中面临着怀疑和挫折,有的项目甚至直接消亡在技术开发过程中,为什么呢? 缺乏技术专业人员。 几十年前,很难

    2024年02月16日
    浏览(64)
  • 怎么自学python?为什么选择python

    自然是因为Python简单易学且应用领域广 Python近段时间一直涨势迅猛,在各大编程排行榜中崭露头角,得益于它多功能性和简单易上手的特性,让它可以在很多不同的工作中发挥重大作用。 正因如此,目前几乎所有大中型互联网企业都在使用 Python 完成各种各样的工作,比如

    2024年02月04日
    浏览(65)
  • 微服务和容器:选择哪个?

    微服务是一种有吸引力的 DevOps 模式,因为它们能够加快上市速度。由于每个微服务都是独立开发、部署和运行的(通常使用不同的语言、技术堆栈和工具),微服务允许组织“分而治之”,并更有效地扩展团队和应用程序。当管道未锁定在工具集、组件依赖项、发布流程或

    2023年04月14日
    浏览(19)
  • 公司为什么选择云数据库?它的魅力到底是什么!

    亚马逊云科技提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750小时;Amazon Dynamo DB 25GB存储容量 永久免费。) 谈到数据库想必我们都不陌生,其中主流

    2024年02月04日
    浏览(55)
  • 为什么我选择订阅ChatGPT Plus计划?

      订阅 ChatGPT Plus 计划后,我注意到响应速度明显加快。在高峰时段,普通用户可能会遇到一些延迟,但作为Plus会员,我可以享受到优先的服务。这对于我这样的繁忙专业人士来说,快速、高效的沟通至关重要。 作为 ChatGPT Plus 会员,我们可以第一时间体验到OpenAI团队开发的

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包