zoukankan      html  css  js  c++  java
  • RabbitMQ幂等性概念(七)

    幂等性是什么?

      我们可以借鉴数据库的乐观锁机制

        比如我们执行一条更新库存的sql语句update user set count=count-1,version=version+1 where version=1

    幂等性保障

      在海量订单产生的业务高峰期间,如何避免消息的重复消费问题?

      消费端实现幂等性,就意味着,我们的消息永远不会消费多次,即使我们收到多条一样的消息

    业界主流的幂等性操作:

      唯一ID+指纹码机制,利用数据库主键去重

        select count(1)from user where id = 唯一id+指纹码

        好处:实现简单

        坏处:高并发下有数据库写入的性能瓶颈

        解决方案:跟进ID进行分库分表进行算法路由

      利用Redis的原子特性实现(一致性,单一性)

        使用Redis进行幂等,需要考虑的问题

          是否对数据进行落库,如果落库的话,关键解决的问题是数据库和缓存如何做到原子性?

          如果不进行落库,都存储到缓存中。如何设置定时同步的策略?

            解决方案:

               双缓存模式,异步写入到缓存中,也可以写入到数据库中,

               最终会有一个回调函数检查,这样能保障最终一致性,不能保证100%的实时性,

               定是同步,比如databus同步 

      

  • 相关阅读:
    网页 js 获取DPI pxTomm
    利用自定义属性实现js点击事件 委托
    鼠标移动div时禁止选中div中的文字的方法
    关于if简写语句优化的方法
    .clearfix::after(清除浮动)
    js 事件委托
    清空共享池
    oracle中scott用户权限不足
    安装完Oracle 12C数据库,scott账户过期,解锁方法
    Vulnhub靶场-Me Tomcat Host 学习笔记
  • 原文地址:https://www.cnblogs.com/luhan777/p/11169966.html
Copyright © 2011-2022 走看看