Spring Cloud Alibaba 小哈书(仿小红书)微服务项目实战:专栏介绍
友情提示
推荐您使用 Chrome 浏览器来阅读本实战专栏,其他浏览器可能存在兼容性问题。
大家好,我是小哈~
星球第二个项目开整啦,这次我们要开发一个仿小红书项目 —— 小哈书 !
💁 项目介绍
先来看一下小红书官网的对自己的介绍:
小红书是一个年轻生活方式分享平台,由毛文超和瞿芳创立于2013年。
截止2019年1月,小红书用户数超过2亿,其中90后和95后是最活跃的用户群体。
在小红书,用户通过短视频、图文等形式记录生活的点滴。
社区每天产生数十亿次的笔记曝光,内容覆盖时尚、护肤、彩妆、美食、旅行、影视、读书、健身等各个生活方式领域。
🍉 架构图
本项目不再是单体架构,而是采用企业主流的 Spring Cloud Alibaba 技术栈,微服务分布式项目搞起!整体架构图如下:
PS : 本专栏主要讲解后端部分。前端工程后续也会提供相关源码,需要等后端相关接口开发完成后。(
uni-app
暂不做实现,等后面再说)
💡 你能学到什么?
- 【从 0 到 1 落地微服务架构】,开局一个 IDEA,渐进式地将一个微服务项目搭建起来;
- 【学习 Spring Cloud Alibaba 微服务生态组件】,如注册中心、配置中心 Nacos; 网关 Gateway、限流降级 Sentinel、服务间调用 Feign,以保障服务的高可用;
- 【微服务拆分、前后端分离】,学会将系统拆分为多个微服务,实现服务之间低耦合,功能高内聚,以便对各服务分配不同的服务器资源;
- 【中间件使用】,使用 Redis 缓存、RocketMQ 消息等中间件,提升系统性能,保障服务高性能响应;
- 【高并发读写设计】,告别 CRUD, 能够根据业务场景,引入不同的机制,从而让接口支持高并发读写;
- 【用户认证鉴权】,使用 SaToken 来实现用户的认证鉴权,告别 Spring Security 复杂繁琐的配置;
- 【需求分析,表设计,接口设计】,通过分析 UI 原型图,来分析需求,从而进行表建模,以及接口的设计;
- 【分布式搜索引擎】, 使用 Elasticsearch 提供相关中文分词搜索功能,如笔记搜索,用户名搜索等;
- 【对象存储】,接入多种对象存储服务,如 Minio , 阿里云 OSS 等,实现对图片,视频的文件存储;
- 【接口性能压测】,使用 Jmeter 性能压测工具,知道自己开发的接口性能如何,大概支持多少的吞吐量;
- 【Docker 容器化】,使用 Docker 容器化技术快速搭建各种环境,包括微服务的容器化部署;
- 【运维经验: CI / CD 持续集成与部署】,通过 Git 来做代码托管以及版本控制,以及 Jenkins 实现自动化部署,企业级项目上云,部署至生产环境,以供用户访问;
- 更多细节,尽在项目中...
📖 专栏大纲
💡 TIP : 以下目录只是当前阶段更新的内容,最终只会更多。有兴趣的小伙伴可在 PC 端试读,访问链接:PC 端试读链接:https://www.quanxiaoha.com/column :
-
一、项目介绍
-
二、本地开发环境搭建
-
三、Java 9 ~ 17 新特性讲解
-
四、IDEA 搭建微服务项目
- 4.1 搭建微服务项目骨架:通过 Maven 多模块方式
- 4.2 添加 framework 平台基础设施模块
- 4.3 自定义 Spring Boot 3.x Starter: 封装 API 请求日志切面业务组件
- 4.4 Spring Boot 3.x 整合 MyBatis
- 4.5 Spring Boot 3.x 整合 Druid 数据库连接池(含密码加密)
- 4.6 Spring Boot 3.x 整合 MyBatis 代码生成器插件
- 4.7 自定义 Jackson 配置:支持 LocalDateTime 日期 API
- 4.8 Spring Boot 3.x 整合 Logback 日志框架(支持异步写入)
- 4.9 整合 flatten-maven-plugin 插件:解决子模块单独打包失败问题
- 4.10 Spring Boot 添加全局异常捕获、接口参数校验
-
五、整合 SaToken 实现 JWT 登录功能
- 5.1 原型图分析、用户表设计
- 5.2 整合 SaToken 权限认证框架,以及初步尝鲜
- 5.3 整合 RedisTemplate
- 5.4 获取手机短信验证码接口开发
- 5.5 Spring Boot 自定义线程池
- 5.6 短信发送功能开发:使用阿里云短信 SDK
- 5.7 自定义 @PhoneNumber 手机号校验注解
- 5.8 鉴权设计:RBAC 模型
- 5.9 RBAC 权限表设计、微服务鉴权架构设计
- 5.10 SaToken 整合 Redis: 解决重启项目,登录失效问题
- 5.11 用户注册/登录接口开发(1)
- 5.12 用户注册/登录接口开发(2)
- 5.13 编程式事务使用:更细粒度的事务控制
- 5.14 代码优化:Guava Preconditions 参数校验
- 5.15 同步【角色-权限集合】数据到 Redis 中
-
六、Nacos 注册中心搭建
-
七、Gateway 网关搭建与接口鉴权
- 7.1 Gateway 网关介绍与服务搭建:实现路由转发
- 7.2 网关整合 SaToken: 实现接口鉴权(1)
- 7.3 SaToken 自定义 Token 生成风格与请求格式
- 7.4 网关整合 SaToken: 实现接口鉴权(2)
- 7.5 Gataway 全局异常处理:统一出参格式
- 7.6 优化:网关登录校验失败提示信息
- 7.7 网关过滤器:实现用户 ID 透传到下游服务
- 7.8 用户退出登录接口开发
- 7.9 过滤器 + ThreadLocal 实现上下文传递:方便的获取登录用户 ID
- 7.10 使用阿里 TransmittableThreadLocal:解决异步获取上下文问题
- 7.11 密码修改接口开发: BCrypt 随机 “盐” 加密
- 7.12 账号密码登录功能开发
-
八、对象存储服务搭建与开发
-
九、用户服务搭建与开发
-
十、K-V 短文本存储服务搭建与开发
-
十一、Jmeter 压力测试
-
十二、分布式 ID 生成服务搭建与开发
-
十三、笔记服务搭建与开发
-
十四、消息中间件 RocketMQ
-
十五、用户关系服务搭建与开发
-
以上为本项目第二阶段需要更新的内容,持续爆肝中...
👨🏻💻 适用人群
-
在校学生,有 Java Web 单体项目开发基础,想做毕业设计,或者为找工作准备,需要实战项目加分;
💡 TIP: 小白也没关系,小哈将会告诉你学习路线是啥,哪里有免费的高质量学习视频可以白嫖,学完这些技术栈后再来做实战项目,或者学一点基础边实战边学习都可以。
-
初级以上 Java 后端开发人群,想继续提升技术,对 Spring Cloud Alibaba 微服务感兴趣的童鞋;
✅ 技术储备
- 具备一定的 Java 开发基础;
- 使用过 Spring Boot 进行 Web 项目开发;
- 了解微服务架构;
- 了解 Redis 分布式缓存;
🏠 环境参数
- JDK 17;
- Spring Boot 3.0.2;
- Spring Cloud Alibaba 2022.0.0.0-RC2;