Skip to content

yuweilan7/novel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

小说精品屋 2022年10月-至今

  • **后端技术选型:**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和所有请求的访问频率进行限制。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages