面试官:分布式幂等如何实现?(拦截器篇)

目录

定义:

幂等操作的特点:

应用场景:

如何产生幂等问题?

注意事项:

实现方式:


定义:

    幂等操作是指对某个操作进行多次执行,其结果与执行一次的结果相同。这一特性在分布式系统和网络服务中非常重要,尤其是在处理请求失败、重试或并发操作时。

幂等操作的特点:

  1. 重复执行无副作用:无论调用多少次,操作的结果都是一致的。例如,向数据库插入相同的记录时,如果使用唯一约束,后续的插入将不会影响已有记录。

  2. 常见的幂等 HTTP 方法:

  • GET:获取资源,多次请求相同的资源不会改变其状态。

  • PUT:更新资源,多次更新同一资源到相同状态,不会产生副作用。

  • DELETE:删除资源,如果资源已经被删除,再次删除操作不会产生不同的结果(通常返回404)。

应用场景:

一般对数据要求比较高的场景,如:金钱交易、数据一致性至关重要的业务场景:

  1. 在线支付:当用户发起支付请求时,避免重复扣款。

  2. 银行交易:确保同一笔交易不会因网络重试等原因被执行多次。

  3. 票务系统:在线购票平台在用户购票时,检查所选座位是否已被重复预订。

  4. 通信服务:如短信或通话服务,系统会检查是否已为相同内容的请求计费。

  5. 任务调度:在定时任务或批处理系统

  6. 用户注册:防止因重复提交表单而导致用户信息被创建多次。

如何产生幂等问题?

产生幂等性问题的原因主要有:

  1. 网络请求重试:网络波动或超时,客户端可能会重复发送相同的请求。

  2. 用户界面重复提交:用户在用户界面上可能会不小心重复点击按钮,导致相同的请求被发送多次。

  3. 消息队列重试机制:使用消息队列(如Kafka、RabbitMQ)时,消息可能会被重复消费。

  4. 数据库并发操作:数据库的插入、更新和删除操作多个事务同时修改同一条记录,而没有使用适当的锁机制或事务隔离级别。

  5. 外部系统API接口重试:对外提供的API接口可能由于调用方的重试逻辑,导致数据库操作被重复调用。

  6. 其它......

注意事项:

  • 尽管幂等性可以减少错误和不一致性,但在设计分布式系统时,仍需考虑性能、可扩展性以及如何处理非幂等操作。
  • 通过实现幂等性,可以提高分布式系统的健壮性和可靠性,从而确保用户体验的一致性。

实现方式:

大致可以分为以下几大类࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值