不知道幂等性我也就忍了,但总知道防止表单重复提交吧?让我们看一下业务场景,如下图:
维基百科定义 a.在某二元运算下,幂等元素是指被自己重复运算(或对于函数 是为复合)的结果等于它自己的元素。例如,乘法下唯一两个幂等实数为0和1。 b.某一元运算为幂等的时,其作用在任一元素两次后会和其作用一次的结果相同。 例如,高斯符号便是幂等的。
二元运算 设S为一具有作用于其自身的二元运算的集合,则S的元素s称为幂等的(相对于*)当 s *s = s. 特别的是,任一单位元都是幂等的。若S的所有元素都是幂等的话,则其二元运算*被称做是幂等的。 例如,并集和交集的运算便都是幂等的。 一元运算 设f为一由X映射至X的一元运算,则f为幂等的,当对于所有在X内的x, f(f(x)) = f(x). 特别的是,恒等函数一定是幂等的,且任一常数函数也都是幂等的。
请求幂等分类:
- 请求分类:CRUD
- 请求层面:web>>nginx>>网关>>业务逻辑>>数据访问>>DB/Cache
幂等控制方法:
- 防止表单重复提交
- 程序幂等控制
- 数据库唯一索引
- 禁用重试!?
分布式架构尤其是要注意幂等性控制,如果控制不好,上线之后将是修不完的数据,填不完的坑。你平时幂等性怎么处理的?欢迎留言。