仿大众点评的小项目—黑马点评
项目简介
该项目是仿大众点评的小型Java项目,旨在为用户提供一个点评和分享平台。通过这个平台,用户可以浏览、搜索和比较各种商家的信息,包括美食、KTV等等。用户可以在平台上创建个人账号、关注他人、发表评论、点赞、上传图片和发布自己的博客。
https://gitee.com/kiwhsu/dianping.git
技术介绍
目录结构:
后端:
SpringBoot + Redis + MyBatisPlus + Mysql + Elasticsearch
前端:
Html + Axios + Vue + Nginx
开发工具:
名称 | 版本 |
---|---|
JDK | 1.8 |
MYSQL | 8.0.25 |
Redis | 6.2.6 |
Elasticsearch | 7.12.1 |
Kibana | 7.12.1 |
Nginx | 1.18.0 |
核心功能
一、短信登录:Redis的共享session应用。
①验证码采用Redis存储,时效为两分钟。
②考虑到集群Session共享的数据丢失问题,将User对象转为HashMap存储,并随机生成Token作为登录令牌存入Redis里,设置过期时间。
session共享问题:多台Tomcat并不共享session存储空间,当请求切换到不同tomcat服务时导致数据丢失的问题。
③采用双拦截器实现刷新token的有效期,拦截需要登录的路径两个功能。
二、商户查询缓存:缓存雪崩、缓存穿透等问题解决。
①给查询商铺的缓存添加超时剔除和主动更新的策略。
缓存的作用:①降低后端负载;②提高读写效率,降低响应时间。
②实现商铺缓存与数据库的双写一致。
③采用缓存空对象的方式解决缓存穿透问题。
用户请求的数据在缓存中和数据库中都不存在,不断发起这样的请求,给数据库带来巨大的压力。
④采用设置逻辑过期时间以及互斥锁的方式来解决缓存击穿。
三、优惠券秒杀:涉及Redis的计数器、Lua脚本Redis、分布式锁、Redis消息队列等。
①采用全局唯一id来解决id的规律性太明显且易受单表数据量的限制