什么是软件设计中的幂等性?

背景

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

什么是软件设计中的幂等性?

订单支付处理的幂等性

定义

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

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

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

解决方案

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

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

什么是软件设计中的幂等性?

分布式ID实现方案

来源:飞狗科技

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月26日
下一篇 2021年2月26日

相关推荐