作为一个后端程序员,做后端接口的我的日常工作。其实我和大部分的后端程序员日常的工作一样都是CRUD,最常用的就是一个controller,一个service,一个impl实现类,直到最近有被问起,你做的接口等性吗?一开始有点懵,后来去查了下,整理了下思路,做个随笔。等性的定义:对于后端业务系统来说 ,外部对于同一个操作的一次或者多次请求如果都能返回一样的结果,那么我的接口就是拥有等性的。&
转载 2023-07-20 17:16:23
69阅读
接口等性定义我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。满足这些条件的接口都应该实现等性。例子用户下订单后,由于网络波动,在前端没有接收到后端成功请求之前。用户多次提交相同请求参数的请求,可能会导致出现多次扣款和多次订单情况。解决方案通过唯一标识来区分,订单编号,流水编号(不与当前时间关联)增加数据库唯一索引数据提交前要向服务的申请token,token放到
1. 利用数据库的唯一约束实现等2. 为更新的数据设置前置条件3. 记录并检查操作如果上面提到的两种实现等方法都不能适用于你的场景,我们还有一种通用性最强,适用范围最广的实现等性方法:记录并检查操作,也称为“Token 机制或者 GUID(全局唯一 ID)机制”,实现的思路特别简单:在执行数据更新操作之前,先检查一下是否执行过这个更新操作。具体的实现方法是,在发送消息时,给每条消息指定一个全
一.什么是等性?在编程中一个等操作的特点是其任意多次执行所产生的影响与一次执行的影响相同。等函数,或等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变,例如,“setTrue”函数就是一个等函数,无论多次执行,其结果都是一样的,更复杂的等性是利用唯一交易号(流水号)实现。二.什么是接口等性?接口等性就是客户端对
深入理解Java等性1. 概念理解等:是一个数学概念,表示N次变换和1次变换的结果相同。等操作:其特点是任意多次执行所产生的影响均与一次执行的影响相同(不会改变资源状态,对数据没有副作用)。等性:一系列操作都是等操作。接口接口认为,外部调用者会存在多次调用的场景,为了防止重试对数据状态的改变,需要将接口的设计为等的HTTP方法的等性是指一次和多次请求某一个资源应该具有同样的
SpringBoot + Redis实现接口等性 SpringBoot + Redis实现接口等性 简介:等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次。比如:订单接口, 不能多次创建订单。支付接口, 重复支付同一笔订单只能扣一次钱。产生原因:1) 点击提交按钮两次;2) 点击刷新按钮;3) 使用浏览器
转载 2023-06-24 22:31:36
279阅读
Spring Boot接口等性的处理在分布式服务中,业务在高并发或者可能被多次调用的情况下,同一个请求会出现多次。这个时候如果执行插入的业务操作,则数据库中出现多条数据,产生了脏数据,同时也是对资源的浪费。 此时我们需要阻止多余业务的处理操作。实现方案实现接口等性,让请求只成功一次。这里需要保存一个唯一标识key,在下一个相同请求(类似表的唯一索引,请求的时间戳不同但几个核心参数相同即认为相
转载 2024-02-11 20:30:59
24阅读
技术质检员:接口等性如何设计?前言所谓等: 多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。我们在开发中主要操作也就是CURD,其中读取操作和删除操作是天然等的,我们所关心的就是创建操作、更新操作。创建操作一定是非等的因为要涉及到新数据的产生,而更新操作有可能等有可能非等,这个要看具体业务场景。一、等性的使用场景1、前端重复提交就好比有个
一、概念等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次比如:订单接口, 不能多次创建订单支付接口, 重复支付同一笔订单只能扣一次钱支付宝回调接口, 可能会多次回调, 必须处理重复回调普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次等等二、常见解决方案唯一索引 -- 防止新增脏数据token机制 -- 防止页面重复提交悲观锁 -- 获取数据的时候加
转载 2023-10-26 20:50:50
251阅读
概念接口等性指的是同一个接口,多次发出的同一个请求,必须保证操作只执行一次。比如在极短时间内同一个订单用户点击了2次提交,这时第二次点击应视为无效点击。实现方案举例基于请求凭证,token机制此种方式比较常见,大致流程如下:客户端预先向服务端申请一个唯一token作为请求凭证客户端调用接口时,携带token服务端获取客户端token,执行redis SETNX命令将token指定有效期写入red
目录什么是等性什么是接口等性为什么需要实现等性引入等性后对系统的影响Restful API 接口等性如何实现等性方案一:数据库唯一主键方案二:数据库乐观锁方案三:防重 Token 令牌方案四、下游传递唯一序列号实现接口等示例Maven 引入相关依赖配置连接 Redis 的参数创建与验证 Token 工具类创建测试的 Controller 类创建 SpringBoot 启动类写测试类
# Java代码实现接口等 ## 引言 在开发中,我们经常会遇到接口调用的等性问题。等性是指同样的请求,无论调用多少次,只会产生一次结果。确保接口等性是非常重要的,可以避免重复操作引起的数据不一致等问题。本文将向你介绍如何使用Java代码实现接口等。 ## 流程概述 实现接口等的基本流程如下: | 步骤 | 描述 | | ---- | ---- | | 1 | 客户端发起接口
原创 2023-09-09 05:13:16
118阅读
文章目录一、接口等性概念1. 接口调用存在的问题2. 什么是接口等性3. 什么情况下需要保证接口等性二、那些情况需要防止三、等解决方案1、Token机制2、各种锁机制1、数据库悲观锁2、数据库乐观锁3、业务层分布式锁3、状态机等4、对外提供接口的api如何保证等四、项目实战1、为了防止订单重复提交,所以,我们使用Token令牌来做等性处理。1、订单确认页生成token 任意多次执
在日常开发中,尤其是在构建分布式系统或微服务架构时,接口等性是一个不可忽视的概念。简单来说,等性指的是无论同一个请求被执行多少次,其结果都是相同的。为了解决这一问题,我们将通过一个Java实现接口等性Demo来探讨其背景、技术原理、架构解析、源码分析以及性能优化等方面。 ## 背景描述 在分布式系统中,一次操作可能因网络延迟等原因被重复发送,导致系统状态变化而非预期的结果。因此,设计接
原创 5月前
16阅读
一、概念等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次比如:订单接口, 不能多次创建订单支付接口, 重复支付同一笔订单只能扣一次钱支付宝回调接口, 可能会多次回调, 必须处理重复回调普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次等等二、常见解决方案唯一索引 -- 防止新增脏数据token机制 -- 防止页面重复提交悲观锁 -- 获取数据的时候加
1等性是开发当中很常见也很重要的一个需求,尤其是支付、订单等与金钱挂钩的服务,保证接口等性尤其重要。在实际开发中,我们需要针对不同的业务场景我们需要灵活的选择等性的实现方式:对于下单等存在唯一主键的,可以使用“唯一主键方案”的方式实现。对于更新订单状态等相关的更新场景操作,使用“乐观锁方案”实现更为简单。对于上下游这种,下游请求上游,上游服务可以使用“下游传递唯一序列号方案”更为合理。类似于
转载 2023-06-05 15:11:53
145阅读
什么是接口等性,如何实现接口等性?(一)等性概念等性原本是数学上的概念,用在接口上就可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次。 调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。 比如下面这些情况,如果没有实现接口等性会有很严重的后果: 支付接口,重复支付会导致多次扣钱 订单接口,同一个订单可能会多次创建。(二)等性
一、什么是等性      等是一个数学与计算机概念,在数学中某一元预算为等时,其作用在任一元素两次后会和其作用一次的结果相同。      在计算机中,一个等操作的特点是其任意执行多次执行产生的影响均与执行一次产生的影响相同。等函数或者等方法是指可以使用相同的参数重复执行,并能获得相同结果的函数和方法。二、接口等性 
一、什么是等性在计算机中编程中,一个等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。等函数或等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。二、什么是接口等性在HTTP/1.1中,对等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第一次请求的
接口等性的几种解决方案等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的很多重要的情况都需要等的特性来支持。比如如下的几种业务场景:前端重复提交数据,应该后台只产生对应这个数据的一个响应;我们发起一笔付款请求,应该只扣用户账户一次钱;发送短信给用户,也应该也只能只发一次;创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题等等。等性方案在设计接口时,重点关注新增接
转载 2023-10-12 13:07:49
161阅读
  • 1
  • 2
  • 3
  • 4
  • 5