返回主页 学习路径
微服务架构
独立部署 · 灵活扩展 · 技术异构
微服务架构(Microservices Architecture)是一种将单一应用程序划分为一组小型服务的设计方法,每个服务运行在自己的进程中,通过轻量级机制(通常是 HTTP/REST 或消息队列)进行通信。微服务架构由 Martin Fowler 和 James Lewis 于 2014 年正式提出,已成为构建大型分布式系统、云原生应用和 DevOps 环境的标准架构模式。微服务架构支持独立部署、灵活扩展和技术异构,是现代软件架构的主流选择。
分布式系统标准 · 云原生核心
📅 诞生时间2014年 · Martin Fowler / James Lewis
🧩 类型分布式架构
📊 架构模式架构设计模式
⚡性能
7/10
📦生态
9/10
🧠易用
5/10
🚀扩展性
9/10

📑 本文目录

📌 第一部分:微服务架构概览与定位

1.1 定义与全称

微服务架构(Microservices Architecture)是一种将单一应用程序划分为一组小型服务的设计方法。每个服务运行在自己的进程中,通过轻量级机制(通常是 HTTP/REST 或消息队列)进行通信。微服务架构由 Martin Fowler 和 James Lewis 于 2014 年正式提出。

1.2 核心定位

微服务架构的核心定位是 可独立部署的分布式系统。它提供了:

1.3 主要应用领域

1.4 知名案例


⚙️ 第二部分:核心概念

2.1 微服务 vs 单体架构

对比项 单体架构 微服务架构
部署整体部署独立部署
伸缩整体扩展按需扩展
技术栈单一技术栈多技术栈
团队大型团队独立小团队
故障隔离不隔离隔离
开发速度
运维复杂度
适用场景小型项目大型项目

2.2 核心组件


🔧 第三部分:关键技术

3.1 服务通信

// 同步通信 - HTTP/REST(RESTful API)
GET /api/users/123
POST /api/orders

// 同步通信 - RPC(gRPC、Dubbo)
// gRPC 示例(Protobuf)
service UserService {
    rpc GetUser (UserRequest) returns (UserResponse);
}

// 异步通信 - 消息队列(Kafka、RabbitMQ)
// 生产者发送消息
producer.send("user.created", userData);
// 消费者处理消息
consumer.subscribe("user.created", processUserCreated);

3.2 API 网关配置

# Spring Cloud Gateway 配置示例
spring:
  cloud:
    gateway:
      routes:
        - id: user-service
          uri: lb://USER-SERVICE
          predicates:
            - Path=/api/users/**
        - id: order-service
          uri: lb://ORDER-SERVICE
          predicates:
            - Path=/api/orders/**
        - id: product-service
          uri: lb://PRODUCT-SERVICE
          predicates:
            - Path=/api/products/**
        - id: auth-service
          uri: lb://AUTH-SERVICE
          predicates:
            - Path=/api/auth/**

# 全局过滤器(认证、日志、限流)

3.3 服务注册与发现

// Spring Cloud Netflix Eureka
// 服务端配置
@EnableEurekaServer
@SpringBootApplication
public class EurekaServer {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer.class, args);
    }
}

// 客户端配置
@EnableDiscoveryClient
@SpringBootApplication
public class UserService {
    public static void main(String[] args) {
        SpringApplication.run(UserService.class, args);
    }
}

// 服务调用(使用负载均衡)
@RestController
public class UserController {
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/user-with-orders/{id}")
    public UserWithOrders getUserWithOrders(@PathVariable Long id) {
        // 通过服务名调用,负载均衡自动处理
        User user = restTemplate.getForObject(
            "http://USER-SERVICE/api/users/" + id,
            User.class
        );
        List orders = restTemplate.getForObject(
            "http://ORDER-SERVICE/api/orders?userId=" + id,
            List.class
        );
        return new UserWithOrders(user, orders);
    }
}

3.4 熔断器配置

// Resilience4j 熔断器配置
@Configuration
public class CircuitBreakerConfig {
    @Bean
    public Customizer defaultCustomizer() {
        return factory -> factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
            .circuitBreakerConfig(CircuitBreakerConfig.custom()
                .slidingWindowSize(10)
                .failureRateThreshold(50)
                .waitDurationInOpenState(Duration.ofSeconds(10))
                .build())
            .timeLimiterConfig(TimeLimiterConfig.custom()
                .timeoutDuration(Duration.ofSeconds(5))
                .build())
            .build());
    }
}

// 使用熔断器
@Service
public class UserService {
    @Autowired
    private UserClient userClient;

    @CircuitBreaker(name = "userService", fallbackMethod = "getFallbackUser")
    public User getUser(Long id) {
        return userClient.getUser(id);
    }

    public User getFallbackUser(Long id, Throwable t) {
        return new User(id, "Fallback User");
    }
}

3.5 分布式追踪

// Spring Cloud Sleuth + Zipkin
// 服务添加依赖

    org.springframework.cloud
    spring-cloud-starter-sleuth


    org.springframework.cloud
    spring-cloud-sleuth-zipkin


// 配置
spring:
  sleuth:
    sampler:
      probability: 1.0
  zipkin:
    base-url: http://zipkin:9411

// 请求自动添加 Trace ID 和 Span ID
// 在日志中显示
2024-01-15 10:30:00.123 INFO [user-service,abc123def456,789012,true]

3.6 分布式事务


📐 第四部分:微服务设计模式

4.1 常见模式

4.2 部署模式


⚖️ 第五部分:微服务 vs 其他架构

5.1 微服务 vs 单体架构

5.2 微服务 vs SOA

5.3 微服务 vs 服务网格


🧠 第六部分:学习建议

1
前置知识

单体架构、RESTful API、消息队列、Docker

2
核心概念

微服务定义、服务拆分、服务通信、API 网关

3
关键技术

服务发现、熔断器、分布式追踪、分布式事务

4
实践落地

Spring Cloud(Java)、Go Micro、Kubernetes、服务网格

推荐学习资源


🎯 总结升华

微服务架构是大型系统的"解耦之道"。

它用 独立部署、技术异构、弹性伸缩 解决了单体架构在大规模系统下的瓶颈。微服务是现代云原生应用的核心架构,也是大型互联网公司的标准选择。

掌握微服务架构,意味着你能 构建可扩展、高可用、易于维护的大型分布式系统

"微服务是大型系统的终极解耦方案。" 🏗️

🔖 相关标签
#微服务 #分布式系统 #云原生 #API 网关 #服务发现 #Spring Cloud #Kubernetes
📄 本文档为微服务架构完整白皮书 · 最后更新于 2026年06月28日