dot 未来速度的浪潮即将席卷您的城市。

加入我们在 Redis 发布会

微服务和容器的解释:使用乐高积木

就像乐高积木套装由多个零件组成,您可以将这些零件拼凑起来构建不同的结构一样,微服务是小的独立组件,您可以将它们组合起来构建更大的应用程序。这与传统的单体架构截然不同,在单体架构中,应用程序作为单个单元开发,通常会导致灵活性较差且难以维护的单体应用程序。

开发人员熟悉以模块化方式设计应用程序的概念,其中每个例程负责做好一件事。这是理解微服务在现代软件架构中的作用的有效起点,在现代软件架构中,应用程序被组织成一系列独立、小型且松散耦合的服务。

但一个更好的类比可能是乐高积木,这种可堆叠的塑料积木已成为一种普遍的儿童玩具爱好者的梦想。使用最简单的元素,您可以完成很多事情,但当您掌握工具时,还可以做一些惊人的事情。同样,掌握容器技术会在软件开发中开辟新的可能性。

每个微服务都可以独立开发、部署和扩展,因此开发人员可以高效地构建和维护复杂的应用程序。微服务可以通过 API 互相通信,使应用程序能够作为一个整体运行。这使得应用程序开发过程更加简化。

为了形象地说明这些关系,可以将微服务想象成乐高积木套装。就像乐高积木套装由多个零件组成,您可以将这些零件拼凑起来构建不同的结构一样,微服务是小的独立组件,您可以将它们组合起来构建更大的应用程序。

而且,就像乐高积木套装允许构建者随意交换零件一样,开发人员可以替换或更新微服务,而不会影响整个应用程序,也不必处理复杂的单体应用程序。这种模块化和灵活性是微服务在软件开发中如此受欢迎的原因之一。例如,在 2022 年,超过三分之一的软件开发人员使用了微服务

微服务是

  • 小型且专注于做好一件事
  • 设计用于通过 API 或其他轻量级机制进行通信
  • 独立开发和部署
  • 通常围绕业务功能进行组织,以解决单个用户故事
  • 与技术无关,支持大多数编程语言
  • 设计用于弹性和容错性

容器是什么

一个持续存在的计算问题是需要在软件从一个计算环境移动到另一个计算环境时可靠地运行它。也许这很简单,只是想从开发人员的笔记本电脑迁移到测试环境,或者从暂存环境迁移到生产环境,其中操作系统版本和服务器配置并不完全相同。然而,在更大的企业范围内,当开发团队需要从数据中心的物理机器迁移到私有或公共云中的虚拟机时,就会出现这个问题。

容器是一种以可移植且隔离的环境打包和运行应用程序的方式。它们已成为部署软件应用程序的事实上的标准方式,使应用程序能够在不同的环境中可靠且一致地运行。容器镜像包含应用程序及其所有依赖项,打包成一个可部署的单元。

再次考虑一个有许多零件的乐高积木套装。您想构建一些不同的东西:一辆汽车、一架飞机和一个星球大战千年隼。与其将所有零件堆放在一起,每次构建新东西都要整理它们,不如根据零件的用途将它们分类到更小的容器中:将大块零件放在一个容器中,将小块零件放在另一个容器中,等等。

可以将乐高积木零件视为代表构成微服务的代码和资源,而容器则代表微服务运行的隔离环境。使用容器分离微服务可以更容易地独立管理和部署它们,就像将乐高积木零件分类到容器中一样,可以更容易地构建不同的模型,而不必每次都搜索合适的零件。或者踩到它

容器的组件

  • 容器使用主机操作系统的内核运行,这使得它们轻量级且高效。
  • 容器包括应用程序代码及其所有依赖项,包括库和系统工具,打包成一个单独的包。
  • 容器引擎管理容器的生命周期,包括启动、停止和删除它们。

将微服务和容器配对的好处

这种管理和部署容器的概念称为容器编排,它彻底改变了开发人员的工作方式,使容器化应用程序的处理变得容易。像 Kubernetes 这样的容器编排平台可以同时管理多个容器,从而更容易处理由许多微服务组成的大型应用程序。这种类型的平台在云计算中必不可少,在云计算中,应用程序通常需要快速扩展以满足需求。

微服务和容器的结合简化了单个服务的管理,确保了故障隔离,实现了无缝扩展,促进了自定义和快速部署,并提高了整体效率和可靠性。这种方法也适合于持续集成和持续交付 (CI/CD) 模型,在这种模型中,更新可以频繁发布,对应用程序的功能影响最小。

就像将乐高积木容器化可以增强您的创作和构建过程一样,将微服务与容器配对会给应用程序架构带来好处。这种结合简化了单个服务的管理,确保了故障隔离,实现了无缝扩展,促进了自定义和快速部署,并提高了整体效率和可靠性。这种方法也适合于持续交付模型,在这种模型中,更新可以频繁发布,对应用程序的功能影响最小。

  • 微服务架构允许对单个服务进行扩展,而容器提供了根据需要轻松启动或停止这些服务的新实例的功能。
  • 容器可以在环境之间轻松移动,从而使在不同的基础设施配置中部署微服务变得简单
  • 容器提供故障隔离,因此如果一个微服务出现故障,不会影响整个应用程序。
  • 微服务和容器可以通过允许开发人员处理更小、更易于管理的服务并快速部署更新,帮助团队更快地迭代
  • 容器可以更好地利用资源,因为它们可以在单个主机上运行多个微服务。

Redis Enterprise 和容器

Redis Enterprise 使用 Kubernetes 等容器来促进容器化应用程序的部署、扩展和管理。这可以看作是一种托管服务,其中管理微服务应用程序的大部分复杂性由平台处理。通过在 Kubernetes 上运行 Redis Enterprise,组织可以从自动可扩展性、持久性存储卷、简化的数据库端点管理、零停机时间升级和安全的容器化应用程序中获益。Kubernetes 为部署 Redis Enterprise 集群提供了稳固的基础,提供了反亲和性、持久性卷和有状态集等专用功能,用于运行无共享节点。

为了便于管理 Kubernetes 上的 Redis Enterprise 集群,Redis 开发了 Redis Enterprise Operator,它可以自动执行许多 Kubernetes 功能的配置和执行,并使用 Redis 特定的控制来自动化数据平台的操作,包括主动-主动数据库等部署模式。Redis Enterprise Operator 确保 Redis 集群和 Kubernetes 编排系统无缝协同工作。使用 Kubernetes 的组织可以利用 Redis 在运行 Redis 作为服务的方面的专业知识,并依靠 Redis Enterprise Operator 处理数据平台的复杂操作。

回到我们乐高积木的类比,Redis Enterprise Operator 充当一个主蓝图,指导您完成项目。Redis Enterprise Operator 确保项目以一致且可靠的方式构建,不会遗漏零件。

在生产环境中使用 Kubernetes 的组织可以依靠 Redis 在运行 Redis 作为服务的方面的专业知识,就像初学者乐高积木构建者可以依靠大师构建者的说明来构建复杂的结构一样。

Redis Enterprise on Kubernetes 可以使用 Red Hat OpenShift、任何主要的云供应商或它们的组合在本地部署,以实现真正的混合和多云体验。它也可以在 Microsoft Azure Kubernetes Service (AKS) 和 Google Kubernetes Engine (GKE) 市场中获得,使组织能够统一其云账单并在任何区域(包括其本地数据中心)部署集群。

下一步

了解 Redis 如何增强消息传递、存储和缓存,促进服务间通信以及跨集群同步数据。立即下载电子书 Redis 微服务入门,释放微服务的全部潜能。