• 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同步 

      

  • 相关阅读:
    try catch finally return
    github结合TortoiseGit使用sshkey,无需输入账号和密码
    github上fork别人的代码之后,如何保持和原作者同步的更新
    第9章 浅度和深度复制
    9.7结构类型
    excel在msdn上的说明文档
    9.6接口和抽象类
    [LeetCode]N-Queens II
    鸟哥Linux私房菜知识汇总8至9章
    Memcahce(MC)系列(三)Memcached它PHP转让
  • 原文地址:https://www.cnblogs.com/luhan777/p/11169966.html
Copyright © 2020-2023  润新知