[toc]

幂等去重

最近计算节点网络异常时经常出现请求未响应问题,之前的做法是在接收到任务之后与原先存在的任务做比较,进而判断是否为同一个请求的重试,

主流的MQ实现在 autocommit=true 时天然实现了幂等

但考虑业务处理可能出错的情况我们一般会将autocommit设置成false,在业务处理成功后再提交,这时就需要使用上述幂等方案了

在接收到消息时写入请求Token以实现去重判断(Token可为Topic+Offset)提交后删除Token,整体上可以做到对业务透明

函数式编程

  1. 没有副作用

什么是幂等性

  1. 数学表述, 多次调用仍为自身,
  2. 不产生副作用
  3. 带上uuid识别是否是相同的请求,避免重复请求
  4. ACID 2.0 解释,与分布式中的ACID辨析
  5. stateless 无状态 何时使用,对内维护状态,对外接口无状态+异步。