首页 > 软件开发 >软件开发方案范文 软件开发方案范文大全

软件开发方案范文 软件开发方案范文大全

IT信息网 2024-05-29 00:24:21 0

大家好,今天小编关注到一个比较有意思的话题,就是关于软件开发方案范文的问题,于是小编就整理了1个相关介绍软件开发方案范文的解答,让我们一起看看吧。

软件开发过程中,系统的幂等性有哪些实现方案?

操作一次和操作多次结果一致被称为幂等。下面我们来分析几种常用幂等方案。

软件开发方案范文 软件开发方案范文大全

场景:用户支付成功(订单ID=aaa)此时支付系统将支付成功的消息,发送至消息队列。物流系统订阅到这个消息,准备为这笔订单创建物流单。

但是消息队列有可能会重复推送,也就是说物流系统有可能接收到多次这条消息。我们希望达到的效果是:无论接收到多少条重复消息,只能创建一笔物流单。

方案:新建一张幂等表,该表就是用来做幂等的,无其它业务意义。该表有一个字段名为key,建有唯一索引,这个字段是幂等的标准。

当物流系统订阅到消息后,在创建物流单前,首先要将订单ID(本例=aaa)尝试插入幂等表的key字段。如果插入成功则继续做业务。不成功表示已经处理过了,丢弃消息。

幂等性的概念

用户同一操作请求了一次或者多次,最终的结果应该是一致的,并不会因为多次请求产生副作用;幂等操作的特点是“多次执行所产生的结果与一次执行的结果相同”。比如:

付款操作的时候,请求已经发送给服务端,但是由于网络原因未收到付款结果(实际上已成功),再次操作付款的时候,不应该成功;

在页面做新建操作的时候,手抖连点了新增按钮,那么应该只会创建出一条数据;

查询和删除操作,天然具有幂等性;也就是多次执行查询或删除操作的时候,结果和执行一次查询或删除的结果是一样的。

但是要注意,多次执行删除的返回内容可能不同,比如第一次删除成功,后面再执行删除的话,会显示数据不存在。

新增和修改,如果不做幂等性处理,可能就会产生问题(如果修改只是把某些字段更新成固定的值,不会有幂等性问题,但是如果新值要在旧值上做处理做计算,如增加多少、减少多少,那么多次执行的结果就会有差异);那么保证幂等性有哪些方案呢?(给出我知道的方案,方案有好有坏)

悲观锁:获取数据的时候加锁获取;select * from table where col='xxx' for update; 只能说是一种实现方案,但是不是特别好;

乐观锁:在更新数据那一刻锁表,可以通过条件限制,也可以通过版本号来实现,比如:数据中增加版本号的概念,那么在做数据修改,把当前数据的版本号带上,修改的时候要按照版本号判断数据是否发生过更改。如果没有发生过更改,则执行业务操作,并更新版本号。

到此,以上就是小编对于软件开发方案范文的问题就介绍到这了,希望介绍关于软件开发方案范文的1点解答对大家有用。