幂等函数

第一次听说感觉高大上,其实也就是一个名词,没有固定的解决方案,不同的业务场景用不同方法实现。

什么是幂等?

  软件开发中的幂等通常是系统接口对外的一种承诺,承诺只要调用接口成功,外部多次调用对系统的影响是一致的。

为什么要做幂等?

  比如说一个提现接口:

bool withdraw(account_id, amount);

  这个接口存在一个典型的调用环境:分布式系统的网络不确定性。

  withdraw请求可能已经被服务器端正确处理,但服务器端的返回结果由于网络等原因被丢掉了,导致客户端无法得知处理结果。如果是在网页上,一些不恰当的设计可能会使用户认为上一次的操作失败了,然后进行重试,这就可能导致withdraw被调用两次甚至多次,账户也可能被多次扣钱。

什么时候做幂等?

  1. 接口可能被重复调用(http、thrift等)
  2. 消息可能被重复发送
  3. 作业可能被并发处理
  4. 数据可能被并发处理(乐观锁)

写的有点泛泛而谈了,并没有名词听着感觉那么高大上。

时间: 2024-08-13 04:54:10

幂等函数的相关文章

SICP:对数步数内迭代计算幂的函数

在SICP 32(48)页 根据书中给出的关系 (bn/2)2=(b2)n/2 ,并且使用一个不变量记录中间结果,写出对数步数内迭代计算幂的函数: 方法一(not me): ;;; 16-fast-expt.scm (define (fast-expt b n) (expt-iter b n 1)) (define (expt-iter b n a) (cond ((= n 0) a) ((even? n) (expt-iter (square b) (/ n 2) a)) ((odd? n)

Hive 内建操作符与函数开发——深入浅出学Hive

第一部分:关系运算 Hive支持的关系运算符 ?常见的关系运算符 ?等值比较: = ?不等值比较: <> ?小于比较: < ?小于等于比较: <= ?大于比较: > ?大于等于比较: >= ?空值判断: IS NULL ?非空判断: IS NOT NULL ?LIKE比较: LIKE ?JAVA的LIKE操作: RLIKE ?REGEXP操作: REGEXP ?等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为

高并发的核心技术-幂等的实现方案(转)

高并发的核心技术-幂等的实现方案 一.背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果. 例如: 1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果. 2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱: 3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的: 4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题. 等等很多重要的情况,这些逻辑都需要幂等的特性来支持.

五、MySQL函数

函数表示对输入参数值返回一个具有特定关系的值MySQL提供大量丰富的函数在进行数据库管理以及数据的查询和操作时将会经常用到各种函数.通过对数据的处理数据库功能可以变得更加强大更加灵活地满足不同需求.各类函数从功能主要分为以下几类数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数和加密函数. 5.1.数学函数 绝对值函数ABS(x) mysql> SELECT ABS(2),ABS(-3.3),ABS(-33); +--------+-----------+----------+ |

MySQL函数—数学函数

绝对值函数ABS() 圆周率PI(),小数默认6位 平方根函数SQRT() 求余函数MOD(x,y) 向上取整CEIL(x),CEILING(x) 向下取整FLOOR(x) 随机数RAND(),RAND(x) :产生0~1之间的浮点数,有参数时,相同的参数产生的随机数相等 四舍五入ROUND(x) ROUND(x,y)   保留小数点后y位,y为负值则将保留小数点左移y位的x值 截取函数 TRUNCATE(x,y) 舍去小数点后面y位小数之后的小数,如果y为0则舍去小数点之后的部分,如果y为负数

高并发的核心技术-幂等的实现方案

一.背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果. 例如: 1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果. 2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱: 3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的: 4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题. 等等很多重要的情况,这些逻辑都需要幂等的特性来支持. 二.幂等性概念 幂等(idemp

幂等测试

1.什么是幂等 数学 f(n) = 1^n  就是一个幂等函数 编程 任意多次执行所产生的影响与一次执行相同,不用担心重复执行会对系统造成改变 2.为什么要做幂等 故障: 保底系统因为线上swallow消息重复发送,产生了三个线上问题:    a.ts-treasure-pool大面积告警,全部为db主键冲突的错误.     b.同一笔保底抵扣数据,在归还保底时当做两笔进行归还,影响总数据量1500笔左右.     c.同一笔保底申请审核通过后,被当做两笔审核通过进行了保底占用和预付款生成,共9

Sql Server函数全解&lt;二&gt;数学函数

  数学函数主要用来处理数值数据,主要的数学函数有:绝对值函数,三角函数(包括正弦函数,余弦函数,正切函数,余切函数).对数函数,随机函数等.在错误产生时,数学函数将返回空值null.本次介绍各种数学函数的功能和用法. 1.绝对值函数ABS(x)和返回圆周率的函数PI()  ABS(x)返回x的绝对值,PI()返回圆周率的值  eg: select ABS(2),ABS(-3.3),ABS(-33),PI(); 正数的绝对值是其本身,2的绝对值为2:负数的绝对值为其相反数,-3.3的绝对值为3.

MySQL数据库—日期与时间函数

一. 日期和时间函数 函数的概念:按指定格式输入参数,返回正确结果的运算单元 1. 返回当前日期:curdate() current_date() current_date()+0可以将当前日期转换为数值型 例: select curdate(), current_date(), curdate()+0 2015-09-22       2015-09-22       20150922 2. 返回当前时间:curtime() current_time() current_time()+0 例: