秒杀项目
alex-zhou96
男儿欲遂平生志,五经勤向窗前读。
展开
-
防刷限流技术
文章目录验证码校验验证码限流限流定义限流目的限流方案限制瞬时并发数(不推荐)限制时间最大请求数令牌桶如何实现令牌桶算法防刷验证码生成验证码的代码使用生成验证码的工具生成验证码将验证码存入到redis缓存中之后下单的时候可以验证缓存中是否有 //生成验证码 @RequestMapping(value = "/generateverifycode",method = {RequestMethod.POST}) @ResponseBody public voi.原创 2020-07-08 22:04:33 · 429 阅读 · 0 评论 -
流量削峰技术
改进的点之前的秒杀下单接口被脚本不停的刷秒杀验证逻辑和秒杀下单接口强关联,代码冗余度高秒杀验证逻辑复杂,对交易系统产生无关联复杂秒杀令牌 //申城秒杀令牌 //校验用户以及商品 @Override public String generateSecondKillToken(Integer promoId,Integer itemId,Integer userId) { //获取对应商品的秒杀活动信息 PromoDO pro原创 2020-07-05 21:31:53 · 584 阅读 · 0 评论 -
交易性能优化技术之缓存库存
性能瓶颈分析下单时,应用的模型如下:访问数据库的次数如下:(访问6次数据库;是否能对访问数据库的次数进行一定程序的优化,采用缓存的方式)性能优化交易验证优化原来对用户,商品进行校验的方式:都需要访问数据库 1.校验下单状态,下单的商品是否存在,用户是否合法,购买数量是否正确 ItemModel itemModel = itemService.getItemById(itemId); if(itemModel == null){原创 2020-07-04 11:36:20 · 749 阅读 · 0 评论 -
查询优化技术之多级缓存(数据库)
缓存设计原则用快速存取设备,用内存将缓存推到离用户最近的地方脏缓存处理(关键数据存储到数据库,数据库数据与缓存中数据的一致性问题)多级缓存redis缓存redis本质上是一个数据库,Redis商品详情动态内容的实现在商品详情页,当客户端频繁访问某个数据库的时候,可以将数据库中查询出来的内容缓存到redis中,下一次当客户端发出同样请求的时候不会访问数据库而访问redis缓存。 //商品详情页浏览 @RequestMapping(value = "/get",me原创 2020-06-28 02:28:01 · 431 阅读 · 0 评论 -
分布式会话管理
单体会话管理基于Cookie(传统)基于token传输分布式会话原创 2020-06-15 02:03:39 · 469 阅读 · 0 评论 -
秒杀项目使用Ngix实现动静分离,反向代理
文章目录目前的架构--单机版本单机容量问题--水平扩展水平扩展ngix反向代理负载均衡目前的架构–单机版本单机容量问题–水平扩展水平扩展ngix反向代理负载均衡原创 2020-06-13 02:11:08 · 361 阅读 · 0 评论 -
发现并发容量问题---tomcat内嵌容器参数调整
文章目录Server端并发线程数上不去查看内嵌的tomcat的容器的配置修改配置(显示)定制化内嵌tomcat开发(修改keepAlive)存在问题线程数据库 QPS查询优化QPSTPSServer端并发线程数上不去当使用jemeter工具时,把请求线程数压上可以看到报错此时服务端已经卡死查看内嵌的tomcat的容器的配置spring-configuration-metadata.json//配置的端口号 { "name": "server.port",原创 2020-06-11 22:19:56 · 566 阅读 · 0 评论 -
06秒杀系统业务之一 促销服务
促销服务在之前的基础上,进行业务的增加。表同时在商品的Model中添加一个促销字段 PromoModel若发现这个商品有促销字段则在促销中添加代码 @RequestMapping(value = "/createOrder",method = {RequestMethod.POST},consumes = {CONTENT_TYPE_FORMED}) @ResponseBody public CommonReturnType createOrder(@Reques.原创 2020-06-01 12:16:06 · 204 阅读 · 0 评论 -
01 秒杀系统表结构
下面是秒杀系统数据库表结构的设计用户信息表 user_info字段定义id用户idname用户名gender性别0为女,1为男age年龄register_mode注册方式third_party_id第三方用户密码表 user_password字段定义id密码表的idencrpt_password密码加密存储(在后端用加密之后进行存储)user_id用户id商品表 item字段.原创 2020-05-28 16:51:19 · 671 阅读 · 0 评论 -
02 秒杀系统的整体设计(初步)
文章目录通用工具的设计1、后端传给前端的数据封装错误信息枚举类BaseCOntroller对业务报错的信息进行统一的解析返回给前端数据跨域实现请求 @CrossOrigin自动生成mapper各层Model(以及各个Model转换)对字段进行校验前端采用 Metronic模板在接入层进行一些异常处理,并定义前后端分离数据交互的一个格式业务层进行业务的处理,并进行后端数据的组合交给前端数据层:使用事务、数据Dao进行持久化数据库:MySQL, redis通用工具的设计1、后端传给前端的原创 2020-05-28 18:52:10 · 157 阅读 · 0 评论 -
03秒杀系统业务之一 用户服务
架构设计(基础的组件)涉及到的数据表涉及到的模型(抽象,根据各层的需要)根据各层不同的需求需要进行POJO的各种封装用户注册生成验证码前端填写手机号,传送给后端后端生成验证码,发送成功标志给前端前端获取到Json数据对其分析跳转到注册页面,进行表单填写 @RequestMapping(value = "/getotp",method = {RequestMethod.POST},consumes = {CONTENT_TYPE_FORMED})//consumers传输原创 2020-05-29 12:32:13 · 131 阅读 · 0 评论 -
04秒杀系统业务之二 商品服务
架构设计(基础的组件)涉及到的数据表涉及到的模型(抽象,根据各层的需要)根据各层不同的需求需要进行POJO的各种封装获取商品的列表前端请求的信息// 定义全局商品数组信息 var g_itemList = []; $(document).ready(function () { $.ajax({ type: "GET", url: "http://localhost:8080/item/getItemLi原创 2020-05-29 14:52:59 · 186 阅读 · 0 评论 -
05秒杀系统业务之三 订单服务
架构设计(基础的组件)涉及到的数据表用户信息表 user_info字段定义id用户idname用户名gender性别0为女,1为男age年龄register_mode注册方式third_party_id第三方用户密码表 user_password字段定义id密码表的idencrpt_password密码加密存储(在后端用加密之后进行存储)user_id用户id商品表 item字段原创 2020-05-29 15:28:03 · 284 阅读 · 0 评论