小蓝书项目是模仿小红书的个人项目,目前仍在开发过程中,需要查看最新代码可以切换dev分支。
一个基于微服务架构的前后端分离系统,前端基于Uniapp,故可以在移动端全平台使用(后期可能会使用vue来编写PC端)
...
- 由于想要尝试使用JDK21新特性虚拟线程,故使用了最新的springboot版本,因此前期也是遇到了非常多的坑,
- 各种依赖都需要使用最新版本。故对项目用到的主要依赖的版本做了梳理。
- 数据库使用了PostgresSQL,基于bitnami/postgresql这一docker镜像实现了数据库的读写分离的架构。
技术组件 | 版本 | 描述 |
---|---|---|
Spring Boot | 3.2.2 | 基础框架 |
Spring Cloud | 2023.0.0 | 微服务基础框架 |
Spring Cloud alibaba | 2022.0.0.0 | 微服务治理工具集 |
Spring Cloud Gateway | - | API网关服务 |
Redis | 7.2.4 | 缓存、分布式锁 |
nacos | 2.2.3 | 分布式配置、注册中心 |
MySQL | 8.0.30 | nacos的数据库 |
RabbitMQ | 3.12.13 | 消息中间件 |
Elasticsearch | 8.0.14 | 全文检索 |
Dubbo | 3.3.0-Beta1 | RPC框架 |
MyBatis Plus | 3.5.5 | ORM框架 |
MyBatis Plus Join | 1.4.10 | 连表查询插件 |
PostgresSQL | 16.2 | 数据库 |
JDK | 21 | 解释器(为了支持虚拟线程) |
Maven | - | 构建工具 |
- 笔记服务:提供笔记的增删改查、分享等业务逻辑处理。
- 网关服务:基于Spring Cloud Gateway作为统一入口,负责路由转发、权限验证、限流熔断等操作。
- 用户服务:负责用户账户管理、关注等功能。
- 消息服务:负责图片等资源存储和管理、邮件的发送,以及通过websocket进行消息推送
服务模块 | 端口号 | 功能描述 |
---|---|---|
网关服务(gateway) | 8078 | 统一入口,负责路由转发等操作 |
笔记服务(blog-server) | 9999 | 提供笔记相关业务逻辑处理 |
用户服务(user-info) | 10000 | 用户账户管理和认证授权功能 |
消息服务(message-center) | 3000、3002 | 推送消息、存储和管理用户上传文件 |
PostgresSQL(master) | 5433 | 主数据库 |
PostgresSQL(slave1) | 5434 | 从数据库1 |
PostgresSQL(slave2) | 5435 | 主数据库2 |
Elasticsearch | 9200 | 搜索引擎 |
rabbitmq | 5672、15672 | 消息队列 |
nacos | 7848、8848 9848、9849 |
分布式配置、注册中心 |
MySQL | 3326 | nacos数据库 |
Redis | 6379 | 缓存、分布式锁 |
由于后端依赖的服务依赖较多,故非常推荐使用docker-compose进行部署相关的依赖项。
所有依赖项的docker-compose文件都已放置在docker目录下,
因此只需要执行所有的脚本即可快速部署依赖项。若没有安装过docker或对其不熟悉,强烈建议先安装后再尝试部署本项目。
完成了依赖项的安装后,需要去各个服务的配置文件修改相应的配置。如果端口号与我的一致,那就无需修改端口。
...
...