Java面试宝典:重复消费、顺序消费、分布式事务

本文介绍了Java面试中常见的三个问题:如何处理重复消费,实现顺序消费,以及理解分布式事务的ACID特性。针对重复消费,提出了幂等性和强弱检验的解决方案;顺序消费通过Hash取模确保消息发送有序,消费者单线程拉取保证消费顺序;分布式事务则讲解了ACID原则,并简要列举了几种事务处理方式。
摘要由CSDN通过智能技术生成

重复消费

 

诱因

消息队列拥有重试机制,下游业务因(服务器网络抖动,开发人员代码BUG,数据问题)等原因发生异常后,程序会抛出异常并要求重新发送请求。

解决方法

幂等(idempotent、idempotence)

在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。

  • 强检验:用于金钱相关的操作,将金钱与流水接口一起事物,通过流水确定唯一性,方便对账与排查问题

  • 弱检验:使用token / 将场景数据存于Redis

顺序消费

情景

一般都是同个业务场景下不同几个操作的消息同时过去,本身顺序是对的,但是你发出去的时候同时发出去了,消费的时候却乱掉了(多线程同时消费)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值