思路

    使用 Spring MVC 的动态链接机制,通过后端动态生成的 hash 值(sha-256)做链接


    可参考

    具体分为三次请求处理

    第一次请求:获取秒杀的随机链接
    第二次请求:发起秒杀请求
    第三次请求:获取秒杀结果


    第一次请求

    前端通过一个固定的 url 向后端申请获取随机链接,此时后端检查此活动的随机链接是否已经存在,若不存在,则使用 sha-256 算法,根据 当前时间戳 + 6位随机数盐 生成一串 hash 字符串,并存入 Redis(Map<pid, hash>

    将 hash 字符串返回前端用于第二次请求

    第二次请求

    前端将第一次请求获取的 hash 拼接到 url 中,发起第二次请求
    后端进行秒杀逻辑操作,并返回等待结果,告知前端秒杀请求处理中

    第三次请求

    前端在接收到第二次请求结果后发起第三次请求,用以获取秒杀结果
    后端有三种可能的返回结果:

    1. status = -1 秒杀失败
    2. status = 0 秒杀成功
    3. status = 1 等待秒杀结果中

    若返回结果为第三种(status=1)则前端延迟 0.2 秒后通过递归调用,再次发起请求询问秒杀结果,直到后端返回 -1 或 0