Spring Cloud微服务架构图解

Spring Cloud微服务架构图解

Java微服务实战:Spring Cloud全家桶构建企业级分布式系统一文中,我们详细介绍了Spring Cloud微服务架构的各个组件。为了让读者更直观地理解这些组件之间的关系,本文将通过一系列架构图来展示Spring Cloud微服务的整体架构和各组件间的交互关系。

整体架构图

graph TB
    subgraph "客户端层"
        A[Web浏览器] --> B[移动端APP]
        B --> C[小程序]
    end
    
    subgraph "网关层"
        D[API网关<br/>Spring Cloud Gateway]
    end
    
    subgraph "服务治理层"
        E[Nacos注册中心]
        F[Nacos配置中心]
        G[Sentinel限流熔断]
    end
    
    subgraph "核心业务服务层"
        H[认证授权服务<br/>Auth Service]
        I[用户服务<br/>User Service]
        J[订单服务<br/>Order Service]
        K[商品服务<br/>Product Service]
        L[支付服务<br/>Payment Service]
    end
    
    subgraph "数据存储层"
        M[(MySQL主库)]
        N[(MySQL从库)]
        O[(Redis缓存)]
        P[(MongoDB)]
        Q[(Elasticsearch)]
    end
    
    subgraph "消息中间件层"
        R[RabbitMQ]
        S[Kafka]
    end
    
    subgraph "监控运维层"
        T[Zipkin链路追踪]
        U[Grafana监控]
        V[Prometheus指标]
        W[Elastic Stack日志]
    end
    
    A --> D
    B --> D
    C --> D
    
    D --> E
    D --> F
    D --> G
    D --> H
    D --> I
    J --> R
    K --> S
    
    H --> E
    H --> F
    H --> M
    H --> O
    
    I --> E
    I --> F
    I --> M
    I --> O
    
    J --> E
    J --> F
    J --> M
    J --> O
    J --> I
    J --> K
    
    K --> E
    K --> F
    K --> M
    K --> O
    
    L --> E
    L --> F
    L --> M
    L --> O
    
    M --> N
    
    E -.-> T
    F -.-> T
    H -.-> T
    I -.-> T
    J -.-> T
    K -.-> T
    L -.-> T
    
    H -.-> U
    I -.-> U
    J -.-> U
    K -.-> U
    L -.-> U

服务注册与发现流程图

sequenceDiagram
    participant Client as 客户端
    participant Gateway as API网关
    participant Nacos as Nacos注册中心
    participant UserService as 用户服务
    participant OrderService as 订单服务
    
    UserService->>Nacos: 服务注册
    OrderService->>Nacos: 服务注册
    
    Client->>Gateway: 发起请求 /api/users/1
    Gateway->>Nacos: 查询用户服务实例
    Nacos-->>Gateway: 返回服务实例列表
    Gateway->>UserService: 转发请求
    UserService-->>Gateway: 返回响应
    Gateway-->>Client: 返回响应
    
    Client->>Gateway: 发起请求 /api/orders/1
    Gateway->>Nacos: 查询订单服务实例
    Nacos-->>Gateway: 返回服务实例列表
    Gateway->>OrderService: 转发请求
    OrderService-->>Gateway: 返回响应
    Gateway-->>Client: 返回响应

配置管理流程图

flowchart LR
    A[应用启动] --> B[连接Nacos配置中心]
    B --> C[拉取配置文件]
    C --> D[应用配置初始化]
    D --> E[应用正常运行]
    
    F[配置更新] --> G[Nacos配置变更]
    G --> H[推送配置变更事件]
    H --> I[应用监听配置变更]
    I --> J[重新加载配置]
    J --> K[应用配置刷新]
    
    style A fill:#FFE4B5,stroke:#333
    style E fill:#98FB98,stroke:#333
    style F fill:#FFB6C1,stroke:#333
    style K fill:#87CEEB,stroke:#333

API网关路由流程图

