Logo
Section 1 / 7

简介

在本节课中,我们将概览一下本章内容将带给你哪些收获!

检查点

简介

在本节课中,我们将概览一下本章内容将带给你哪些收获!

...

微服务:定义

不幸的是,目前并没有一个被广泛认可的“微服务”定义。在本课程中,将采用以下定义:

微服务 是可独立部署的模块。

例如,一个电商系统可以划分为以下模块:

  • 订单处理
  • 用户注册
  • 商品搜索

通常情况下,这些模块会作为一个整体应用进行开发。在这种模式下,任何一个模块的变更都必须通过发布整个应用的新版本才能上线。然而,当这些模块以微服务的形式实现时,订单处理模块不仅可以独立于其他模块进行修改,甚至可以独立部署上线。

这大大加快了部署速度,并减少了所需的测试工作量,因为只需部署单个模块即可。由于这种更高的解耦程度,大型项目可以拆分为多个小型项目,每个项目负责一个独立的微服务。

从技术层面实现这一点的关键是:每个微服务必须是一个独立的进程。更优的解耦方案是为每个微服务提供独立的虚拟机或 Docker 容器。

在这种架构下,部署操作仅替换某个微服务的 Docker 容器,用新版本的容器启动并处理其请求。其他微服务不受影响,从而实现了真正的独立性。

...
电商系统可如上划分成多个模块

这一微服务定义的优势

将微服务定义为可独立部署的模块具有以下优势:

  • 定义非常简洁。

  • 具有高度的通用性,适用于各种常见的微服务系统。

  • 该定义基于“模块”这一概念,而模块是广为人知且易于理解的。这使得我们可以借鉴大量关于模块化设计的思想。同时,该定义也强调了微服务是更大系统的一部分,无法完全独立运行,必须与其他微服务协同集成。

  • 独立部署是微服务的核心特性,带来了诸多优势,因此至关重要。尽管定义简短,但它准确揭示了微服务最本质的特征。

部署单体架构

非微服务构成的系统只能整体部署,因此被称为 部署单体(deployment monolith)。当然,部署单体也可以划分为模块,但“部署单体”这一术语并不涉及系统的内部结构。

微服务的规模

上述微服务定义并未对微服务的大小做出规定。虽然“微服务”一词暗示了其应为小型服务,但在实际应用中,微服务的规模差异极大。有些微服务需要一个完整团队持续维护,而另一些可能仅由几百行代码组成。因此,微服务的大小并不适合作为定义的一部分。

本章概览

本章介绍了微服务的概念,并讨论了:

  • 微服务的优点和缺点,帮助读者评估该架构在特定项目中的适用性和价值。

  • 优点的讨论说明了微服务能够解决哪些问题,以及如何根据不同的场景灵活调整架构。

  • 缺点的分析揭示了其中的技术挑战与风险,并提出应对策略。

  • 准确识别优点与缺点,对于技术选型和架构决策至关重要——目标应是最大化收益,同时最小化潜在风险。

                                                 测 试  


下一节课我们将探讨使用微服务的优势。

Quiz

单选题

微服务的代码长度不应超过几百行。

1 / 3

前言

优点