Skip to content

这是一个全面的Spring Cloud微服务学习项目,涵盖了从Spring Cloud Brixton到Greenwich版本,以及Spring Cloud Alibaba的完整微服务技术栈。项目通过电影用户管理系统演示了微服务架构的各个核心组件。

Notifications You must be signed in to change notification settings

via-He/spring-cloud-study

 
 

Repository files navigation

Spring Cloud 微服务学习项目

📖 项目简介

这是一个全面的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

启动顺序

1. 启动注册中心

# 进入Eureka服务目录
cd 2018-Finchley/microservice-discovery-eureka
mvn spring-boot:run

访问: http://localhost:8761

2. 启动配置中心(可选)

cd 2018-Finchley/microservice-config-server
mvn spring-boot:run

3. 启动服务提供者

cd 2018-Finchley/microservice-provider-user
mvn spring-boot:run

4. 启动服务消费者

cd 2018-Finchley/microservice-consumer-movie-ribbon
mvn spring-boot:run

5. 启动API网关

cd 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

📚 学习路径

1. 基础微服务 (2018-Finchley)

  • microservice-simple-provider-user: 简单的服务提供者
  • microservice-simple-consumer-movie: 简单的服务消费者
  • microservice-discovery-eureka: 服务注册与发现

2. 负载均衡 (2018-Finchley)

  • microservice-consumer-movie-ribbon: Ribbon负载均衡
  • microservice-consumer-movie-feign: Feign声明式调用

3. 熔断器 (2018-Finchley)

  • microservice-consumer-movie-ribbon-hystrix-common: Hystrix熔断器
  • microservice-hystrix-dashboard: Hystrix监控面板
  • microservice-hystrix-turbine: Turbine聚合监控

4. 配置中心 (2018-Finchley)

  • microservice-config-server: 配置中心服务端
  • microservice-config-client: 配置中心客户端
  • microservice-config-server-encryption: 配置加密

5. API网关 (2018-Finchley)

  • microservice-gateway-zuul: Zuul网关
  • microservice-gateway-zuul-fallback: 网关降级

6. 链路追踪 (2018-Finchley)

  • microservice-provider-user-sleuth: Sleuth链路追踪
  • microservice-provider-user-sleuth-zipkin: Zipkin链路追踪

7. Spring Cloud Gateway (2019-Greenwich)

  • spring-cloud-gateway-websocket: Gateway WebSocket代理

8. Spring Cloud Alibaba (2019-Spring-Cloud-Alibaba)

  • microservice-nacos-config: Nacos配置中心
  • microservice-consumer-movie-ribbon-sentinel: Sentinel熔断器

🔧 核心功能演示

用户服务

  • 提供用户信息查询接口
  • 使用H2内存数据库存储用户数据
  • 支持JPA自动创建表结构

电影服务

  • 消费用户服务获取用户信息
  • 演示Ribbon负载均衡
  • 演示Feign声明式调用

熔断器

  • Hystrix熔断器保护
  • 服务降级处理
  • 实时监控面板

配置中心

  • 集中配置管理
  • 配置热更新
  • 配置加密解密

API网关

  • 统一入口
  • 路由转发
  • 服务降级

注意: 2016-Brixton版本的代码相对陈旧,建议优先学习2018-Finchley版本的示例。

About

这是一个全面的Spring Cloud微服务学习项目,涵盖了从Spring Cloud Brixton到Greenwich版本,以及Spring Cloud Alibaba的完整微服务技术栈。项目通过电影用户管理系统演示了微服务架构的各个核心组件。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 98.5%
  • HTML 1.3%
  • Dockerfile 0.2%