码迷,mamicode.com
首页 > 其他好文 > 详细

解决并发保证数据一致性、幂等性方案

时间:2016-06-27 17:50:50      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:并发方案、数据一致性

解决高并发、保证数据一致性、幂等性的方案

基本思路:在每次请求服务之前,先必须调用"令牌服务",获得一个唯一的令牌,然后再带上令牌ID这个参数去调用相关的服务。由于这个令牌ID是唯一的,所以,这样可以有效的防止同一个业务多次执行。

具体步骤如下:

step1.首先在数据库中创建一个存放令牌相关信息的表open_ticket;

step2.定义调用令牌服务的参数:至少包括 操作用户、业务编号、业务场景类型;

step3.定义获取"令牌"的服务TicketDTO builderTicket(TicketCreateParam ticketCreateParam)

    a.检查创建参数的完整性;

    b.检查当前唯一业务编号令牌是否已经创建;

    c.TicketDTO newTicket = builder(ticketCreateParam);

step4.调用相关业务服务执行成功后更新令牌信息的状态为成功。


说明:一般在电商项目中,这种高并发是很常见的,为了防止同一个业务被多次执行,比如一个订单可能被多次支付,重复扣钱,我们就可以通过这个方案有效的避免,比如当同一个订单第二次进行支付时,由于订单号和上一次相同,业务类型也是订单支付,所以在调用"令牌服务"时,会被检查到此业务已经创建过令牌ID,且状态还是受理中,这时,创建令牌服务信息就会失败,直接返回,后面的支付操作就不会被执行到了

本文出自 “Flyfish” 博客,请务必保留此出处http://9381188.blog.51cto.com/9371188/1793287

解决并发保证数据一致性、幂等性方案

标签:并发方案、数据一致性

原文地址:http://9381188.blog.51cto.com/9371188/1793287

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!