标签:
1.什么是幂等
f(n) = 1^n 就是一个幂等函数
任意多次执行所产生的影响与一次执行相同,不用担心重复执行会对系统造成改变
2.为什么要做幂等
保底系统因为线上swallow消息重复发送,产生了三个线上问题:
a、ts-treasure-pool大面积告警,全部为db主键冲突的错误。
b、同一笔保底抵扣数据,在归还保底时当做两笔进行归还,影响总数据量1500笔左右。
c、同一笔保底申请审核通过后,被当做两笔审核通过进行了保底占用和预付款生成,共9笔。
3.什么时候要做幂等
同样的请求可能需要重试(或可能被重复调用)的情况
按业务场景做针对性判断,利益相关型业务(支付、结算等)
PegionService 接口
Swallow消费机
Http接口
4.如何做到幂等
eg1:创建统一订单 case337
eg2:更新订单可用数量 case2178
eg3: 支付成功后消耗抵用券 PCT_CouponConsume
幂等要做到:
1、同一个OutBizID,多次消耗该抵用券的结果都是成功。
2、但对于一个CouponID,只能被消耗一次,如果换一个OutBizID来调用时应该始终返回失败。
5.如何测试幂等
可在iTest上新增待测Pegions接口、Http接口、发送指定topic的swallow消息的幂等测试用例,重复执行来模拟多次调用
检查接口返回的Response是否幂等
检查对数据库数据的变更影响是否幂等
标签:
原文地址:http://www.cnblogs.com/summer-sun/p/5532633.html