微服务接口安全与幂等设计
1.幂等概念
表单 幂等性问题 就是 表单重复提交问题
2.接口什么情况下会有幂等问题?
网络延迟
补偿接口(补偿就是 重试)
3.补偿机制
客户端请求,服务器没有及时响应,可能会导致延迟。
客户端会再次请求(就是补偿机制)
采用间隔重试形式 同时防止高并发
4.token
随机生成 临时且唯一的字符串 有有效期 使用**uuid生成
**
5. token防止幂等问题
1.用户在加载index.ftl页面的时候,每次都会生成一个token 放入表单隐藏域
2.提交form 讲token传递到 addOrder请求
3.服务器端在redis查询该token是否存在,如果存在可以执行下面代码。
否则表示: 表单已经重复提交
6.获取token
1.生成token 用uuid生成
2.存放到redis
3.返回token 给页面存放
7.查询token 返回布尔值
1.验证传进来token是否为空
2.redis查询该token 如果存在,返回true。否则false
3.删除token: 目的 防止重复提交
4. 若删除返回false,说明高并发
高并发情况下删除,只会有一个删除成功,其他删除失败。redis 保证线程安全 单线程
8.redis和数据库 保持同步开启事物
比较low方式:同时提交。
建议方式:mq异步 形式订阅 数据库的二进制执行文件