- **后端技术选型:**SpringBoot + MyBatis + JWT + MySQL + Redis + Caffeine + Elasticsearch + Logstash
- 项目简介 : 该项目主要分为用户阅读小说和作家发布小说两部分,项目主要功能有:小说推荐、作品检索、小说排行榜、小说阅读、小说评论、会员中心、作家专区等功能。
- 工作内容 :后端各功能开发,数据库表设计。
- 核心功能:
- 1.用户模块:使用MD5对密码进行加密存储,利用图形验证码防止机器人自动注册,使用JWT实现身份认证和授权。
- 2.搜索模块:不开启Elasticseach时使用数据库like模糊查询,开启数据库时使用Elasticsearch查询,使用Logstash定时从数据库同步数据,保证数据库和Elasticsearch的数据一致性。
- 3.内容模块:包括小说首页小说推荐、分类列表查询、小说信息查询、小说章节列表查询、获取上一张或下一章节ID,小说评论的增删改查、小说更新榜、点击榜、新书榜等。
- 4.异常处理模块:使用枚举类编写统一异常处理器,针对不同异常情况定义不同枚举实例,减少定义大量异常类,使用Spring MVC全局异常处理器实现了企业级异常捕获方案。
- 项目优化:
- 1.使用策略模式重构多系统环境下的用户认证授权,解决拦截器代码臃肿难以维护的问题。
- 2.引入Caffeine本地缓存,利用Redis+Caffeine实现两级缓存优化,单机QPS从400提升到2600。
- 3.使用分布式锁切面解决了搜索业务和排行榜功能的缓存击穿问题,使用缓存空对象解决了搜索业务的缓存穿透问题。
- 4.搭建MySQL集群,使用ShardingSphere实现主从复制和读写分离,查询效率提高50%,平均响应时间小于20ms。
- 5.使用ShardingSphere分表存储,以chapter_id为主键将小说章节与小说内容拆成10张表,减轻数据库单表压力。
- 6.采用缓存双删机制保证数据库和缓存的数据一致性。
- 7.加入Manager通用业务处理层进行缓存,与处理具体逻辑的Service层解耦,项目层次更清晰。
- 8.使用DatabaseConsts管理数据库表常量以及通用列枚举类,使用CacheConsts管理缓存前缀常量和缓存配置枚举类,减少硬编码,使代码更加易读和易维护。
- 9.使用Sentinel实现接口防刷和限流,对单个用户IP和所有请求的访问频率进行限制。
-
Notifications
You must be signed in to change notification settings - Fork 0
License
yuweilan7/novel
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published