技术栈
  • 后端:基于Spring Boot + Redis + MySQL+ Elasticsearch (+ Next.js 服务端渲染) 的刷题平台。并运用 Druid + Sa-Token + Sentinel+ Nacos 全面优化性能和安全性。
  • 前端:基于 React + Next.js 服务端渲染 + Ant Design + Redux 的响应式刷题平台。
  • 架构图:https://www.yuque.com/mingcode-gsyiw/hde2h5/xc8y5yvpigm0lsyw#
  • 由于题目搜集不易,管理员功能暂不开放。用户登录成功默认保留登录状态30天 (被顶号需要重新登录)
  • 为减少数据库压力和提高数据检索分词能力,用Elasticsearch代替MySQL进行数据搜索。相关实现
  • 为提高响应速度,使用Redis进行大量数据缓存,保证能命中返回数据,从而大大减少数据库压力。
  • 每个IP一天最多注册3个账号,超过了默认封1天IP,封禁期间无法登录。
  • 对项目安全性进行优化,基于 Sentinel 进行网站流量控制和熔断。相关实现
  • 请勿在一分钟内连续访问需要登录的页面次数超过某个频率,否则会封号。
  • 允许同一账号在不同设备类型(如手机和PC)上同时登录,但同一类型设备只能登录一个。可同时在电脑和手机上使用,但不能在两台手机上同时登录在线。会相互顶掉。
  • 为防止恶意请求,已对主要接口进行整体限流处理,即每秒访问次数不能超过一定的次数。