Spring Cloud Alibaba 小哈书(仿小红书)微服务项目实战:专栏介绍
友情提示 : 推荐使用谷歌浏览器来阅读本专栏,其他浏览器可能存在兼容性问题。
大家好,我是小哈~
星球第二个项目开整啦,这次我们要开发一个仿小红书项目 —— 小哈书 !
💁 项目介绍
先来看一下小红书官网的对自己的介绍:
小红书是一个年轻生活方式分享平台,由毛文超和瞿芳创立于2013年。
截止2019年1月,小红书用户数超过2亿,其中90后和95后是最活跃的用户群体。
在小红书,用户通过短视频、图文等形式记录生活的点滴。
社区每天产生数十亿次的笔记曝光,内容覆盖时尚、护肤、彩妆、美食、旅行、影视、读书、健身等各个生活方式领域。
🍉 架构图
本项目不再是单体架构,而是采用企业主流的 Spring Cloud Alibaba 技术栈,微服务分布式项目搞起!整体架构图如下:
PS : 本专栏主要讲解后端部分。前端工程后续也会提供相关源码,需要等后端相关接口开发完成后。(
uni-app
暂不做实现,等后面再说)
💡 你能学到什么?
- 【从 0 到 1 落地微服务架构】,开局一个 IDEA,渐进式地将一个微服务项目搭建起来;
- 【学习 Spring Cloud Alibaba 微服务生态组件】,如注册中心、配置中心 Nacos; 网关 Gateway、限流降级 Sentinel、服务间调用 Feign,以保障服务的高可用;
- 【微服务拆分、前后端分离】,学会将系统拆分为多个微服务,实现服务之间低耦合,功能高内聚,以便对各服务分配不同的服务器资源;
- 【中间件使用】,使用 Redis 缓存、RocketMQ 消息、XXL-JOB 调度、Canal 伪从、Cassandra 存储、Minio 对象存储等中间件,提升系统性能,保障服务高性能响应;
- 【Elasticsearch 搜索引擎】,使用 Elasticsearch 搜索引擎,实现对笔记的中文分词搜索,并可以自定义 Score 评分排序、中文词库、同义词等;
- 【高并发读写设计】,告别 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
-
十五、用户关系服务搭建与开发
-
十六、用户关系服务搭建与开发(二)
-
十七、计数服务搭建与开发
-
十八、计数服务搭建与开发(2)
- 18.1 笔记点赞、点赞列表方案设计
- 18.2 Redis 安装 Bloom 布隆过滤器模块
- 18.3 笔记点赞接口开发(1)—— Bloom 布隆过滤器校验
- 18.4 笔记点赞接口开发(2)—— 布隆过滤器误判问题
- 18.5 发送携带 Tag 的顺序 MQ 消息:点赞数据落库
- 18.6 Bug 修复:Bloom 布隆过滤器不存在时,未校验是否点赞其他笔记
- 18.7 笔记取消点赞接口开发
- 18.8 发送顺序 MQ 消息:取消点赞数据更新落库
- 18.9 计数开发:笔记点赞数统计
- 18.10 笔记收藏接口开发(1)—— Bloom 布隆过滤器校验
- 18.11 笔记收藏接口开发(2)—— 布隆过滤器误判问题
- 18.12 笔记收藏接口开发(3)—— 更新 ZSET 列表
- 18.13 发送携带 Tag 的顺序 MQ 消息:收藏数据落库
- 18.14 笔记取消收藏接口开发
- 18.15 发送顺序 MQ 消息:取消收藏数据更新落库
- 18.16 计数开发:笔记收藏数统计
- 18.17 用户维度:点赞数、收藏数统计
- 18.18 计数开发:用户笔记发布数统计
-
十九、数据对齐服务搭建与开发
- 19.1 数据对齐服务职责说明、方案与表设计
- 19.2 数据对齐服务搭建
- 19.3 本地搭建 XXL-JOB 分布式任务调度平台
- 19.4 Spring Boot 3.x 整合 XXL-JOB
- 19.5 定时任务开发:预创建日增量表
- 19.6 MQ 消费者开发:日增量变更数据入库 —— 笔记点赞、取消点赞
- 19.7 MQ 消费者开发:日增量变更数据入库 —— 笔记收藏、取消收藏
- 19.8 定时任务开发:删除近一个月日增量临时表
- 19.9 MQ 消费者开发:日增量变更数据入库 —— 笔记发布、删除
- 19.10 MQ 消费者开发:日增量变更数据入库 —— 用户关注、取关
- 19.11 Spring Boot 3.x 通过 XXL-JOB 实现分片广播任务
- 19.12 Bug 修复:点赞同一用户发布的两篇不同笔记,无法保存变更记录
- 19.13 分片广播任务开发: 笔记点赞数对齐
-
二十、Elasticsearch 分布式搜索引擎
- 20.1 搜索服务职责说明、原型图分析、同步方案选择
- 20.2 Docker 安装 Elasticsearch 7.x 以及 head 可视化工具
- 20.3 Elasticsearch 核心概念介绍
- 20.4 Docker 安装 Kibana
- 20.5 Elasticsearch 基础语法学习
- 20.6 Elasticsearch 数据类型
- 20.7 倒排索引介绍与常见的 Analyzer 分词器
- 20.8 Elasticsearch 安装 ik 中文分词器插件
- 20.9 笔记、用户索引构建以及 function_score 自定义文档得分
- 20.10 全量 es 索引构建:使用 logstash-input-jdbc 插件
- 20.11 增量 es 索引构建:使用 logstash-input-jdbc 插件
-
二十一、搜索服务搭建与开发
-
二十二、基于 Canal 构建实时增量 es 索引
-
二十三、评论服务搭建与开发
-
二十四、评论服务搭建与开发(2)
-
二十五、评论服务搭建与开发(3)
-
持续更新中...
-
项目面试
-
以上为本项目第二阶段需要更新的内容,持续爆肝中...
👨🏻💻 适用人群
-
在校学生,有 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;
✊ 如何加入?
小哈已经将本站的专栏模块接入了知识星球,想要查看专栏内容,需要订阅星球后,微信扫码授权登录后即可解锁所有内容。因为本项目实战星球主打性价比,所以价格不会太高。最开始定价是 35 元,目前领取优惠券后价格为 54 元(附 15 元的优惠券,记得扫码领取下方优惠券加入哟),后续随着内容持续更新,会慢慢涨上去,所以早加入更具性价比哟~
星球支持 3 天无理由全额退费,感兴趣的小伙伴可先加入,看看内容质量如何,不合适直接退款就行,觉得确实内容很干货,就留下来学习,无套路!
❓ 关于答疑
小伙伴们如果在跟着专栏学习,手敲项目的过程中遇到问题,碰到无法解决的问题,可在小哈的知识星球内部提问,我会统一来解答, 如果星球说不清楚的,就加私人微信,打包发项目,亲自给你看哪一步有问题,保证跟上项目进度,不落下任何一个小伙伴,大家一起冲冲冲~
😃 加微信咨询
对专栏感兴趣的小伙伴,也可以加小哈私人微信来咨询,扫描下方二维码即可,记得备注【咨询】哟: