12.消费端幂等性

消费端幂等性

1.接口幂等性

1.1:什么是接口的幂等性

接口的幂等性::简而言之,就是对接口发起的一次调用和多次调用,所生产的结果都是一致的。

某些接口具有天然的幂等性:
比如长查询接口,不管是查询一次还是多次,返回的结果都
是一致的

1.2:若接口没有保障幂等性会出现什么问题

比如订单提交的过程中,用户点了一次提交,但是由于网络等原因,导致后端处理延时,客户就连
续点击了多次,在没有幂等性的条件下,那么就会造成订单的重复提交。

1.3:如何解决

在保存订单的时候,根据生成的系统全局唯一ID(这里订单号+业务类型),并且把该唯一ID 调用
redis 的setnx命令保存起来,在第一次保存的时候,由于redis中没有该key,那么就会
把全局唯一ID 进行设置上,此时订单就会保存成功,。这个时候若出现前端重复点击按钮, 由于第一步已经
setnx上了 就会阻止后面的保存。

2.MQ的幂等性

2.1:消息重复发送的原因

为了保障消息的百分之百的投递,我们使用了消息重发,确认机制,使得消息可能被重复发送。

2.2:MQ如何解决幂等问题

还是把对每条消息做生成一个唯一性的ID
通过redis的来setnx命令来保证幂等性。

2.3:MQ服务端如何保证幂等性

消息队列的服务中,对每一条消息都会生成一个全局唯一的与业务无关的ID(inner_msg_id),当mq_server接受到消息的时候,先根据inner_msg_id是否需要重复发送,再决定消息是否落DB,这样保证每条消息都只会落一次DB

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值