「第二部:容器和微服务架构」(1) 基于容器应用架构设计原则

简介: 「第二部:容器和微服务架构」(1) 基于容器应用架构设计原则

微服务提供了巨大的好处,但也带来了巨大的新挑战。微服务架构模式是创建基于微服务的应用程序时的基本支柱。

在本指南的前面,您学习了容器和Docker的基本概念。这是开始使用容器所需的最少信息。尽管,即使容器是使能器并且非常适合微服务,它们也不是微服务体系结构的强制要求,而且此体系结构部分中的许多体系结构概念也可以在没有容器的情况下应用。然而,由于已经引入了容器的重要性,本指南将重点放在两者的交叉点上。

企业应用程序可能很复杂,通常由多个服务组成,而不是由单个基于服务的应用程序组成。对于这些情况,您需要了解其他体系结构方法,例如微服务和某些域驱动设计模式以及容器编排概念。注意,本章不仅描述容器上的微服务,还描述任何容器化应用程序。


容器架构

容器设计原则

在容器模型中,容器映像实例表示单个进程。通过将容器镜像定义为进程边界,可以创建用于缩放进程或批处理进程的基元。

设计容器映像时,您将在Dockerfile中看到入口点定义。这定义了其生存期控制容器生存期的进程。当进程完成时,容器生命周期结束。容器可以表示长时间运行的进程,如web服务器,但也可以表示短时间运行的进程,如批处理作业。

如果进程失败,则容器结束,编排器接管。如果编排器配置为使五个实例保持运行,而一个实例失败,则编排器将创建另一个容器实例来替换失败的进程。在批处理作业中,使用参数启动进程。当过程完成时,工作就完成了。本指南

稍后将深入讲解编排器。

您可能会发现需要在单个容器中运行多个进程的场景。对于这种情况,因为每个容器只能有一个入口点,所以可以在容器中运行脚本,根据需要启动任意多个程序。例如,可以使用监督人工具或类似的工具在单个容器中启动多个进程。然而,即使您可以找到每个容器包含多个进程的体系结构,这种方法也不是很常见。

最佳实践

建议优先使用容器部署应用程序

以下情况以允许使用虚拟机进行部署:

  • 应用程序需要更多的控制(例如需要调整操作系统内核参数)
  • 应用程序需要大量内存
  • 应用程序是CPU密集型的
  • 应用程序是IO密集型的
  • 无法使用容器.
相关文章
|
15天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
8天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
16天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
15天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
15天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
15天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
2天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
19 0
|
4天前
|
监控 持续交付 API
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
11 0
|
4天前
|
JavaScript Linux 持续交付
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
24 0
|
10天前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
下一篇
无影云桌面