幂的意思是什么(什么是软件设计中的幂等性?)

时间:2024-09-23 09:47:40

背景

在程序中,尤其是分布式系统中,一个事务需要多个系统进行处理,确保每一个系统的一次或多次处理不影响最终的结果,就要求每一个系统的处理都是幂等性的。例如一个下单支付流程,用户发起流程,在订单系统进行下单操作,下单成功后在支付系统进行支付,此时支付由于超时或者网络原因等,没有操作成功,再次发起支付时,要保证不能够重复的扣款,必须保证支付功能的幂等性。


订单支付处理的幂等性


定义

幂在汉语中的意思通常指遮盖东西的巾,作为动词时是覆盖的意思。

幂在数学中是指数运算的结果。例如nᵐ,叫做n的m次幂,也叫n的m次方。

幂等性在软件设计中的定义为:某个函数或者某个接口使用相同参数调用一次或者无限次,其造成的后果是一样的。

解决方案

通过业务唯一流水号(Serial Number)来区别每一次的请求,如上例所示订单、支付调用都需要生成唯一的业务流水号,调用异常再次发起时使用同样的流水号再次发起请求或者查询操作。

唯一业务流水号的生成可以采用多种方案,可以采用分布式ID的方式实现,下面例举出11种方案,仅供参考。


分布式ID实现方案