1. 引言

微服务架构已成为构建复杂分布式系统的首选方案。然而,随着服务数量的增长,如何清晰地划分各层职责、管理服务间依赖,成为架构设计的关键挑战。本文将深入解析微服务架构的六层模型,通过层次化的视角,帮助你理解从底层基础设施到顶层用户接入的完整技术栈。

2. 六层模型总览

微服务架构六层模型将整个系统自下而上划分为六个逻辑层,每一层都承担着特定的核心职责,并依赖一系列成熟的技术组件来实现。

层级 名称 核心职责 关键角色与技术
L1 基础设施层 提供计算、网络、存储等底层资源。 物理机、虚拟机、云主机、Docker、Kubernetes (K8s)
L2 平台服务层 提供微服务架构所需的通用后端服务。 注册中心 (Nacos)、配置中心 (Apollo)、消息队列 (RocketMQ)、分布式事务 (Seata)
L3 网关层 作为系统唯一入口,负责路由、认证、限流等。 Spring Cloud Gateway、Kong、Nginx
L4 业务服务层 承载具体业务逻辑,是微服务的核心。 Spring Boot、Dubbo、Go-zero 等框架开发的各个独立服务
L5 可观测性层 用于监控、追踪和诊断系统运行状态。 Prometheus (监控)、Grafana (仪表盘)、SkyWalking (链路追踪)、ELK (日志)
L6 接入与治理层 连接外部用户并实现自动化管理与安全策略。 负载均衡、CDN、API 文档、服务网格 (Istio)、CI/CD 流水线

3. 各层深度解析

3.1 L1:基础设施层

基础设施层是整个微服务架构的基石,它抽象了底层物理或虚拟资源,为上层应用提供稳定、弹性的运行环境。

  • 核心职责:提供计算(CPU、内存)、网络(VPC、负载均衡)、存储(块存储、对象存储)等资源。
  • 关键技术
    • 容器化:Docker 提供了轻量级的应用打包和运行环境,确保了环境一致性。
    • 编排调度:Kubernetes (K8s) 作为容器编排的事实标准,负责服务的自动部署、弹性伸缩、服务发现和负载均衡。
    • 云原生:云主机、虚拟机等 IaaS 层资源为 K8s 集群提供了底层支撑。

3.2 L2:平台服务层

平台服务层为所有微服务提供通用的、可复用的后端能力,避免了每个服务重复实现这些基础功能。

  • 核心职责:提供服务注册与发现、配置管理、异步通信、分布式事务等通用能力。
  • 关键技术
    • 注册中心 (Nacos/Eureka):管理所有微服务的实例地址,实现服务的动态发现。
    • 配置中心 (Apollo/Nacos Config):集中管理应用的配置信息,支持配置的动态刷新。
    • 消息队列 (RocketMQ/Kafka):实现服务间的异步解耦、流量削峰和事件驱动。
    • 分布式事务 (Seata):解决跨服务的数据一致性问题。

3.3 L3:网关层

网关层是系统的统一入口,所有外部请求都必须经过网关,它承担着安全、路由和流量控制的重要职责。

  • 核心职责:请求路由、身份认证、权限校验、限流熔断、协议转换、日志记录。
  • 关键技术
    • Spring Cloud Gateway:基于 Spring WebFlux 的响应式网关,功能强大,与 Spring Cloud 生态集成良好。
    • Kong:基于 OpenResty 的高性能网关,支持丰富的插件生态。
    • Nginx:高性能的 Web 服务器和反向代理,常作为最前端的流量入口。

3.4 L4:业务服务层

业务服务层是微服务的核心,承载着具体的业务逻辑。每个服务都围绕特定的业务领域进行构建,独立开发、部署和扩展。

  • 核心职责:实现具体的业务功能,如用户管理、订单处理、商品管理等。
  • 关键技术
    • Spring Boot:Java 生态中最流行的微服务开发框架,简化了服务搭建和配置。
    • Dubbo:高性能的 Java RPC 框架,专注于服务间的高效调用。
    • Go-zero:Go 语言生态中的微服务框架,以其高性能和工程化实践著称。

3.5 L5:可观测性层

