这是将 BasicBack 单体应用拆分后的微服务架构项目,基于 Spring Cloud Alibaba + Nacos + Gateway + Dubbo 技术栈构建。
- Spring Boot: 3.2.4
- Spring Cloud Alibaba: 2023.0.1.0
- Nacos: 服务注册与配置中心
- Spring Cloud Gateway: API 网关
- Dubbo: 3.3.0 (RPC 远程调用)
- MyBatis: 3.5.19
- MySQL: 8.0.33
- Redis: 缓存
- Spring AI: 1.0.0-M6 (配置在公共模块)
- Elasticsearch: 7.8.0 (搜索服务)
- Aliyun OSS: 3.10.2 (文件上传服务)
- 包含所有微服务共用的代码
- 常量类 (MessageConstant, SystemConstants)
- 通用工具类 (JwtUtil)
- 通用实体类 (Result)
- AI 配置 (AiConfig - Spring AI 统一配置)
- 公共依赖配置
- 定义所有微服务的 Dubbo 接口
- UserDubboService: 用户服务接口
- PostDubboService: 帖子服务接口
- TopicDubboService: 话题服务接口
- MailDubboService: 邮件服务接口
- StickDubboService: 磁贴服务接口
- DivinationDubboService: 占卜服务接口
- SearchDubboService: 搜索服务接口
- UploadDubboService: 文件上传服务接口
- 统一入口,端口: 8080
- 路由配置:
- /api/user/** -> stick-user-service
- /api/post/** -> stick-post-service
- /api/topic/** -> stick-topic-service
- /api/mail/** -> stick-mail-service
- /api/stick/** -> stick-stick-service
- /api/divination/** -> stick-divination-service
- /api/search/** -> stick-search-service
- /api/upload/** -> stick-upload-service
- 负载均衡和请求转发
- 端口: 8081
- Dubbo 端口: 20881
- 功能: 用户注册、登录、个人信息管理
- 端口: 8082
- Dubbo 端口: 20882
- 功能: 帖子发布、评论、点赞、收藏
- 端口: 8086
- Dubbo 端口: 20886
- 功能: 话题创建、关注、话题内容管理
- 端口: 8087
- Dubbo 端口: 20887
- 功能: 邮件发送、收件箱、发件箱管理
- 端口: 8088
- Dubbo 端口: 20888
- 功能: 磁贴创建、点赞、评论管理
- 端口: 8089
- Dubbo 端口: 20889
- 功能: 测字占卜、汉字识别、运势预测
- 使用公共模块的 AI 配置
- 端口: 8090
- Dubbo 端口: 20890
- 功能: 全文搜索、用户搜索、帖子搜索、话题搜索、磁贴搜索
- 集成 Elasticsearch
- 端口: 8091
- Dubbo 端口: 20891
- 功能: 图片上传、文件上传、文件管理
- 集成阿里云 OSS
- 启动 Nacos 服务 (默认端口 8848)
- 启动 Redis 服务
- 启动 MySQL 数据库
- 启动 Elasticsearch (搜索服务需要)
- 启动各个微服务 (顺序不限,建议先启动 Gateway)
- 启动网关: stick-gateway
所有服务都支持环境变量配置:
NACOS_HOST: Nacos 服务器地址 (默认: localhost)NACOS_NAMESPACE: Nacos 命名空间 (默认: 空)NACOS_GROUP: Nacos 分组 (默认: DEFAULT_GROUP)SPRING_DATASOURCE_HOST: MySQL 主机地址 (默认: localhost)SPRING_DATA_REDIS_HOST: Redis 主机地址 (默认: localhost)SPRING_DATA_REDIS_PORT: Redis 端口 (默认: 6379)OPENAI_API_KEY: OpenAI API 密钥ALIBABA_CLOUD_ACCESS_KEY_ID: 阿里云 Access Key IDALIBABA_CLOUD_ACCESS_KEY_SECRET: 阿里云 Access Key Secret
微服务之间通过 Dubbo 进行 RPC 调用:
@DubboReference
private UserDubboService userDubboService;
Result result = userDubboService.getProfile(userId);所有外部请求都通过网关进入:
http://localhost:8080/api/user/register
http://localhost:8080/api/post/create
http://localhost:8080/api/topic/create
http://localhost:8080/api/mail/send
http://localhost:8080/api/stick/create
http://localhost:8080/api/divination/predict
http://localhost:8080/api/search/query
http://localhost:8080/api/upload/image
AI 功能作为公共配置,在 stick-common 模块中统一配置:
- AiConfig: Spring AI 配置类
- 所有需要 AI 功能的服务只需引入 stick-common 依赖即可使用
- 占卜服务使用 AI 进行测字和运势预测
- 将原项目的业务代码迁移到对应的微服务模块
- 为每个服务实现 Dubbo 接口
- 配置 Nacos 配置中心
- 实现服务间调用
- 添加分布式事务处理
- 完善监控和日志
- 实现 Elasticsearch 索引同步
- 完善阿里云 OSS 文件管理