服务幂等设计与实践

  1. 幂等定义
    请求层面
      保证请求重复执行和执行一次结果相同
    
    业务层面
      1 同一个用户不重复下单
      2 商品不超卖
      3 MQ消费端去重
  2. 幂等范围
    读/写请求层面
      请求对数据造成改变
        读 X
        写 √
    
    架构层层面
      哪些层会对数据造成改变
        反向代理层  X
        网关层  X
        业务逻辑层 X
        数据访问层 √
  3. 数据访问层(CRUD)
    1 Create/Insert
      如果插入记录拥有业务主键,或者唯一索引,则是幂等的
    
    2 Read/Select
      查询不会造成数据改变,幂等。
    
    3 Update
      1 Update user set age=18 where uid=58;//绝对值修改是幂等
      2 Update user set age++ where uid =58;//相对值修改不是幂等,可以转换绝对值,Update user set age++ where uid=58    and age=18; 但是在并发量很大的情况下,不会这么去做。
    
    4 Delete
      1 Delete from user where uid=58;//绝对值删除是幂等
      2 Delete from user where uid in bottom 10;//相对值删除不是幂等。先查询,再根据绝对值去删除
  4. 业务层面幂等
    冗余部署多个进程
      1 存在并发消费的可能性
      2 并发转变成串行消费
    
    本质
    分布式锁问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值