travel-逻辑

逻辑

说明:对于一些比较复杂的流程进行预演,方便在写的时候能够更加快捷。

3.24 秒杀逻辑

1
2
3
4
5
6
7
8
9
要求:
秒杀(订单)接口幂等性,秒杀商品防止超卖 --- 提前锁定库存 + redission的信号量保证数量限制 (问题:当前用户获取锁成功,但是秒杀失败处理 -- (数量判断在第一步做)失败可能:订单超时问题,),
秒杀需要写数据库 - 秒杀订单表,秒杀发送消息,通知订单模块创建订单,
秒杀数量需要限制个人-记录没人购买记录(问题:当秒杀商品允许购买多个,每次需要统计当前用户购买于之前累计购买是否超出限制,超出则抛出数量限制异常,未超出,则修改记录值 ; key= skuid:userId, value:nums -- 结构:hash)
问题:
订单超时未支付 -- 订单模块处理逻辑,但是,秒杀数量如何回滚
库存锁定问题 - 用户抢到锁,发送消息,锁定库存
流程:
用户点击秒杀,

秒杀上商品上线

1
涉及表:秒杀商品关系表、秒杀场次信息、
1
2
3
4
5
6
7
8
9
10
* 活动redis
* seckill:sessions:开始时间_结束时间
* skuIds[]
* ====================
* 商品redis
* Map【seckill:skus:】
* <session-skuId,skuId的图片、随机码等详细信息>
* ========================
* 信号量
* <seckill:stock:随机码,
1
2
商品只在Redis上线(问题:Redis宕机怎么办,商品上线库存问题 - 提前锁定库存,或者当前商品不可买,只有秒杀时可以买,对应的ES上线问题 -- 将商品状态改为可见,Redis上线 -- 场次session,
改:只需要在Redis上线)

登录模块

单点登录实现

1
2
3
4
5
6
search.gulimall.com  cart.gulimall.com
同域请求:分布式Session + Redis实现 -- (修改Session域 *.gulimall.com 并将用户信息存储到Redis
gulimall.com -》 jd.com
跨域请求:
1、Spring Security + JWT实现单点登录 --(第一次登录,获取token / code进行 认证流程;第二次通过token直接访问 --- 存在问题:不需要所有的跨域请求都需要权限认证; 解决-用户能够通过认证流程
想要获取当前用户信息,携带token进行用户信息请求?token只存在第一个域的cookie中; 解决-当请求跳转,会用Client1的token去认证Client2,然后Client2 与 服务器建立新的session会话,)

travel-逻辑
http://example.com/2023/09/02/travel-readme/重点功能实现逻辑/
作者
where
发布于
2023年9月2日
许可协议