目录
1 幂等性介绍
很多时候大家接触的这个词常在消息队列听到,如何解决MQ幂等性也是面试的一个重点,但是你正着理解这个词吗?比如现如今很多系统都会基于分布式
或微服务思想
完成对系统的架构设计。那么在这一个系统中,就会存在若干个微服务,而且服务间也会产生相互通信调用
。那么既然产生了服务调用,就必然会存在服务调用延迟或失败的问题
。当出现这种问题,服务端会进行重试
等操作或客户端有可能会进行多次点击提交。如果这样请求多次的话,那最终处理的数据结果就一定要保证统一,如支付场景。此时就需要通过保证业务幂等性方案来完成。
举个例子:支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等。
在增删改查4个操作中,尤为注意就是增加或者修改
,查询对于结果是不会有改变的,删除只会进行一次,