精选

pandora潘多拉——微服务刷题平台(求star版)

项目分享

因为之前一些原因一直没有时间去分享新写的项目,本项目一共有两个版本,大单体和微服务,该项目使用了多端部署和Nginx进行负载均衡。

潘多拉魔盒 - 面试刷题平台

基于Next.js + Spring Cloud + Redis + MySQL + Elasticsearch 构建的程序员智能刷题平台。
致力于程序员刷题,帮助每个人成为编程面试大师🚀。。
持续更新中~

项目地址(如果上面的两个显示不出来):https://github.com/cool-icu0/pandora求个github的star~~

一、项目介绍🚀

基于Next.js + Spring Cloud + Redis + MySQL + Elasticsearch 构建的面试刷题平台。 致力于面试刷题、智能解析面试八股文,帮助人们解决和掌握计算机中晦涩难懂的知识点等问题, 旨在为用户提供便捷、高效、安全的刷题体验, 同时为管理员提供全面的题库管理功能。

二、架构设计图🎨

## 三、技术亮点🔍
  1. 性能提升
    • 运用 Druid 数据库连接池技术,有效管理数据库连接,减少连接创建和销毁的开销,提升系统性能。
    • 结合 JD- HotKey 热 Key 探测技术,及时发现热点数据,优化系统对高频请求的处理。
    • 利用 Redis 缓存技术,缓存常用数据,减少数据库查询次数,加快数据访问速度。
    • 使用高级数据结构,进一步优化数据处理逻辑,提高系统整体性能。
  2. 安全保障
    • 采用 Sa - Token 实现可靠的用户认证和授权机制,确保用户数据安全和操作合法性。
    • 借助 Sentinel 进行流量控制和熔断处理,防止系统因突发大流量而崩溃,保障系统的稳定性和可用性。
    • 通过动态 IP 黑白名单过滤技术,有效阻止恶意 IP 的访问,增强系统的网络安全性。
    • 实现同端登录冲突检测,防止账号在多端异常登录,保护用户账号安全。
    • 运用分级反爬虫策略,抵御恶意爬虫对系统内容的非法获取,确保平台数据的安全性。

四、技术选型

前端

  • React 18 框架
  • ⭐️ Next.js 服务端渲染
  • ⭐️ Redux 状态管理
  • Ant Design 组件库
  • 富文本编辑器组件
  • ⭐️ 前端工程化:ESLint + Prettier + TypeScript
  • ⭐️ OpenAPI 前端代码生成

后端

  • Java Spring Boot 框架 + Maven 多模块构建
  • MySQL 数据库 + MyBatis-Plus 框架 + MyBatis X
  • Redis 分布式缓存 + Caffeine 本地缓存
  • Redission 分布式锁 + BitMap + BloomFilter
  • ⭐️ Elasticsearch 搜索引擎
  • ⭐️ Druid 数据库连接池 + 并发编程
  • ⭐️ Sa-Token 权限控制
  • ⭐️ HotKey 热点探测
  • 微服务架构(SpringCloud Alibaba)
    • ⭐️ Sentinel 流量控制、限流熔断
    • ⭐️ Nacos 配置中心、注册中心
    • ⭐️ GateWay 微服务网关
    • ⭐️ OpenFeign 远程调用
  • ⭐️ 多角度项目优化:性能、安全性、可用性

环境搭建

🎉后端环境搭建

后端项目使用 SpringBoot 开发,需要安装 JDK 17 、 MySQL 数据库、Redis、Elasticsearch 。

在项目目录下的application.yml修改自己的启动环境spring.profiles.active = dev 然后找到同级文件application-dev.properties,填写自己的环境配置(MySQL、Redis)。

🎉 前端环境搭建

前端项目使用 React 开发,需要安装 Node.js(Node 18 版本,请保持一致) 、npm 。

在项目目录下执行npm install安装依赖,然后执行npm run start启动项目。

五、功能介绍

简单介绍(粗略)

  1. 管理员功能
    • 用户管理:管理用户信息,包括注册、登录、权限管理等。
    • 题库管理:可轻松管理题库,包括创建新库、为不同场景准备题目集合。
    • 题目管理:能在已有题库中添加多种类型题目。
    • 题目详情:支持多种类型题目,包括单选、多选、判断、填空、编程等。
    • 题解管理:为题目添加详细题解,助力用户学习。
  2. 用户功能
    • 注册与登录:便捷注册登录,开启刷题。
    • 知识论坛:方便用户交流学习。
    • 分词检索题目:借助 Elasticsearch 分词检索快速找题。
    • 在线刷题:在平台刷题,答题情况被实时记录。
    • 模拟面试:模拟面试,根据题目进行答题。
    • 在线编程:在线编程,支持多种语言,实时编译运行。
    • 刷题记录查看:通过日历图查看刷题历程和进度。
  3. 安全性
    • 缓存热点与热 key:用三级缓存技术处理热点数据和热 key,监测访问频率,优化性能,保障稳定。
    • 限流与熔断:运用限流与熔断机制,监控和控制流量,过载时防止系统崩溃。
    • IP 管理:采用 IP 黑白名单技术,区分可信和恶意 IP,保障网络安全。
    • 同端登录检测:通过同端登录检测机制,监控账号状态,防止异常登录,保护账号安全。
    • 反爬虫策略:依据分级反爬虫策略,对访问请求监测,超限制先警告后封号,保护平台。

功能展示(详尽)

  1. 管理员功能

    • 题库管理

    • 题目管理

    • 题库详情

    • 题解管理

  2. 用户功能

    • 注册与登录

    • 分词检索题目

    • 在线刷题

    • 在线编程

    • 模拟面试

    • 刷题记录日历图

    • 知识论坛

    • 论坛帖子详情

    • 论坛帖子点赞/收藏/评论

  3. 安全性

    • 缓存热点与热key

    • 限流与熔断

    • IP 黑白名单

    • 同端登录冲突检测

    • 分级反爬虫策略

      • 访问次数超过一定限制,发送邮件
      • 访问次数超过限制太多,封号处理

六、nginx配置(仅供参考)

text
复制代码
upstream backend { server 192.168.1.128:8081 weight=1; server 192.168.1.128:8082 weight=2; } server { listen 80; server_name 0.0.0.0; location / { proxy_pass http://backend; } }
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Cool
下载 APP