文章目录
一、问题的由来
在高并发环境中或者金融支付领域保证结果的一致性是最重要的,也是必须的,网络不好我们支付一个订单点了两次,能扣我两笔钱吗?显然是不能,那么怎么保证支付一笔呢。咱们看下面的章节。
二、问题的解决办法
2.1 唯一id
2.1.1 基本原理
每次接口或者业务的操作,都根据业务和操作生成唯一id,在执行之前先判断id是否存在,如果不存在(不存在代表第一次执行)则执行后续操作,将数据保存到数据库或者内存数据库中,等再来一次相同请求时就肯定会执行不成功。
2.1.2 伪代码
插入相同id的数据时
insert into test (id,name,pwd) value ('1','test','test');
就会主键冲突的错误:
Duplicate entry '1' for key 'PRIMARY'
2.2 token机制
2.2.1 基本原理
服务端提供获取token的能力,每次请求前都需要去获取token,服务端把token放入到redis,然后在请求的时候把token带上,服务端在执行业务操作前先验证token,如果token存在就执行业务,执行成功就删除token,下次请求过来的时候发现没有token验证失败,执行业务失败。
2.2.2 伪代码
TokenController