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微服务架构