Spring Cloud完全指南:从入门到精通

​​​​​目录

​​

1. 微服务基础概念

2. Spring Cloud概述

3. 服务注册与发现

4. 负载均衡

5. 服务调用

6. 服务熔断与降级

7. 服务网关

8. 配置管理

9. 消息总线

10. 链路追踪

11. 实战架构示例

12. 最佳实践

总结


1. 微服务基础概念

1.1 什么是微服务?

形象比喻:

  • 单体应用:就像一个大工厂,所有生产线都在一个厂房里
  • 微服务:就像一个产业园️,每个小工厂专门做一件事,通过道路相连

1.2 微服务架构的特点

核心特征:

  • 服务独立:每个服务独立开发、部署、运行
  • 职责单一:一个服务只做一件事,做好一件事
  • 技术多样:不同服务可以用不同技术栈
  • 数据隔离:每个服务有自己的数据库
  • 故障隔离:一个服务出问题不影响其他服务

1.3 微服务 vs 单体应用

特性 单体应用 微服务
架构复杂度 简单 复杂
开发速度 初期快,后期慢 初期慢,后期快
部署方式 整体部署 独立部署
技术栈 统一技术栈 可以多样化
团队协作 紧耦合 松耦合
故障影响 影响整个系统 影响单个服务

1.4 微服务的挑战

技术挑战:

  • 服务发现:如何找到其他服务?
  • ⚖️ 负载均衡:如何分发请求?
  • 配置管理:如何统一管理配置?
  • 故障处理:如何处理服务故障?
  • 监控追踪:如何监控整个系统?

2. Spring Cloud概述

2.1 什么是Spring Cloud?

Spring Cloud是一套微服务开发的工具箱,提供了微服务开发中常见问题的解决方案。

核心理念:

"约定优于配置,开箱即用"

2.2 Spring Cloud架构图

┌─────────────────────────────────────────────────────────────┐
│                    Spring Cloud生态系统                      │
├─────────────────────────────────────────────────────────────┤
│  服务网关        │  服务注册中心    │  配置管理中心           │
│  Gateway        │  Eureka/Nacos   │  Config Server         │
├─────────────────────────────────────────────────────────────┤
│  服务调用        │  负载均衡        │  熔断降级               │
│  OpenFeign      │  LoadBalancer   │  Hystrix/Sentinel      │
├─────────────────────────────────────────────────────────────┤
│  链路追踪        │  消息总线        │  安全管理               │
│  Sleuth         │  Bus            │  Security              │
└─────────────────────────────────────────────────────────────┘

2.3 Spring Cloud版本对应关系

Spring Cloud Spring Boot
2023.0.x 3.2.x
2022.0.x 3.0.x
2021.0.x 2.6.x
2020.0.x 2.4.x

2.4 核心组件概览

服务治理层:

  • Eureka/Nacos:服务注册与发现
  • Ribbon/LoadBalancer:客户端负载均衡

服务调用层:

  • OpenFeign:声明式服务调用
  • Gateway:API网关

服务保障层:

  • Hystrix/Sentinel:熔断降级
  • Config:配置管理

服务监控层:

  • Sleuth:链路追踪
  • Admin:服务监控

3. 服务注册与发现

3.1 为什么需要服务注册与发现?

问题场景: 假设你有100个微服务,每个服务的IP和端口都可能变化,如何让服务之间互相找到?

解决方案: 服务注册中心就像电话簿,所有服务都把自己的"电话号码"登记在上面。

3.2 Eureka服务注册中心

3.2.1 Eureka架构原理
┌─────────────────┐    注册    ┌─────────────────┐
│   服务提供者     │ ────────► │   Eureka Server │
│  (Producer)     │           │  (注册中心)      │
└─────────────────┘           └─────────────────┘
                                       │
                              发现     │
                                       ▼
                            ┌─────────────────┐
                            │   服务消费者     │
                            │  (Consumer)     │
                            └─────────────────┘
3.2.2 Eureka Server搭建

1. 依赖配置


    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-server

2. 启动类

@EnableEurekaServer  // 开启Eureka服务端
@SpringBootApplication
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

3. 配置文件

server:
  port: 8761  # Eureka默认端口

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false  # 自己不注册到注册中心
    fetch-registry: false        # 不从注册中心获取服务信息
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.2.3 Eureka Client配置

1. 服务提供者

@EnableEurekaClient  // 开启Eureka客户端
@SpringBootApplication
public class ProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }
}
spring:
  application:
    name: user-service  # 服务名称,非常重要!

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true  # 使用IP注册

3.3 服务发现原理

发现过程:

  1. 服务启动:向Eureka注册自己的信息
  2. 心跳续约:每30秒发送一次心跳
  3. 服务拉取:消费者获取服务列表
  4. 服务调用:通过服务名调用

核心概念:

  • 服务注册:把自己的地址告诉注册中心
  • 服务发现:从注册中心查找其他服务
  • 健康检查:定期检查服务是否可用
  • 服务剔除:移除不健康的服务实例

3.4 Nacos vs Eureka

特性 Eureka Nacos
一致性协议 AP (可用性优先) CP + AP 可选
健康检查 Client心跳 Server主动检测
配置管理 不支持 支持
多数据中心 支持 支持
界面功能 基础 功能丰富

4. 负载均衡

4.1 什么是负载均衡?

生活比喻: 想象一家银行有3个窗口,客户来了如何分配?负载均衡就是排队叫号系统

4.2 客户端负载均衡 vs 服务端负载均衡

服务端负载均衡(如Nginx):

客户端 → Nginx → 服务器1
             → 服务器2  
             → 服务器3

客户端负载均衡(Spring Cloud):

客户端 → (内置算法选择) → 服务器1/2/3

你可能感兴趣的:(spring,cloud,spring,后端)