ONEPSOFT | 软考学习知识库
deepread14|案例+微服务架构详解
知识点深度解读:微服务架构(服务拆分 / 服务治理 / 链路追踪)
一、知识点定位
一句话先讲透:微服务就是把一个 " 啥都干的大单体 " 拆成一堆 " 各管一摊、独立部署的小服务 ",再用注册中心让它们互相找得到、用 API 网关统一接待、用链路追踪在出问题时顺藤摸瓜找到是哪员 " 小将 " 掉链子。
二、教材原文精摘(原封不动,跨章节全覆盖)
【第 20 章 · 20.1.1 微服务系统简介】原文:
微服务是一种开发软件的架构和组织方法,它将大型应用程序拆分为一系列小型、自治的服务,每个服务都有自己的独立部署、运行和维护,并通过轻量级通信机制相互协作,从而形成一个整体的系统。
微服务架构在 2011 年左右逐渐兴起,打破了传统软件架构开发的模式,其借鉴了一些分布式系统和领域驱动设计的理念,注重将系统按业务领域进行划分,从而实现松耦合、可扩展和可维护的架构。
微服务系统拥有众多优势……1) 独立性和自治性……每个服务都是独立的,可以对其中的每个组件服务进行开发、部署、运营和扩展,而不影响其他服务的功能。2) 弹性和可伸缩性……只需增加特定服务的实例数量,而不需要整体扩展。3) 技术多样性……每个服务都可以使用不同的技术栈和编程语言进行开发……4) 专用性……每项服务都是针对一组功能设计的,并专注于解决特定的问题。5) 可组合性和可扩展性……6) 容错性和可恢复性……即使某个服务发生故障,整个系统仍然可以继续运行。
【第 20 章 · 20.1.2 微服务系统特征】原文:
【第 18 章 · 18.4.3 微服务架构演进历程】原文:
阶段 2:基于 SOA 的服务拆分——" 随 SOA 兴起,微服务架构概念深入发展。服务化架构开始通过服务拆分实现更小的服务颗粒度。同时,服务治理和服务注册中心等基础设施也得以快速发展 ";阶段 3:基于容器和服务框架(Spring Cloud / Netflix OSS);阶段 4:基于云原生的微服务架构(Kubernetes)。
【第 20 章 · 20.3.2 服务注册和发现】原文:
微服务架构中,服务的注册与发现是非常关键的一环……服务注册与发现的基本原理是:服务提供者将自己的服务注册到注册中心,服务消费者从注册中心中获取服务的相关信息,然后通过该信息来调用服务提供者。这样就实现了服务提供者和服务消费者之间的解耦,同时也可以保证服务的高可用性和扩展性。
Eureka 是 Netflix 公司开发的一款基于 REST 的服务治理框架……Eureka Server 是服务注册中心……每个微服务在启动时,会向 Eureka Server 注册自己,同时定时发送心跳包以保持与 Eureka Server 的通信。如果一个服务在一段时间内没有发送心跳包,Eureka Server 会将其视为不可用,从而剔除该服务实例。
【第 20 章 · 20.3.5 Zipkin 链路追踪】原文:
Zipkin 是一个分布式的应用程序追踪系统,可以帮助开发人员监测和解决复杂微服务应用中的问题。Zipkin 可以跟踪请求的路径,并显示请求在不同微服务之间的传递时间。
Zipkin 的架构主要由以下组件构成:(1) Collector:收集服务调用信息,将其发送到存储后端。(2) Storage:存储和检索服务调用信息。(3) API:允许用户查询和检索跟踪信息。(4) UI:展示跟踪数据和生成可视化图表。
Zipkin 使用一种名为 Span 的数据结构来表示单个操作的信息。每个 Span 包含了操作的名称、起始时间、结束时间、调用时间、操作 ID、父 ID 等信息。Zipkin 还支持将 Span 组成树状结构,以便更好地理解微服务之间的调用关系。
通过跟踪请求的路径,开发人员可以很容易地确定请求在哪些微服务中出现了问题,从而可以快速地诊断和解决问题。
三、系统解读(逐段讲透)
核心一句话总结:微服务 = 按业务拆成自治小服务(拆分)+ 注册中心让它们互相找得到、网关统一接待(治理)+ Zipkin 顺调用链定位故障(追踪)。拆得清、管得住、查得到,三件套缺一不可。
四、工程实践举例(土木工程类比)
你的背景是土木工程,咱们用 " 一个大型工程项目部的组织方式 " 来套:
这里正好补上 " 服务管理 " 的认知:微服务的 " 服务目录 (拆分)/服务级别与发现 (治理)/故障定位 (追踪)",和系规 IT 服务的 " 服务目录管理、服务级别管理、可用性保障 " 是同一套思想——只是从工地班组换成了软件服务。
知识点 ↔ 工程实践 对照表
| 教材知识点要素 | 你的实践场景对应 | 映射说明 |
|---|---|---|
| 按业务领域拆成自治小服务 | 包工队拆成土方/钢筋/混凝土等专业班组 | 都是 " 拆小、各管一摊、独立运作 " |
| 单一职责 / 服务自治 | 钢筋队只管绑筋、自己排班结算 | 都是 " 只干一件事、自己说了算 " |
| 服务注册与发现 | 调度中心记录各班组位置状态 | 都是 " 先报到、再查询、心跳保活 " |
| 心跳剔除不可用实例 | 半天没回话的队从名单划掉 | 都是 " 失联即剔除、保高可用 " |
| API 网关统一入口 | 项目部传达室统一收发分流 | 都是 " 对外唯一入口、路由/鉴权/限流 " |
| Zipkin Span 调用树 | 工序流转单 (父 ID 串起调用链) | 都是 " 顺调用链定位哪环出问题 " |
| 容错可恢复(一服务挂不影响整体) | 一个班组停工其他照干 | 都是 " 自治带来的容错性 " |