首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    mysql (什么是性)

    一、什么是性:多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。 二、使用的场景 1、前端重复提交 用户注册,用户创建商品操作,前端都会提交一些数据给后台服务,后台需要根据用户提交的数据在数据库中创建记录。 当消息被其他消费者重新消费时,如果没有性,就会导致消息重复消费时结果异常,如数据库重复数据,数据库数据冲突,资源重复。 三、解决方案 通过token 机制实现接口的性,这是一种比较通用性的实现方法。 总之,当你去设计一个接口的时候,都是首要考虑的问题,特别是当你负责设计转账、支付这种涉及到 money 的接口,你要格外注意喽!

    2.6K10编辑于 2022-07-25
  • 来自专栏采云轩

    浅谈

    前言 是分布式系统中保证数据一致性和安全性的重要保障之一,尤其是在金融、支付领域,其作为资损防控的硬性指标体现在系统架构设计中。今天我们就来浅谈一下相关的设计。 的定义 ( idempotent、idempotence )的概念来源于数学,并被广泛应用于计算机科学。 设计 两大要素 包含两大要素,标记和关键请求参数。 等号:它对应服务端的唯一约束,在设计上,它一般由上游的单号和来源组成。 服务端不能单纯依赖查询做 说明 分布式下并发场景,并不能单纯的依赖查询做到插入 。 调用方:对服务方返回的内容做校验,确保与预期一致。 总结 以上规则是借鉴历史项目和互联网经验总结而成,主要侧重于设计的原则,的落地方案有很多,比如表、乐观锁、悲观锁,这里就不赘述。

    68320编辑于 2023-09-01
  • 来自专栏只喝牛奶的杀手

    维基百科定义 a.在某二元运算下,元素是指被自己重复运算(或对于函数 是为复合)的结果等于它自己的元素。例如,乘法下唯一两个实数为0和1。 b.某一元运算为的时,其作用在任一元素两次后会和其作用一次的结果相同。 例如,高斯符号便是的。 若S的所有元素都是的话,则其二元运算*被称做是的。 例如,并集和交集的运算便都是的。 一元运算 设f为一由X映射至X的一元运算,则f为的,当对于所有在X内的x, f(f(x)) = f(x). 特别的是,恒等函数一定是的,且任一常数函数也都是的。 分布式架构尤其是要注意性控制,如果控制不好,上线之后将是修不完的数据,填不完的坑。你平时性怎么处理的?欢迎留言。

    1.2K10发布于 2019-09-02
  • 来自专栏凯哥Java

    性学习及接口的

    性学习 一:什么是性 在这里需要有以下几个问题需要注意: 1:性的实质是一次或多次请求同一个资源,其结果是相同的。其关注的是对资源产生的影响(副作用)而不是结果,结果可以不同。 之后在根据这个id执行此操作,无论执行多少次其结果和第一次执行后的结果一样; 4:性关注的是以后的多次请求是否对资源产生了副作用,而不是关注的结果; 5:需要说明的是网络超时、服务宕机问题,不是的范围 三:和防重复提交比较 重复提交:重复提交是在第一次请求成功的情况下,人为的进行多次操作,从而导致不满足性要求的服务多次改变数据状态。 ,这种不是的。 为什么要设计性的服务? 性的服务可以使得客户端的处理业务逻辑变的简单了,但是确实以牺牲服务端逻辑变复杂为代价的。

    72500发布于 2019-09-15
  • 来自专栏bisal的个人杂货铺

    老婆问了个问题,什么是“性”? 3.关注的是以后的多次请求是否对资源产生的副作用,而不关注结果。 4.网络超时问题,不是的讨论范围。 在分布式环境下,系统之间不同服务的相互调用,需要关注性的设计,性是系统服务对外一种承诺(而不是实现),承诺只要调用接口成功,外部多次调用对系统的影响是一致的,声明为的服务会认为外部调用失败是常态 在 概念上,和防重,还是有些区别。重复提交是在第一次请求已经成功的情况下,人为的进行多次操作,导致不满足要求的服务多次改变状态。 听着有些绕口,关键是他们的初衷不同,防重是明知成功还要做,是未知结果还要做。 对于数据库增删改查的操作,不同的操作,不同的场景,对于性,会是不同的满足, 1.

    1.3K21发布于 2019-06-19
  • 来自专栏运维部落

    是什么及Ansible实现源码解析

    运维就要无所不能,无所不会 一、概念 二、使用场景 三、实现方案 3.1 db去重表 3.2 MVCC(多版本并发控制) 3.3 状态机约束 四、Ansible 实现源码剖析 是什么及 今天我们硬一把,来聊聊。先上图 ? Ansible-Copy-1st ? 一、概念 (idempotence)一词原为数学上的概念,用一个最直观的数学式子表达为: f(f(x)) = f(x) 对应到软件开发领域,即为同样的请求被执行一次与连续执行多次的效果是一样的, 二、使用场景 应用场景类 某东抢茅台 某信抢红包 技术场景类 ansible执行命令,如符合刚不会重复执行 curl -X GET HTTPURL 三、实现方案 方式不一,具体和业务场景有关联性 changed = False Notice: Ansible 的通过各模块或插件, AdHoc 和 Playbook 只实现了命令分发执行和结果收集展示 参考: 实现[1]

    1.9K20发布于 2021-02-23
  • 来自专栏Python七号

    理解

    消息中间件又把消息投递给另外一台机器处理 为了解决以上问题,就需要保证接口的性,接口的性实际上就是接口可重复调用,在调用方多次调用的情况下,接口最终得到的结果是一致的。 性用一句话概括就是:一个操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 如何来保证性? 1、确保操作是是的。 一个的操作典型如:把编号为5的记录的A字段设置为0这种操作不管执行多少次都是的。一个非的操作典型如:把编号为5的记录的A字段增加1这种操作显然就不是的。 要做到性,从接口设计上来说不设计任何非的操作即可。譬如说需求是:当用户点击赞同时,将答案的赞同数量+1。改为:当用户点击赞同时,确保答案赞同表中存在一条记录,用户、答案。 乐观锁、悲观锁科普 HTTP的性: HTTP GET方法用于获取资源,不应有副作用,所以是的。

    77720发布于 2020-11-25
  • 来自专栏服务端技术杂谈

    系统设计

    前言 简单的定义: 系统中的多次操作,不管多少次,都应该产生一样的效果,或返回一样的效果。 比如实际的业务请求为创建一个活动,理论上需要根据业务形态开发创建活动的接口,这样在相同参数调用接口多次创建活动时,只可以创建成功一次。 由于查询天生的是请求,所以针对于查询场景可以不做业务角度的约束,查询的约束多是针对于资源控制,安全防刷,流控来做的。 由于B系统需要对自己发出去的券进行限制防止超发,所以会根据userId和code建立拦截。 接口调用最好引入来源source,序列号seq信息,可以用source+seq做唯一索引,也可以将这两个值上报做好监控 监控和开关,为可以更直观的观察系统情况,可以建立对应的监控大盘,及告警配置

    96030发布于 2019-05-05
  • 来自专栏dotnet & java

    及实现

    (idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。 在编程中一个操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 函数,或方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。 例如,“setTrue()”函数就是一个函数,无论多次执行,其结果都是一样的.更复杂的操作保证是利用唯一交易号(流水号)实现。 ---- 的作用 无论是单机或者分布式系统都会遇到并发的问题,除了使用类似流量控制的方法之外,当请求真正到达后端服务器之后,设计就可以作为一种解决方案了。 简单一点也可以理解为一个webapi接口被完全“相同”的参数调用了多次,这时候就派上用处了。 看了一些文章,总结一下基本的手段。 具体方法 总的来说,实现中关键的其实是防并发的问题。

    79430发布于 2019-06-11
  • 来自专栏IT技术精选文摘

    聊聊设计

    前言 大家好,今天我们一起来聊聊设计。 什么是 为什么需要 接口超时,如何处理呢? 如何设计? 实现的8种方案 HTTP的 1. 什么是? 是一个数学与计算机科学概念。 在数学中,用函数表达式就是:f(x) = f(f(x))。比如求绝对值的函数,就是的,abs(x) = abs(abs(x))。 计算机科学中,表示一次和多次请求某一个资源应该具有同样的副作用,或者说,多次请求所产生的影响与一次请求执行的影响效果相同。 一般的处理就是这样啦,如下: 5. 实现的8种方案 设计的基本流程都是类似的,我们简简单单来过一下实现的8中方案哈

    49540编辑于 2022-02-15
  • 来自专栏捡田螺的小男孩

    聊聊设计

    今天我们一起来聊聊设计。 什么是 为什么需要 接口超时,如何处理呢? 如何设计? 实现的8种方案 HTTP的 1. 什么是? 是一个数学与计算机科学概念。 在数学中,用函数表达式就是:f(x) = f(f(x))。比如求绝对值的函数,就是的,abs(x) = abs(abs(x))。 如何设计 既然这么多场景需要考虑,那我们如何设计呢? 意味着一条请求的唯一性。不管是你哪个方案去设计,都需要一个全局唯一的ID,去标记这个请求是独一无二的。 实现的8种方案 设计的基本流程都是类似的,我们简简单单来过一下实现的8中方案哈 5.1 select+insert+主键/唯一索引冲突 日常开发中,为了实现交易接口,我是这样实现的: HTTP的 我们的接口,一般都是基于http的,所以我们再来聊聊Http的吧。HTTP 请求方法主要有以下这几种,我们看下各个接口是否都是的。

    1.2K20编辑于 2022-01-05
  • 来自专栏石头岛

    什么是

    函数,或方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。 这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。 例如,"setTrue()"函数就是一个函数,无论多次执行,其结果都是一样的.更复杂的操作保证是利用唯一交易号(流水号)实现. 编程中的 编程中.一个操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。函数,或方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。 与操作有关 与你是不是分布式高并发还有JavaEE都没有关系。关键是你的操作是不是的。 一个的操作典型如:把编号为5的记录的A字段设置为0这种操作不管执行多少次都是的。 一个非的操作典型如:把编号为5的记录的A字段增加1这种操作显然就不是的。 要做到性,从接口设计上来说不设计任何非的操作即可。 譬如说需求是:当用户点击赞同时,将答案的赞同数量+1。

    35520编辑于 2023-10-20
  • 来自专栏java学习java

    接口

    一、什么是性 接口性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用;比如说支付场景,用户购买了商品支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了 feign 触发重试机制 其他业务情况 三、什么情况下需要 以 SQL 为例,有些操作是天然的。 SELECT * FROM table WHER id=? ,无论执行多少次都不会改变状态,是天然的。 UPDATE tab1 SET col1=1 WHERE col2=2,无论执行成功多少次状态都是一致的,也是操作。 为唯一主键,即重复操作上面的业务,只会插入一条用户数据,具备性。 四、解决方案 1、token 机制 1、服务端提供了发送 token 的接口。

    56230编辑于 2023-10-15
  • 性(Idempotence)】

    什么是性(Idempotence) 性是能够以同样的方式做两次,而最终结果将保持不变,就好像它只做了一次的特性。 用法: 在远程服务或数据源中使用性,以便当它多次接收指令时,只处理一次。 一个常见的例子是HTTP的性。 HTTP方法GET和HEAD都是的,因为它们只是获取资源的信息,并不对资源进行修改。 而POST、PUT和DELETE方法则不是的,因为它们对资源进行创建、更新和删除操作。 在Java中,可以通过添加重试机制来实现性。 这样就实现了性,在多次请求中只会处理一次。

    24010编辑于 2025-08-29
  • 来自专栏全栈程序员必看

    什么是性?(处理是什么意思)

    HTTP POST 方法 HTTP POST 方法是一个非方法,因为调用多次,都将产生新的资源。 HTTP PATCH 方法 HTTP PATCH 方法是非的。 但是,我们现在从 RESTful 的资源角度来看待问题,HTTP GET 方法是的,所以它适合作为查询操作,HTTP POST 方法是非的,所以用来表示新增操作。 虽然,它不符合性,但是它是一种折中的方案。 但是,实际上,两个方法都用于创建资源,更为本质的差别是在性。HTTP POST 方法是非,所以用来表示创建资源,HTTP PUT 方法是的,因此表示更新资源更加贴切。

    84030编辑于 2022-08-01
  • 来自专栏程序员奇点

    校验逻辑

    校验逻辑 团队分享的一篇逻辑文章,感觉挺好的,分享出来大家参考 概念:在编程中一个操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 在财经适用的场景:多次同样的请求可以推进流程的,对于同步耗时不敏感的,整个链路都满足上述条件的比如:代扣、提现、转账、退款、分账、计费、回调、账户类操作 关键考虑点: 接口落单前参数校验失败不能返回失败 ,看数据是否存在,然后校验。 对于等比例低的,比如小于1%,可以直接插入,如果数据存在,那么。 ,一般是校验关键参数(出款方&收款方信息,金额),看业务情况是否要校验全部参数; 如果校验失败了那么直接返回参数失败,注意不要返回具体是哪个参数失败了,当然日志里可以打印出来; 如果没有出现insert

    54530编辑于 2023-07-08
  • 来自专栏nobody

    在IT领域,什么是性(idempotence)?为什要实现?如何解决性?

    性(idempotence)的定义 性(idempotence)是一个数学和计算机学概念,指的是对于同一操作,无论是一次还是多次执行,产生的结果是一致的,不会因为多次执行而产生副作用。 为什要实现性 在分布式系统和网络通信中,性尤为重要,以防止数据重复或丢失更新问题。 开发人员在日常开发中必须要考虑性的,尤其是转账、支付涉及金额交易的场景,如果出现性的问题,造成的后果是非常严重的。 ●接口超时重试请求 ●定时任务重试 ●使用消息队列时,重复消费现象 如何解决设计一般有两种处理方法: (1)需要下游系统提供相关的查询接口。 (2)通过性的方式。也就是这个查询操作交给下游系统,上游系统只管重试,由下游系统保证一次和多次的请求结果是一样的。 的解决方案非常多,需要根据具体的业务场景选择具体策略。

    3K11编辑于 2024-03-22
  • 来自专栏三分恶的专栏

    什么是接口性?为什么会产生接口性问题?如何保证接口性?

    针对上面的场景,就引入了今天的问题,什么是接口性?如何保证接口性? 什么是接口性? 首先看看性的概念: 性原本是数学上的概念,用在接口上就可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次。 比如下面这些情况,如果没有实现接口性会有很严重的后果: 支付接口,重复支付会导致多次扣钱 ;订单接口,同一个订单可能会多次创建。 为什么会产生接口性问题? 那么,什么情况下,会产生接口性的问题呢? 参考: 【1】:什么是接口的性,如何实现接口性?一文搞定 【2】:分布式系统中接口的性 【3】:高并发下接口性解决方案

    2.1K20发布于 2020-12-01
  • 来自专栏全栈程序员必看

    restful 性(什么是次法则)

    理解RESTful的性,并且设计符合规范的高质量RESTful API。 怎么理解性 HTTP方法,是指无论调用多少次都不会有不同结果的 HTTP 方法。 HTTP PUT方法 HTTP PUT方法是不是的呢? 但是,我们现在从RESTful的资源角度来看待问题,HTTP GET方法是的,所以它适合作为查询操作,HTTP POST方法是非的,所以用来表示新增操作。 虽然,它不符合性,但是它是一种折中的方案。 但是,实际上,两个方法都用于创建资源,更为本质的差别是在性。HTTP POST方法是非,所以用来表示创建资源,HTTP PUT方法是的,因此表示更新资源更加贴切。

    63820编辑于 2022-07-26
  • 来自专栏main方法

    性如何保证

    1 性 1.1 定义 概念来自数学,表示对数据源做N次变换和1次变换的结果是相同的。 包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。 关注的是以后的多次请求是否对资源产生的副作用,而不关注结果。 网络超时问题,不是的讨论范围。 此时就需要引入性接口了。 这里说下重复提交跟性的区别: 重复提交是在第一次请求已经成功的情况下,人为的进行多次操作,导致不满足要求的服务多次改变状态。 1.3 性思考 引入性后会使得服务端逻辑更加复杂,满足性的服务需要在逻辑中至少包含两点: 首先去查询上一次的执行状态,如果没有则认为是第一次请求。

    1.4K20发布于 2021-06-17
领券