• 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对象方法
    重要的小知识点
    vs2017引用vue组件中文乱码
    单行文本溢出打点、多行文本溢出打点
    span和input布局时对不齐
    在思科三层交换机上配置DHCP,不同网段/VLAN间互通
    搭建ssm整合
    使用Redis
    MyBatis常用实现方式
    Java 面向对象
  • 原文地址:https://www.cnblogs.com/luhan777/p/11169966.html
Copyright © 2020-2023  润新知