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

2023-11-13

一、本章概述

二、接口幂等性

2.1 定义

2.2 运用场景

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

2.4 如何实现

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保证幂等

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 【笔记】下单但未支付的订单倒计时自动取消逻辑实现

    平常我们都用过淘宝 京东这些电商平台 同时肯定也在这些平台上面下过单 这种情况不保证大家都有遇到过 但做开发的 肯定也知道有这个环节的存在 确认货品配置无误之后 我们都会点击购买 随之而来的就是一个结算页 让你确认商品信息 收货地址 价格等
  • Hi3516全系统类型烧录教程

    烧录资料下载 https gitee com hihope iot docs tree master HiSpark AI Camera Developer Kit Software tools 第一步 安装好hitool usb 烧写的驱
  • 基于 Zipkin的链路追踪

    Zipkin介绍 Zipkin 是 Twitter 的一个开源项目 它基于 Google Dapper 实现 它致力于收集服务的定时数据 以 解决微服务架构中的延迟问题 包括数据的收集 存储 查找和展现 我们可以使用它来收集各个服务器 上请
  • 微服务框架

    微服务框架 1 SOA思想 面向服务的架构 SOA 是一个组件模型 它将应用程序的不同功能单元 称为服务 进行拆分 并通过这些服务之间定义良好的接口和协议联系起来 接口是采用中立的方式进行定义的 它应该独立于实现服务的硬件平台 操作系统和编
  • 记录一次生产环境MySQL死锁以及解决思路

    一 背景 1 业务背景 这里因为涉及到公司的业务问题不进行深入讨论 下面换成通用的一些业务场景就是举例 2 技术背景 众所周知 所谓锁的产生本质上是想解决资源竞争问题 在MySQL的前提下 MySQL为了解决事务并发独写的问题 在进行ins
  • 深度学习大模型训练--分布式 deepspeed PipeLine Parallelism 源码解析

    deepspeed PipeLine Parallelism 源码解析 basic concept PipeDream abstract 1F1B 4 steps Code comprehension in deepspeed prepar
  • 【NPS 服务器搭建】2. 客户端完全手册

    场景 内网机器需要提供远程访问 如SSH 环境 1 一台独立ip的VPS 如阿里云服务器 2 一台内网的主机 windows linux 步骤 1 服务端中 新建客户端 2 服务端中 新建通道 2 1 点击进入通道管理 2 2 新增通道 1
  • 分布式系统详解--基础知识(通信)

    分布式系统详解 基础知识 通信 上一篇文章我们写到了 分布式系统详解 基础知识 线程 简单了解了一下线程的基本概念和线程和分布式的那斩不断理还乱的关系 今天再讲解一下它的另外一个必备知识 通信 进程之间进行通信是分布式的核心 失去了通信 也
  • 基于一致性理论的孤岛微电网分布式控制策略研究(Simulink仿真实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 仿真搭建 2 2 优化控制
  • Hadoop3.x完全分布式模式下slaveDataNode节点未启动调整

    目录 前言 一 问题重现 1 查询Hadoop版本 2 集群启动Hadoop 二 问题分析 三 Hadoop3 x的集群配置 1 停止Hadoop服务 2 配置workers 3 从节点检测 4 WebUI监控 总结 前言 在大数据的世界里
  • Zookeeper 和 Dubbo 的关系?

    Zookeeper的作用 zookeeper用来注册服务和进行负载均衡 哪一个服务由哪一个机器来提供必需让调用者知道 简单来说就是ip地址和服务名称的对应关系 当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现 但是如果提供服务
  • 使用 Helm Chart 部署分布式 GreptimeDB

    GreptimeDB 作为云时代基础设施的时序数据库 从第一天开始就积极拥抱云原生技术 将数据库部署在 Kubernetes 上可以提供可伸缩性 自愈能力和简化的部署和管理 从而为应用程序提供了强大的弹性和可靠性 Helm 是一个用于管理
  • 网站被攻击了怎么恢复?如何在被攻击后第一时间接入高防恢复正常访问?

    网站受到攻击的原因是多种多样的 包括技术漏洞 人为疏忽 社会工程学等各种因素 保护网站的安全需要综合运用技术手段 当网站遭到攻击时 以下几个步骤可以帮助恢复网站的正常运行 1 分析攻击 首先要确认网站被攻击的类型和程度 以确定所需的恢复步骤
  • spark相关

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 【复现】遗传算法求解分布式电源选址定容问题并考虑环境因素研究【IEEE33节点】(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 考虑极端天气线路脆弱性的配电网分布式电源配置优化模型【IEEE33节点】(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • CAP与BASE理论

    CAP与BASE理论 CAP 一个分布式系统最多只能同时满足一致性 Consistency 可用性 Availability 和分区容错性 Partition tolerance 这三项中的两项 C一致性 状态的一致性 缓存 数据库 集群等
  • Kafka速度之谜:高性能的幕后秘密大揭秘

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 kafka高性能的原因 Page Cache ZeroCopy 零拷贝 前言 Kafka的介绍 kafka是linkedIn开源的分布式消息系统 归给Ap
  • 2024年华为Harmony OS走到新里程碑:取代iOS成为国内第二大智能手机操作系统

    前言 如果要问2024年最火的技术是什么 那鸿蒙开发必须占据一些位置 HarmonyOS是华为自主研发的物联网操作系统 经历四年多的发展已构建起全新的智慧生态体系 彻底改变了智能终端的交互方式 当时鸿蒙生态的智能设备已超过7亿台 同时还带来
  • RabbitMQ环境配置

    文章目录 安装Erlang 安装RabbitMQ 安装Erlang 下载地址 http erlang org download otp win64 25 3 2 7 exe 安装RabbitMQ 下载地址 https www rabbitm

随机推荐

  • Logistic回归实战篇之预测病马死亡率(三)

    作 者 崔家华 编 辑 李文臣 四 使用Sklearn构建Logistic回归分类器 开始新一轮的征程 让我们看下Sklearn的Logistic回归分类器 官方英文文档地址 http scikit learn org dev module
  • Python 自动发送邮件详细教程

    自动发送邮件能应用于许多场景中 比如我想要知道股票策略中的股票池是否有实时的更新 这时候如果再拉一遍数据 跑一遍脚本 实在是太浪费时间了 为什么不把这一套流程放到服务器上 然后到点自动运行并发送邮件呢 类似的应用场景还有很多 不仅仅是在股票
  • Cocos2dx中文乱码问题

    最开始在网上找的一个方法 结果在wp8上报错 在windows环境下使用visual studio 开发cocos2d x 由于visual studio 默认编码为GBK 格式 而cocos2d x引擎默认编码为UTF 8 如果有用到中文
  • 从输入网址(URL)到页面加载的全过程

    从输入网址 URL 到页面加载的全过程 简述 输入网址到页面加载的过程涉及知识点众多 所以这里整理一下自己看过的相关文章内容 在浏览器中输入URL 在浏览器中输入URL 也就是网址 URL是Uniform Resource Locator的
  • Queue基本概念

    概念 Queue是一种先进先出的数据结构 他有两个出口 队列容器允许从一段新增元素 从另一端移除元素 队列中只有队头和队尾可以被外界使用 因此队列不允许有遍历行为 队列中进数据称为 入队push 队列中出数据称为 出队pop queue常用
  • Objective-C中的继承与多态, Category, Extension

    1 继承与多态 先要理解实例变量的作用域 再看继承 即 子类的方法和属性 从父类继承得到的方法和属性 子类新增的方法和属性 例子 Person h import
  • 浅谈Log4j和Log4j2的区别

    相信很多程序猿朋友对log4j都很熟悉 log4j可以说是陪伴了绝大多数的朋友开启的编程 我不知道log4j之前是用什么 至少在我的生涯中 是log4j带我开启的日志时代 log4j是Apache的一个开源项目 我们不去考究它的起源时间 但
  • 微信小程序如何刷新当前页面

    微信小程序是一种快速发展的移动应用程序开发平台 它提供了许多功能和特性 使开发者能够轻松创建功能丰富的小程序 在开发小程序时 有时我们需要刷新当前页面来更新数据或重新加载页面内容 本文将解释如何在微信小程序中刷新当前页面的代码 引言 微信小
  • Qt5.15.2 Webassembly源码裁剪编译

    第一步 configure debug and release opensource prefix D qt everywhere src compFile platform win32 g nomake examples 第二步 ming
  • 神了!7行代码建起360亿的支付帝国

    点击上方 小詹学Python 选择 星标 公众号 超级无敌干货每日12 00推送给你 大数据文摘出品 来源 medium 编译 lin 夏雅薇 去年 根据CBInsights和普华永道联合发表的MoneyTree 2019Q1报告显示 支付
  • 通过同花顺股票程序化交易接口的止损方法有哪些?

    今天我们就一起来看一下同花顺股票程序化交易接口的止损方法 止损方法主要分为三种 定额止损法 技术止损法以及无条件止损法 下面我们就一个一个的来学习 一 定额止损法 顾明思议这是一种最简单的止损方法 其本质就是将亏损额设定为一个固定的比例 如
  • Java IO流、输入流和输出流总结

    Java流类结构图 流的概念和作用 流是一组有顺序的 有起点和终点的字节集合 是对数据传输的总称或抽象 即数据在两设备间的传输称为流 流的本质是数据传输 根据数据传输特性将流抽象为各种类 方便更直观的进行数据操作 IO流的分类 根据处理数据
  • python xgboost 导入失败_无法在Python中导入xgboost

    我已经成功地使用pip for python2 7 16安装了xgboost 我在macOS High Sierra上使用自制程序安装了这个Python版本 我的问题是无法在Python中导入xgboost 错误消息如下 mac 12864
  • 【翻译】为什么你的活动需要一个行为准则,你需要执行它

    会议的开幕词是一个特别关键的时刻 无论你的舞台是实体的还是虚拟的 其实都不重要 重要的是设定正确的基调 分享有用的信息以提高每个人的经验 让你的听众参与进来 感到兴奋和安全 这些感觉只是保证你的会议成功的一半 另一半来自于伟大的内容和创意
  • 作业2018.12.9日,第1题:使用循环输出:100、95、90.....10、5

    使用循环输出 100 95 90 10 5 int n 100 while n gt 0 if n 5 0 System out println n n
  • 就是这么简单!破解激活AutoCAD 2019 for mac v2019.0.1(附图文讲解)

    AutoCAD是大家都熟悉的软件了 广泛应用于机械设计 工业制图 工程制图 土木建筑 装饰装潢 服装加工等多个行业领域 使用Mac的朋友 AutoCAD 2019 Mac支持演示的图形 渲染工具和强大的绘图及三维打印功能 让您的设计将会更加
  • 第20章:python自动化——关键字驱动类实现

    目录 一 关键字驱动设计模式介绍 二 关键字驱动设计模式原理 三 关键字驱动设计模式代码实现 1 逻辑代码web keys py文件内容 2 测试代码web test py文件内容 四 总结 一 关键字驱动设计模式介绍 在自动化测试中 分为
  • PCL 点云投影到直线(C++详细过程版)

    目录 一 算法原理 二 代码实现 三 结果展示 1 原始点云 2 投影结果 一 算法原理 直线方程有三种表示法 一般式 点向式 参数式 PCL中统一采用的是点向式 直线的点向式方程为 x x 0 m y
  • 星星之火:国产讯飞星火大模型的实际使用体验(与GPT对比)

    AIGC技术内容创作征文 全网寻找AI创作者 快来释放你的创作潜能吧 文章目录 1 前言 2 测试详情 2 1 文案写作 2 2 知识写作 2 3 阅读理解 2 4 语意测试 重点关注 2 5 常识性测试 重点关注 2 6 代码理解与生成
  • 【17 > 分布式接口幂等性】1. 概述与接口重试的问题

    一 本章概述 二 接口幂等性 2 1 定义 2 2 运用场景 2 3 保证幂等性的策略有哪些 2 4 如何实现 2 5 如何操作 一 本章概述 什么是幂等性 幂等性设计的 核心思想 select updates delete insert