黑马点评 简化版大众点评 项目简介:本项目是一个类似于大众点评等打卡类APP的点评类项目。实现了短信登陆、探店点评、优惠券秒杀、每日签到、好友关注、粉丝关注博主后,主动推送博主的相关博客等多个模块。 用户可以浏览首页的推荐内容,搜索附近的商家,查看商家的详情和评价以及发表探店博客,抢购商家发布的限时秒杀商品。
git clone https://github.com/haopengmai/dianping.git
nginx-1.18.0 启动nginx.exe
在application.yaml文件中,Mysql、Redis、RabbitMQ相关的配置需要自行更改
Redis服务器版本不能低于6.2,获取附近的商家信息GEOSEARCH 命令是在 Redis 6.2 版本中引入
RabbitMQ版本为3.9
技术 | 说明 |
---|---|
SpringBoot | 容器+MVC框架 |
Redis | 分布式缓存 |
RabbitMQ | 消息中间件 |
MySQL | 关系型数据库 |
Lombok | 简化对象封装工具 |
SMTP | SMTP协议邮箱文件传输 |
用了QQ邮箱的SMTP协议,暂时用个人账号发送短信验证码
基于lua保证判断库存是否充足、判断用户是否下单、扣库存、下单并保存用户事件的原子性,同时采用RabbitMQ异步处理高并发情况下的请求。
秒杀是个高并发的过程,短时间内后端访问量巨大,可能会压垮系统,而且只有少许人能秒杀成功,因此首先要做的应该是限流。
redis-zset实现用户二级限流,一级限流(5分钟内3次短信仍然登录失败->设计为禁止登录,往redis中写入一个10分钟过期的string并升级为二级限流)、二级限流(5分钟内3次短信仍然登录失败设计为禁止登录,往redis中写入一个30分钟过期的string并重新设置为二级限流)
首先检查一级和二级限制条件,然后分别计算了过去1分钟和过去5分钟内发送验证码的次数。如果过去1分钟内已经发送了一次验证码,或者过去5分钟内发送的验证码次数达到了5次或者是8、11、14...次,那么就会进入相应的限制条件,并向用户发送错误消息。如果没有触发任何限制条件,那么就会生成验证码并发送,然后更新发送时间和次数。