幂等性是什么?

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

    比如我们执行一条更新库存的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同步 

  

最新文章

  1. 从SQL下载大量数据到Excel
  2. PHP守护进程
  3. Ajax请求WebService跨域问题 [转载]
  4. zookeeper 用法和日常运维
  5. makefile基础实例讲解 分类: C/C++ 2015-03-16 10:11 66人阅读 评论(0) 收藏
  6. Hadoop学习1--解决启动过程中的问题
  7. 【转】代码编辑器(二)-SynEdit
  8. JS 学习笔记--4---运算符
  9. web标准(复习)--1
  10. Android layoutInflate.inflate 方法具体解释,removeView()错误解决
  11. spring知识点全部复习
  12. gulp 运用 的理解
  13. iOS - Quartz 2D 手势截屏绘制
  14. Mongodb副本集--Out of memory: Kill process 37325 (mongod)
  15. 数据可视化的开源方案: Superset vs Redash vs Metabase (一)
  16. Python 基础算法
  17. WPF编程,将控件所呈现的内容保存成图像的一种方法。
  18. Java 获取指定包下的所有类
  19. SQL Server 的索引结构实例
  20. OpenERP report doesn't work

热门文章

  1. linux 扩展正则表达式 egrep
  2. c++ 加载库错误问题解决
  3. [知乎]ARM 到底是什么
  4. Mysql常用时间函数的用法和应用
  5. pistat 查看进程状态
  6. Educational Codeforces Round 72 (Rated for Div. 2) Solution
  7. 【FAQ】P3. 为什么 torch.cuda.is_available() 是 False
  8. vscode 热部署 spring-mvc
  9. react-native样式引入
  10. 表单提交 multipart/form-data 和 x-www-form-urlencoded的区别