使用数据库唯一键实现事务幂等性

幂等性

概念

在分布式系统中,幂等性是一致性方面的一个重要概念。

幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。
在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。

所谓“影响相同”,不是要求返回值完全相同,而且是指后续多余的调用对系统的数据一致性不造成破坏。对于写入类操作,如果第一次写入是成功的,后续的写入应该抛出异常或者空操作,或者执行了写入但是未对数据造成变化。对于读取类操作,需要保证其实现上是真正的读取,不能在读操作中夹带写操作。

场景

需要实现幂等性的典型场景有以下两种:

  1. 客户端发起的请求可能需要重试,请求的后端处理需要保证幂等
  2. 后端系统使用同步RPC调用或异步消息实现分布式事务,消息的消费者需要保证幂等
阅读全文〉

焦距与景深

焦距

  • 定义:镜片组中心到传感器的距离
  • 焦距影响视野:焦距越小,视角越大,拍摄范围越大;相反,焦距越大,视角越小,拍摄范围越小,但远处物体更加清晰
  • 焦距影响景深:焦距越大,景深越小,虚化效果
  • 焦距影响变形:焦距越小,变形越大
阅读全文〉

paranamer-maven-plugin报“For input string: ""”问题

paranamer-maven-plugin报“For input string: ”问题

问题现象

使用Maven在构建模块A时报错:

Failed to execute goal com.thoughtworks.paranamer:paranamer-maven-plugin:2.6:generate (run) on project x-y-z: Execution run of goal com.thoughtworks.paranamer:paranamer-maven-plugin:2.6:generate failed: For input string: “” -> [Help 1]

阅读全文〉