Appearance
micro-java 中间件依赖
micro-java 在单体 server-java 基础上引入了 Spring Cloud 生态组件。下表说明各组件在本项目中的实际用途与本地开发是否必须。
组件一览
| 组件 | 默认地址 | 是否必须 | 用途 |
|---|---|---|---|
| MySQL 8 | localhost:3306 | 是 | RBAC 数据存储(与全仓共用 docker-compose.yml) |
| Nacos | localhost:8848 | 是 | 服务注册与发现;Gateway lb:// 路由依赖 |
| RabbitMQ | localhost:5672 | 是(默认配置) | 用户创建事件 UserCreatedEvent |
| Seata Server | localhost:8091 | 否(可关闭) | assignRoles 的 @GlobalTransactional 演示 |
| Kafka | localhost:9092 | 否 | MESSAGING_TYPE=kafka 时替代 RabbitMQ |
| ShardingSphere | —(嵌入式 JDBC) | 内置 | system-service 数据源;当前单库,无独立进程 |
Nacos
配置位置:各服务 spring.cloud.nacos.discovery
| 环境变量 | 默认 | 说明 |
|---|---|---|
NACOS_ADDR | localhost:8848 | 注册中心地址 |
NACOS_NAMESPACE | public | 命名空间 |
Gateway 通过服务名路由:
lb://auth-servicelb://system-service
注意:须先启动 auth / system 并在 Nacos 注册成功,再启动 gateway,否则登录请求会失败。
RabbitMQ(默认消息队列)
system-service 默认 app.messaging.type=rabbitmq。
| 环境变量 | 默认 |
|---|---|
RABBITMQ_HOST | localhost |
RABBITMQ_PORT | 5672 |
RABBITMQ_USER | xichen |
RABBITMQ_PASSWORD | xichen123 |
RABBITMQ_VHOST | / |
应用内配置(app.messaging):
| 配置项 | 值 |
|---|---|
| exchange | xichen.events |
| queue | xichen.user.created |
| routing-key | user.created |
RabbitMqConfig 在启动时自动声明 Exchange / Queue / Binding。创建用户时 UserEventPublisher 发消息,RabbitUserEventConsumer 消费并写日志。
Kafka(可选)
切换消息实现:
bash
$env:MESSAGING_TYPE="kafka"
$env:KAFKA_BOOTSTRAP="localhost:9092"同时禁用 Rabbit 相关 Bean(@ConditionalOnProperty)。需本地或 Docker 启动 Kafka broker。
Seata(可选)
system-service 默认 seata.enabled=true,assignRoles 使用 @GlobalTransactional。
本地无 Seata Server 时建议关闭:
bash
$env:SEATA_ENABLED="false"| 环境变量 | 默认 | 说明 |
|---|---|---|
SEATA_ENABLED | true | 设为 false 跳过 Seata 客户端 |
SEATA_SERVER | localhost:8091 | TC 地址 |
注册与配置均指向 Nacos 的 SEATA_GROUP(与 Seata Server 部署配套)。
ShardingSphere-JDBC
ShardingSphereDataSourceConfig 将单台 MySQL 包装为逻辑数据源 ds0,当前无分片规则,行为与直连 MySQL 基本一致。
扩展分库分表时在此类增加 ShardingRuleConfiguration,无需改 Controller。
环境变量与单体版相同:DB_HOST、DB_PORT、DB_NAME、DB_USER、DB_PASSWORD。
Resilience4j(Gateway 内置)
无需独立部署。配置于 gateway/src/main/resources/application.yml:
- 滑动窗口熔断(失败率 50%)
- GET 请求重试 2 次(502/503)
- 超时 10s
- 降级响应:
GET /fallback→{ code: 503, message: "..." }
推荐本地 Docker 组合
bash
docker compose up -d # MySQL(仓库根目录)
docker run -d --name xichen-nacos -p 8848:8848 -p 9848:9848 \
-e MODE=standalone nacos/nacos-server:v2.3.2
docker run -d --name xichen-rabbitmq -p 5672:5672 -p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=xichen \
-e RABBITMQ_DEFAULT_PASS=xichen123 \
rabbitmq:3-management生产环境建议将上述服务纳入独立 docker-compose 或 K8s 编排,与本仓库 docker-compose.yml(仅 MySQL)分离维护。