# mcloud **Repository Path**: gaide/mcloud ## Basic Information - **Project Name**: mcloud - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-09 - **Last Updated**: 2025-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Cloud Alibaba + Dubbo 微服务项目 ## 项目概述 本项目是一个基于 Spring Cloud Alibaba 和 Dubbo 的微服务架构示例项目,展示了如何使用 Dubbo 实现服务间调用,并集成了 Spring Boot Admin 进行应用监控和 Sleuth & Zipkin 进行分布式链路追踪。 ## 技术栈 - **Spring Boot**: 3.5.7 - **Spring Cloud Alibaba**: 2023.0.1.0 - **JDK**: 21 - **Nacos**: 2.3.2 (服务注册与配置中心) - **Sentinel**: 1.8.8 (流量控制与熔断降级) - **Dubbo**: 3.2.14 (高性能RPC框架) - **Spring Boot Admin**: 3.5.7 (应用监控) - **Sleuth & Zipkin**: 3.1.9 (分布式链路追踪) - **MyBatis Plus**: 3.5.7 - **MySQL**: 8.0.33 - **Redis**: 最新版 - **Druid**: 1.2.23 - **ELK**: Elasticsearch 8.11.0 + Logstash 8.11.0 + Kibana 8.11.0 ## 服务列表 | 服务名称 | 端口 | 说明 | |---------|------|------| | cloud-gateway | 8080 | 网关服务 | | cloud-auth | 8081 | 认证服务 | | cloud-user | 8082 | 用户服务 | | cloud-order | 8083 | 订单服务 | | cloud-product | 8084 | 商品服务 | | cloud-payment | 8085 | 支付服务 | | cloud-admin-server | 8090 | 监控服务 | | cloud-common | - | 公共模块 | ## Dubbo服务调用示例 ### 1. 定义Dubbo服务接口 在服务提供方定义接口并添加`@DubboService`注解: ```java @DubboService public interface UserService { User findByUsername(String username); } ``` ### 2. 实现Dubbo服务 在服务提供方实现接口并添加`@DubboService`注解: ```java @DubboService @Service public class UserServiceImpl implements UserService { @Override public User findByUsername(String username) { // 实现逻辑 } } ``` ### 3. 引用Dubbo服务 在服务消费方通过`@DubboReference`注解引用服务: ```java @RestController public class OrderController { @DubboReference private UserService userService; @DubboReference private ProductService productService; @PostMapping("/create") public Result createOrder(@RequestBody Order order) { // 调用用户服务验证用户 User user = userService.findByUsername("test"); // 调用商品服务验证商品 Result productResult = productService.getProductById(order.getProductId()); // 创建订单逻辑 // ... return Result.success(order); } } ``` ## 配置Dubbo 在`application.yml`中配置Dubbo: ```yaml # Dubbo配置 dubbo: application: name: cloud-order # 应用名称 registry: address: nacos://127.0.0.1:8848 # 注册中心地址 protocol: name: dubbo # 协议名称 port: 20883 # 协议端口 scan: base-packages: com.tancw.cloud.order.service.impl # 服务扫描包 consumer: check: false # 启动时是否检查依赖服务 ``` ## Spring Boot Admin 监控 ### 1. 功能特性 Spring Boot Admin 提供了以下监控功能: - 健康状态检查 - 应用详细信息查看 - 日志级别动态调整 - JVM指标监控 - HTTP请求追踪 - 环境属性查看 - 线程转储分析 ### 2. 访问地址 - **Admin Server**: http://localhost:8090 - **默认用户名**: admin - **默认密码**: admin ### 3. 配置方式 在各微服务中添加Admin Client依赖: ```xml de.codecentric spring-boot-admin-starter-client ``` 在`application.yml`中配置: ```yaml spring: boot: admin: client: url: http://localhost:8090 instance: name: ${spring.application.name} ``` ## 分布式链路追踪 ### 1. 功能特性 Spring Cloud Sleuth 和 Zipkin 提供了以下链路追踪功能: - 全链路追踪ID生成 - 跨服务调用链路追踪 - 性能分析和瓶颈定位 - 可视化调用链路展示 ### 2. 访问地址 - **Zipkin UI**: http://localhost:9411 ### 3. 配置方式 在各微服务中添加Sleuth和Zipkin依赖: ```xml org.springframework.cloud spring-cloud-starter-sleuth org.springframework.cloud spring-cloud-sleuth-zipkin ``` 在`application.yml`中配置: ```yaml spring: sleuth: trace-id128: true sampler: probability: 1.0 zipkin: base-url: http://localhost:9411 ``` ## 服务调用方式对比 | 特性 | OpenFeign | Dubbo | |------|-----------|-------| | 通信协议 | HTTP | Dubbo协议(默认) | | 性能 | 较低 | 较高 | | 负载均衡 | Spring Cloud LoadBalancer | 内置负载均衡 | | 服务发现 | Spring Cloud Discovery | 内置服务发现 | | 配置复杂度 | 简单 | 中等 | | 适用场景 | 对外REST API | 内部服务调用 | ## 启动顺序 1. 启动 Nacos 服务器 2. 启动 Zipkin 服务器:`.\start-zipkin.ps1` 3. 启动 Sentinel 控制台(可选) 4. 启动 ELK 日志系统:`.\start-elk.ps1` 5. 按以下顺序启动各个微服务: - cloud-user - cloud-product - cloud-auth - cloud-payment - cloud-order - cloud-gateway - cloud-admin-server ## 接口测试 ### 1. 用户登录 ```bash POST http://localhost:8080/auth/login Content-Type: application/json { "username": "admin", "password": "123456" } ``` ### 2. 查询用户 ```bash GET http://localhost:8080/user/1 Authorization: Bearer {token} ``` ### 3. 创建订单 ```bash POST http://localhost:8080/order/create Authorization: Bearer {token} Content-Type: application/json { "userId": 1, "productId": 1, "quantity": 2 } ``` ## 监控访问 - **Nacos 控制台**: http://localhost:8848/nacos - **Sentinel 控制台**: http://localhost:8858 - **Spring Boot Admin**: http://localhost:8090 - **Zipkin 链路追踪**: http://localhost:9411 - **Kibana 日志分析**: http://localhost:5601 - **Elasticsearch**: http://localhost:9200