【17 > 分布式接口幂等性】1. 概述与接口重试的问题

一、本章概述

二、接口幂等性

[2.1 定义](#2.1 定义)

[2.2 运用场景](#2.2 运用场景)

[2.3 保证幂等性的策略有哪些?](#2.3 保证幂等性的策略有哪些?)

[2.4 如何实现](#2.4 如何实现)

[2.5 如何操作](#2.5 如何操作)

一、本章概述

  • 什么是幂等性
  • 幂等性设计的 核心思想
  • select、updates、delete、insert 和 混合操作 的接口幂等性

二、接口幂等性

  • 提交订单按钮 如何防止重复提交?
  • 表单录入页 如何防止重复提交?
  • 微服务接口,客户端重试时,会对业务数据产生影响吗?

2.1 定义

  • 幂等性: f(f(x)) = f(x)
  • 幂等元素运行多次,还等于它原来的运算结果
  • 在系统中,一个接口运行多次,与运行一次的效果是一致 的

2.2 运用场景

  • 什么情况下需要幂等性
  • 重复提交、接口重试、前端操作抖动 等
  • 业务场景 : 用户多次点击提交订单,后台应只生成一个订单
  • 业务场景 : 支付时,由于网络问题重发,应该只扣一次钱

并不是所有的接口都要求幂等性,要根据业务而定

2.3 保证幂等性的策略有哪些?

幂等性的核心思想:通过唯一的业务单号保证幂等

2.4 如何实现

  • 非并发情况下,查询业务单号有没有操作过,没有则执行操作
  • 并发的情况下,整个操作过程加锁 (分布式锁)

2.5 如何操作

|----------|---------------------|-----------------------------|
| CRUD | 描述 | 操作 |
| Select | 不会对业务数据有影响,天然幂等 | 无 |
| Delete | 第一次已经删除,第二次也不会有影响 | 无 |
| Update | 更新操作传入数据版本号(唯一业务单号) | 通过乐观锁实现幂等性 |
| Insert | 此时没有唯一业务单号 | 使用Token保证寡等 |
| 混合 | 找到操作的 唯一业务单号 | 有:则可使用分布式锁 没有:可以通过Token保证幂等 |

相关推荐
Thanks_ks6 小时前
Cookie 和 Session 到底是什么关系——登录态是怎么维持的
分布式·http·jwt·cookie·session·后端开发·登录态
Sayai9 小时前
Kafka 跨数据中心日志同步实战:MirrorMaker 2 选型对比 + Flink 中继任务落地(双中心互备与消费者组隔离避坑)
大数据·运维·分布式·flink·kafka·消息队列·高可用
CodeGL1 天前
开源的分布式任务调度平台:XXL-Job
分布式·开源
一条泥憨鱼1 天前
【Kafka】零基础学习教程
java·分布式·学习·kafka
贾伟康1 天前
【共创稿事节】HarmonyOS 7.0 HiTraceChain分布式调用链:从接入到生产验证
分布式·harmonyos·可观测性·调用链·hitracechain
NiceZack2 天前
Hadoop 部署全流程教程:从新装 CentOS 到伪分布式与完全分布式
hadoop·分布式·centos
傻啦嘿哟2 天前
分布式爬虫架构:Redis+Scrapy打造企业级爬虫系统
分布式·爬虫·架构
starzy19902 天前
Kafka请求进门口:Processor是怎么把请求读上来的
分布式·kafka
骑着蜗牛撵大象3273 天前
558 万美元训出 671B 模型:DeepSeek-V3 算法与系统的协同拆解
分布式·算法·moe·deepseek-v3·mla·fp8训练
德迅云安全-上官3 天前
德迅游戏盾:面向 TCP 业务的分布式云安全防护方案
分布式·tcp/ip·游戏