这个时候我们就需要思考,当前这种业务场景,我们应该以什么样的方式去应对 。首页我们明确一个观点,秒杀应用场景我们最求什么,用户体验?响应速度?系统稳定性?
那答案肯定是系统稳定性,如果失去了系统稳定性,用户体验、响应速度基本上属于唇亡齿寒 。
在产品参考环节,排队的一个实现,如果前端是在请求加购物车接口后同步等待服务端响应,那按排队时间15s 、30s不等思考,长时间的占用链接势必会拖垮服务端 。
结合现实中的饭店在饭店应对流量高峰例子:排队 。
也就是通过MQ队列异步削峰的方式将用户是否进入队列和后台加购物车一系列有效性校验和扣减活动库存数业务流程解耦,这样就可以对系统的资源进行控制 。
我的设计思路:

文章插图
1、用户点击抢购(排队):
主要的流量入口,对于削峰的处理,一定要越靠前越好 。
验证验证码;
校验队列长度(队列长度不大于当前活动数,这里我使用Redis队列),
队列长度校验通过,发送mq消息,
记录当前用户已在待处理列表 。
核心代码演示:

文章插图
2、异步消息监听:
此处的监听可以减少任务处理线程数,区别于同步的设计方案,这块就是重点的对服务器资源进行控制 。保证更多的资源分配到排队接口 。
/**
* 监听到消息后处理方法
*/
public void handle(SecKillRequestMessage message) {
// 查看请求用户是否在黑名单中(黑名单用户为通过拦截器计算超过访问频次的用户) rpc
if (userBlackListCache.isIn(message.getUserId())) {
logger.error("黑名单用户");
return;
}
// todo ant 实际业务中可对接分控系统检测当前用户是否存在风险
// 先看抢购是否已经结束了
if (secKillFinishCache.isFinish(message.getPromId())) {
logger.error("抱歉,您来晚了,抢购已经结束了");
return;
}
//todo 活动 时间判断
RushBuyItem rushBuyItem = rushBuySearchService.getRushBuyItem(Long.parseLong(message.getPromId()));
if (rushBuyItem == null) {
logger.error("查询秒杀信息异常");
return;
}
//检查实际库存 假预留
ItemDto itemById = itemService.getItemById(rushBuyItem.getProductId());
if (itemById == null) {
logger.error("商品信息异常");
return;
} else if (itemById.getNum() <= 0) {
logger.error("商品库存不足");
return;
}
// 先减redis库存
if (!secKillStockCache.decrStore(message.getPromId())) {
// 减库存失败
throw new YmshopException("占redis名额失败,等待重试");
}
// 减库存成功:生成下单token,并存入redis供前端获取
String token = secKillSuccessTokenCache.genToken(message.getUserId(), message.getPromId());
logger.info(MessageFormat.format("SecKillRequestHandler handle " +
"userId:{0} genToken ()", new String[]{message.getUserId(), token}));
}
通过redis 原子递减操作校验活动库存数,校验通过,生成排队成功token 。意味着当前用户获得了秒杀资格 。
3、查询秒杀令牌接口
根据当前用户和当前活动查询是否存在对应的token 。
前端在请求排队接口后以短轮询的方式请求该接口 。
4、添加秒杀购物车商品
前端需要把第三步查询到的token传入 。
校验token通过,执行商品添加逻辑和去结算逻辑 。前端跳转结算页 。
商品价格取秒杀活动价格 。
- 热血传奇百区电信可以登录网通么 网通新开热血传奇
- 梦幻西游网页版官方网站 梦幻西游工具箱
- 如何看待作家方方的《武汉日记》英文版已在亚马逊网站预售?帝吧官微和方方开撕,你支持哪边?
- uc浏览网页版进入手机have IE浏览器登录入口
- 淘宝批发平台 淘宝进货网站
- 花王旗舰店哪个网站有 花王天猫旗舰店是真的吗
- 企业如何做好网络营销 企业为什么要做网络营销
- 求职网 求职网站有哪些?
- 网上成人用品店哪家好 开成人网店
- 网店模板 网店模板怎么制作
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
