这是一个全面的Spring Cloud微服务学习项目,涵盖了从Spring Cloud Brixton到Greenwich版本,以及Spring Cloud Alibaba的完整微服务技术栈。项目通过电影用户管理系统演示了微服务架构的各个核心组件。
| 微服务角色 | 技术选型 |
|---|---|
| 服务注册与发现 | Eureka Server/Client |
| 服务提供者 | Spring Boot + Spring MVC + JPA + H2 |
| 服务消费者 | Ribbon/Feign + RestTemplate |
| 熔断器 | Hystrix + Hystrix Dashboard + Turbine |
| 配置中心 | Spring Cloud Config Server/Client |
| API网关 | Zuul / Spring Cloud Gateway |
| 分布式链路追踪 | Sleuth + Zipkin |
| 服务治理 | Spring Cloud Alibaba (Nacos + Sentinel) |
spring-cloud-study/
├── 2016-Brixton/ # Spring Cloud Brixton版本示例
│ ├── microservice-discovery-eureka/ # Eureka注册中心
│ ├── microservice-provider-user/ # 用户服务提供者
│ ├── microservice-consumer-movie-ribbon/ # Ribbon消费者
│ ├── microservice-consumer-movie-feign/ # Feign消费者
│ ├── microservice-hystrix-dashboard/ # Hystrix监控面板
│ ├── microservice-hystrix-turbine/ # Turbine聚合监控
│ ├── microservice-config-server/ # 配置中心服务端
│ ├── microservice-config-client/ # 配置中心客户端
│ └── microservice-api-gateway/ # Zuul API网关
├── 2018-Finchley/ # Spring Cloud Finchley版本示例
│ ├── microservice-discovery-eureka/ # Eureka注册中心
│ ├── microservice-provider-user/ # 用户服务提供者
│ ├── microservice-consumer-movie-ribbon/ # Ribbon消费者
│ ├── microservice-consumer-movie-feign/ # Feign消费者
│ ├── microservice-hystrix-dashboard/ # Hystrix监控面板
│ ├── microservice-hystrix-turbine/ # Turbine聚合监控
│ ├── microservice-config-server/ # 配置中心服务端
│ ├── microservice-config-client/ # 配置中心客户端
│ ├── microservice-gateway-zuul/ # Zuul网关
│ ├── microservice-provider-user-sleuth/ # 链路追踪
│ └── microservice-provider-user-sleuth-zipkin/ # Zipkin链路追踪
├── 2019-Greenwich/ # Spring Cloud Greenwich版本示例
│ └── spring-cloud-gateway-websocket/ # Gateway WebSocket代理
└── 2019-Spring-Cloud-Alibaba/ # Spring Cloud Alibaba示例
├── microservice-provider-user/ # 用户服务提供者
├── microservice-nacos-config/ # Nacos配置中心
├── microservice-consumer-movie-ribbon/ # Ribbon消费者
└── microservice-consumer-movie-ribbon-sentinel/ # Sentinel熔断器
- Spring Boot: 2.0.7.RELEASE (Finchley) / 1.4.0.RELEASE (Brixton)
- Spring Cloud: Finchley.SR2 / Brixton.SR5 / Greenwich.SR2
- Spring Cloud Alibaba: 0.2.1.RELEASE
- Eureka: 服务注册与发现
- Ribbon: 客户端负载均衡
- Feign: 声明式HTTP客户端
- Hystrix: 熔断器
- Zuul: API网关
- Spring Cloud Gateway: 新一代API网关
- Spring Cloud Config: 配置中心
- Sleuth + Zipkin: 分布式链路追踪
- H2 Database: 内存数据库
- Spring Data JPA: 数据访问层
- Spring Boot Actuator: 应用监控
- Hystrix Dashboard: 熔断器监控
- Turbine: 聚合监控
- Lombok: 简化Java代码
- Maven: 项目构建工具
| 工具 | 版本 |
|---|---|
| JDK | 1.8+ |
| Maven | 3.x+ |
| IDE | IntelliJ IDEA / Eclipse |
在 C:\Windows\System32\drivers\etc\hosts 文件中添加:
127.0.0.1 discovery config-server gateway movie user feign ribbon
# 进入Eureka服务目录
cd 2018-Finchley/microservice-discovery-eureka
mvn spring-boot:runcd 2018-Finchley/microservice-config-server
mvn spring-boot:runcd 2018-Finchley/microservice-provider-user
mvn spring-boot:runcd 2018-Finchley/microservice-consumer-movie-ribbon
mvn spring-boot:runcd 2018-Finchley/microservice-gateway-zuul
mvn spring-boot:run| 服务名称 | 端口 | 描述 | 访问地址 |
|---|---|---|---|
| microservice-discovery-eureka | 8761 | Eureka注册中心 | http://localhost:8761 |
| microservice-provider-user | 8000 | 用户服务提供者 | http://localhost:8000/users/{id} |
| microservice-consumer-movie-ribbon | 8010 | Ribbon消费者 | http://localhost:8010/movies/users/{id} |
| microservice-consumer-movie-feign | 8020 | Feign消费者 | http://localhost:8020/feign/{id} |
| microservice-hystrix-dashboard | 8030 | Hystrix监控 | http://localhost:8030/hystrix.stream |
| microservice-config-server | 8040 | 配置中心 | http://localhost:8040 |
| microservice-gateway-zuul | 8050 | API网关 | http://localhost:8050 |
- microservice-simple-provider-user: 简单的服务提供者
- microservice-simple-consumer-movie: 简单的服务消费者
- microservice-discovery-eureka: 服务注册与发现
- microservice-consumer-movie-ribbon: Ribbon负载均衡
- microservice-consumer-movie-feign: Feign声明式调用
- microservice-consumer-movie-ribbon-hystrix-common: Hystrix熔断器
- microservice-hystrix-dashboard: Hystrix监控面板
- microservice-hystrix-turbine: Turbine聚合监控
- microservice-config-server: 配置中心服务端
- microservice-config-client: 配置中心客户端
- microservice-config-server-encryption: 配置加密
- microservice-gateway-zuul: Zuul网关
- microservice-gateway-zuul-fallback: 网关降级
- microservice-provider-user-sleuth: Sleuth链路追踪
- microservice-provider-user-sleuth-zipkin: Zipkin链路追踪
- spring-cloud-gateway-websocket: Gateway WebSocket代理
- microservice-nacos-config: Nacos配置中心
- microservice-consumer-movie-ribbon-sentinel: Sentinel熔断器
- 提供用户信息查询接口
- 使用H2内存数据库存储用户数据
- 支持JPA自动创建表结构
- 消费用户服务获取用户信息
- 演示Ribbon负载均衡
- 演示Feign声明式调用
- Hystrix熔断器保护
- 服务降级处理
- 实时监控面板
- 集中配置管理
- 配置热更新
- 配置加密解密
- 统一入口
- 路由转发
- 服务降级
注意: 2016-Brixton版本的代码相对陈旧,建议优先学习2018-Finchley版本的示例。