可观测性层是保障系统稳定运行的“眼睛”,通过收集和分析系统的运行数据,帮助开发和运维人员快速定位问题。

  • 核心职责:提供 Metrics(指标)、Tracing(链路追踪)、Logging(日志)三大支柱能力。
  • 关键技术
    • 监控 (Prometheus + Grafana):Prometheus 负责采集和存储时序指标数据,Grafana 提供强大的可视化仪表盘。
    • 链路追踪 (SkyWalking):追踪一次请求在多个服务间的完整调用链路,帮助分析性能瓶颈和故障点。
    • 日志 (ELK Stack):Elasticsearch 负责日志的存储和搜索,Logstash 负责日志的收集和解析,Kibana 提供日志的可视化界面。

3.6 L6:接入与治理层

接入与治理层位于架构的最顶层,负责连接外部用户,并实现自动化的运维管理和安全策略。

  • 核心职责:流量接入、负载分发、安全防护、API 管理、服务治理、自动化部署。
  • 关键技术
    • 负载均衡:将外部流量分发到多个网关或服务实例,提高系统的可用性和吞吐量。
    • CDN:加速静态资源的访问,提升全球用户的访问体验。
    • 服务网格 (Istio):将服务通信的逻辑从业务代码中剥离,通过 Sidecar 代理实现流量管理、安全策略和可观测性。
    • CI/CD 流水线:实现代码的自动化构建、测试和部署,加速交付效率。

4. 微服务总体架构图

在这里插入图片描述

4.1宏观架构层次图

这个图展示了微服务架构的六层模型,帮助你理解各层之间的职责与依赖关系。

L2 平台服务层

L4 业务服务层

用户/客户端

L5 可观测性层

日志 ELK

监控 Prometheus

链路 SkyWalking

L1 基础设施层

Kubernetes

Docker容器

L3 网关层

API网关
路由/鉴权/限流

L6 接入与治理层

CDN

负载均衡

API文档

Web/移动端/第三方

用户服务

订单服务

库存服务

商品服务

注册中心
Nacos

配置中心
Apollo

消息队列
RocketMQ

分布式事务
Seata


4.2 一次完整请求的时序图

这个图展示了从用户点击到数据库返回的完整调用流程:

监控系统 消息队列 数据库 注册中心 用户服务 订单服务 认证服务 API网关 负载均衡 DNS解析 客户端 监控系统 消息队列 数据库 注册中心 用户服务 订单服务 认证服务 API网关 负载均衡 DNS解析 客户端 异步发送 1. 请求 api.example.com 返回 IP 地址 2. HTTP 请求 3. 转发请求 4. 校验 JWT Token Token 有效 5. 查询订单服务地址 返回 10.0.0.1:8080 6. 转发到订单服务 7. 查询用户服务地址 返回 10.0.0.2:8080 8. 调用用户服务获取用户信息 9. 查询用户数据 返回用户数据 返回用户信息 10. 保存订单数据 保存成功 11. 返回订单结果 12. 返回响应给用户 13. 发送订单创建事件 确认收到 14. 上报调用链路

4.3微服务内部架构图

这个图展示了单个微服务内部的层次结构:

对外依赖

微服务内部

跨切面

数据层

业务层

接口层

REST Controller

请求校验

业务逻辑层

领域模型

数据访问层

Redis缓存

过滤器

拦截器

全局异常处理

数据库

API网关

注册中心

配置中心

消息队列

其他服务


4.4 服务注册与发现流程图

这个图展示了服务如何自动找到彼此

故障处理

运行阶段

启动阶段

1. 注册实例

2. 注册实例

3. 注册实例

4. 查询服务B地址

5. 返回 10.0.0.2:8080

6. 直接调用

7. 心跳检测

7. 心跳检测

7. 心跳检测

8. 心跳超时

9. 剔除实例

健康检查

服务A 启动

注册中心
Nacos

服务B 启动

服务C 启动

服务A 需要调用服务B

服务B 实例

服务C 宕机


4.5 数据流与缓存流程图

这个图展示了请求如何处理以及缓存的使用

异步处理

命中

未命中

命中

未命中

Binlog变更

用户请求

API网关

本地缓存?

直接返回

Redis缓存?

写入本地缓存

返回数据

数据库

写入Redis

写入本地缓存

返回数据

消息队列

消费者

更新缓存


关键要点总结

流程图 核心关注点 适用场景
宏观架构层次图 各层职责与依赖关系 架构设计、技术选型
请求时序图 调用流程、网络交互 问题排查、性能优化
服务内部架构图 代码组织、分层设计 开发规范、代码审查
服务注册发现图 动态寻址、高可用 部署运维、故障演练
数据流缓存图 数据流转、性能优化 缓存设计、数据一致性
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