graph LR
    A[客户端请求] --> B{路由匹配}
    B -->|/api/users/**| C[用户服务]
    B -->|/api/orders/**| D[订单服务]
    B -->|/api/products/**| E[商品服务]
    B -->|/api/auth/**| F[认证服务]
    B -->|其他| G[默认处理]
    
    C --> H[负载均衡]
    D --> H
    E --> H
    F --> H
    
    H --> I[服务实例1]
    H --> J[服务实例2]
    H --> K[服务实例3]
    
    I --> L[响应客户端]
    J --> L
    K --> L
    
    style A fill:#FFE4B5
    style B fill:#DDA0DD
    style C fill:#87CEEB
    style D fill:#87CEEB
    style E fill:#87CEEB
    style F fill:#87CEEB
    style G fill:#FFB6C1
    style H fill:#98FB98
    style L fill:#98FB98

RBAC权限控制流程图

graph TD
    A[用户访问资源] --> B{是否登录?}
    B -->|否| C[重定向到登录页]
    B -->|是| D[解析JWT Token]
    D --> E{Token有效?}
    E -->|否| F[返回401未授权]
    E -->|是| G[获取用户权限]
    G --> H{是否有权限访问?}
    H -->|否| I[返回403禁止访问]
    H -->|是| J[处理业务请求]
    J --> K[返回业务结果]
    
    style A fill:#FFE4B5
    style B fill:#DDA0DD
    style D fill:#DDA0DD
    style E fill:#DDA0DD
    style G fill:#DDA0DD
    style H fill:#DDA0DD
    style J fill:#98FB98
    style K fill:#98FB98

分布式事务处理流程图

sequenceDiagram
    participant Client as 客户端
    participant OrderService as 订单服务
    participant InventoryService as 库存服务
    participant AccountService as 账户服务
    participant Seata as Seata TC
    
    Client->>OrderService: 创建订单请求
    OrderService->>Seata: 开启全局事务
    Seata-->>OrderService: 返回XID
    
    OrderService->>OrderService: 创建订单记录
    OrderService->>InventoryService: 扣减库存(RM)
    InventoryService->>Seata: 注册分支事务
    Seata-->>InventoryService: 确认注册
    
    InventoryService->>InventoryService: 扣减库存
    InventoryService-->>OrderService: 扣减成功
    
    OrderService->>AccountService: 扣减余额(RM)
    AccountService->>Seata: 注册分支事务
    Seata-->>AccountService: 确认注册
    
    AccountService->>AccountService: 扣减余额
    AccountService-->>OrderService: 扣减成功
    
    OrderService->>OrderService: 更新订单状态
    OrderService->>Seata: 提交全局事务
    Seata->>InventoryService: 提交分支事务
    Seata->>AccountService: 提交分支事务
    Seata-->>OrderService: 事务提交成功
    
    OrderService-->>Client: 返回创建成功

链路追踪示意图

graph LR
    A[Trace ID: abc123] --> B[Span1: Gateway接收请求]
    B --> C[Span2: 调用用户服务]
    C --> D[Span3: 查询数据库]
    C --> E[Span4: 调用外部API]
    B --> F[Span5: 调用订单服务]
    F --> G[Span6: 查询数据库]
    F --> H[Span7: 调用库存服务]
    H --> I[Span8: 更新缓存]
    
    style A fill:#FFE4B5
    style B fill:#87CEEB
    style C fill:#87CEEB
    style F fill:#87CEEB
    style D fill:#98FB98
    style E fill:#98FB98
    style G fill:#98FB98
    style H fill:#87CEEB
    style I fill:#98FB98
    
    linkStyle 0 stroke:#FF6347,stroke-width:2px;
    linkStyle 1 stroke:#FF6347,stroke-width:2px;
    linkStyle 2 stroke:#32CD32,stroke-width:2px;
    linkStyle 3 stroke:#32CD32,stroke-width:2px;
    linkStyle 4 stroke:#FF6347,stroke-width:2px;
    linkStyle 5 stroke:#32CD32,stroke-width:2px;
    linkStyle 6 stroke:#32CD32,stroke-width:2px;
    linkStyle 7 stroke:#32CD32,stroke-width:2px;

微服务部署架构图

graph TB
    subgraph "Kubernetes集群"
        subgraph "Master节点"
            A[Kube-API Server]
            B[etcd]
            C[Controller Manager]
            D[Scheduler]
        end
        
        subgraph "Worker节点1"
            E[Docker/Podman]
            F[kubelet]
            G[kube-proxy]
            H[Nginx Ingress]
            I[Gateway Pod]
        end
        
        subgraph "Worker节点2"
            J[Docker/Podman]
            K[kubelet]
            L[kube-proxy]
            M[User Service Pod1]
            N[User Service Pod2]
        end
        
        subgraph "Worker节点3"
            O[Docker/Podman]
            P[kubelet]
            Q[kube-proxy]
            R[Order Service Pod1]
            S[Order Service Pod2]
        end
        
        subgraph "外部服务"
            T[Nacos Server]
            U[MySQL Cluster]
            V[Redis Cluster]
        end
    end
    
    A <--> B
    A <--> C
    A <--> D
    H <--> I
    I <--> M
    I <--> N
    I <--> R
    I <--> S
    M <--> T
    N <--> U
    R <--> V
    S <--> T
    
    style A fill:#FFE4B5
    style H fill:#87CEEB
    style I fill:#98FB98
    style M fill:#DDA0DD
    style N fill:#DDA0DD
    style R fill:#DDA0DD
    style S fill:#DDA0DD

通过以上架构图解,我们可以更直观地理解Spring Cloud微服务架构的各个组件及其相互关系。这些图表不仅有助于技术团队在设计和开发过程中进行参考,也为系统运维和故障排查提供了可视化的支持。

在实际项目中,我们可以根据业务需求和技术栈选择合适的组件,并通过持续优化架构来提升系统的性能、可靠性和可维护性。


本文由xueyise创作,通过图解方式展示Spring Cloud微服务架构