一、kafka如何保证幂等
1.幂等的含义
-
在数学上的定义
一元:比如绝对值运算 abs(a) = abs(abs(a)) 就是幂等性函数
二元:比如求大值函数 max(x,x) =x 就是幂等性函数 -
转换到程序上
我们常可以在网络上看到类似如下的定义:幂等性是指重复使用同样的参数调用同一方法时总能获得同样的结果。比如对同一资源的GET请求访问结果都是一样的。
对于这个定义,我觉得不是很准确,对于幂等我们应该聚焦的不是多次执行得到同样的结果,而是多次执行带来的影响是不变的,可以看下面的sql示例。
SELECT col1 FROM tab1 WHER col2=2
--无论执行多少次都不会改变状态,是天然的幂等。
UPDATE tab1 SET col1=1 WHERE col2=2
--无论执行成功多少次状态都是一致的,因此也是幂等操作。
UPDATE tab1 SET col1=col1+1 WHERE col2=2
--每次执行的