文章目录

  • 前言
  • 参考文章
  • MQ方案
    • 相关思想
  • DB方案
  • redis方案

前言

由于之前没有总结完整,导致在面试的时候老是有卡壳,比如说最近微众银行的二面,如果通过数据库来实现幂等性

参考文章

  • 阿里经典面试题:消息队列的消费幂等性如何保证?

MQ方案

在服务端的时候是at lease one,就是会多次发送保证说在网络问题或者客户端宕机等等情况下,可以进行多次发送,保证客户端能接收到。那么这时就需要去重。
去重
主要通过messageId进行相应的去重

相关思想

就是有消息状态表,还有对应的标识,可以是messageId或者业务id,去重过程是去查询是否已经消费这条消息,当然如果客户端代码有问题,那么会进行消息重试机制。

DB方案

可以参照mq的方案,下面是几种情况

  1. 就是会有个消息表,以业务id来构建唯一键,然后插入成功,就执行业务,然后标识消息执行完成的状态。
  2. 插入消息成功,但是业务失败的话,会改成失败的标识,方便后续重试。
  3. 插入消息成功,宕机了,那么这里像文章里面讲的,消息表需要一个过期的时间,也就是那些正在执行的消息,过了某个过期时间还没修改状态,那么需要剔除。
  4. 插入消息失败,证明重复消费,剔除即可

其他简单的像:查询的时候用for update,其他就修改不了这条数据。进行相应的修改等等

redis方案

只需要实现分布式锁,以业务id为key,然后先查询有没有对应的数据,没有再插入,然后释放锁。
这时像那些重发很快的请求,肯定是没有拿到锁的,直接剔除。
如果说业务执行完,因为种种原因导致又重发,可以在查询对应数据的步骤,将请求剔除。
比如说订单id为1,用户A给商家b付款,这时肯定有相应的支付流水,可以根据这个去作为判断。

阿里、蚂蚁金服面试--幂等性实现相关推荐

  1. 参加完阿里蚂蚁金服Java中间件6轮面试题!6点血泪总结~

    蚂蚁金服一面:分布式架构 50分钟 1.个人介绍加项目介绍20分钟 2.微服务架构是什么,它的优缺点? 3.ACID CAP BASE理论 4.分布式一致性协议,二段.三段.TCC,优缺点 5.RPC ...

  2. 阿里蚂蚁金服五面,血与泪的总结(附面试题)

    蚂蚁金服一面:分布式架构 50分钟 个人介绍加项目介绍20分钟 微服务架构是什么,它的优缺点? ACID CAP BASE理论 分布式一致性协议,二段.三段.TCC,优缺点 RPC过程 服务注册中心宕 ...

  3. 大佬内推去蚂蚁金服面试,成功定级P6,分享我的6点面试总结(Java)

    3月参加了美团/京东/蚂蚁金服Java岗的面试(内推),重点根据蚂蚁金服P6级面试来总结,蚂蚁金服面试一共参加了4面.面试归来,总结下阿里面试流程.面试过程.以及面试题目范畴.文末有阿里Java P6 ...

  4. 软件测试外包到蚂蚁金服,2019蚂蚁金服面试经验(服务运营岗,测试开发工程师等)...

    为了帮助职业圈网友能够及时了解蚂蚁金服的面试流程以及面试过程所涉及的面试问题,职业圈小编把2019最新蚂蚁金服面试经验编辑好,马上提供给大家,以便能够尽快帮助到有需要的人.文章中还为你提供蚂蚁金服面试 ...

  5. 【高并发】关于乐观锁和悲观锁,蚂蚁金服面试官问了我这几个问题!!

    写在前面 最近,一名读者去蚂蚁金服面试,面试官问了他关于乐观锁和悲观锁的问题,幸亏他看了我的[高并发专题]文章,结果是替这名读者高兴!现就部分面试题目总结成文,供小伙伴们参考. 小伙伴们可以关注 冰河 ...

  6. 阿里蚂蚁金服、蘑菇街、腾讯、去哪儿等实习面试

    说在前面的话 今天收到了自己满意的第一个offer也是第二个offer(第一个太low了不好意思说,BAT牛叉不在意,没赶上华为面试可惜了),每次面试都有收获,不愧于自己这段时间的小小努力.其实也没什 ...

  7. 2019蚂蚁金服面试总结(Java方向)

    大家好,断更已久的我回来了 年初得蚂蚁垂青(本人非985/211,蚂蚁真的不是很在乎学历!!!),有了一次社招机会,前后经历三关,受益匪浅,在此与各位朋友分享经历与心得. 第一关:在线笔试 笔试题内容 ...

  8. 阿里蚂蚁金服中间件(Java 4轮面试题含答案):Redis缓存+线程锁+微服务等

    第一轮 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点? 讲讲jdk1.7和1.8的区别? 几种内置的线程池 MySQL事务隔离级 ...

  9. 蚂蚁金服面试经历(内含大量干货)

    4号通过阿里工作的学长进行内推,7天简历评估,11号接到电话面试,尽管猝不及防回答仓促,但好在前期准备充分,通过.3天后进行现场面试,通知时间为早上10点.当日设了七点闹钟,结果五点五十三分惊醒后再无 ...

最新文章

  1. 时间同步服务器(默认)chrony和ntp
  2. Spring Aware 到底是个啥?
  3. 计算器界面分析及界面程序实现
  4. MacOS 如何显示/隐藏文件
  5. 白鹭引擎 - 显示对象的基准点与横纵坐标 ( 绘制一个来回移动的绿色方块 )
  6. QML如何与C++交互
  7. Chef宣布100%开源,要走红帽模式?\n
  8. 一步一步搭建免费的Silverlight 2开发环境
  9. asp.net夜话之十一:web.config详解
  10. 创建计算机桌面快捷方式图标异常,桌面快捷方式图标显示异常,win7无法正常显示桌面图标怎么办?...
  11. Angular 字符串替换
  12. PS钢笔工具使用方法简介
  13. 开源项目zheng运行环境
  14. org.apache.ibatis.binding.BindingException: Type interface com.java.mapper.UserMapper is not known t
  15. 社区说|浅谈量子计算机和 Cirq
  16. 【课程总结】2022中科大-组合数学-期末考试试题
  17. Python爬取全国大学排名 用pyecharts进行大屏可视化
  18. Python:线程同步,Barrier屏障
  19. 再论意识、行为和结果
  20. 嵌入式linux计算机实验报告,嵌入式linux基本操作实验一的实验报告

热门文章

  1. java实现Json格式美化
  2. 研究型读书法 - 主题阅读法
  3. iOS 11.3 developerDiskImage网盘
  4. python有效边界_Markowitz有效边界和投资组合优化基于Python(附代码)
  5. OSI ARP TCP-IP HDCP
  6. 安装和配置Tripwire,加强你的Linux系统安全
  7. linux程序设计第三版 金国庆,浙江大学Linux程序设计教学大纲与建议学时分配数-金国庆刘加海...
  8. 简单实用、所见所得 -- 网页内容提取功能预览
  9. 专栏《乔新亮的CTO成长复盘》读书笔记(技术架构篇)
  10. SAP纺织行业解决方案