-
分布式订单防重的处理。。。。0
目前系统是这样的:我们是一个出票系统,分布式10台server做接票服务,做负载均衡,接到订单做一系列校验、扣款、入库等工作。
目前有这么一个问题:有一家客户商有几台机子做投注工作,可能对方内部系统的问题,偶尔会出现同一个订单几台机子同时投注的情况,并且几乎是同步的,我预计是对方几台机子同时在跑job,并且同时取到了同一个订单。我们的系统是做了防重处理的,但是目前问题是对方同一个订单几乎是同时投注,就绕过了我们的防重处理。
我们的解决办法:1、分布式锁,但是这样影响接票性能。2、数据库用userid、订单号做联合唯一索引,就算绕过应用系统的排重,也入不了库,catch异常做处理。但是我觉得这种处理方式不是很好,请问您有没有好的解决办法,谢谢。
问题补充:大家有没有好的想法,解决方案呢。。。2015年1月05日 10:20
10个答案 按时间排序 按投票排序
-
session防重:
方式1:一次性token
缓存防重:
方式1:Redis HyperLogLog
方式2:计数器
注意:需考虑清理机制
数据库防重
方式1:唯一约束
方式2:先插入数据,再统计是否超过1条,超过则作废(第1条不作废)2017年5月19日 10:33
-
根据楼主的描述,如果问题没有出在你那儿,还是让客户解决吧。技术手段不能解决业务问题。
就楼主的描述来看,貌似楼主负责的接口几乎是无法分清订单是由于客户端定时任务抓住了同一条数据,还是由于并发量搞确确实实滴产生了一条订单号相同的数据。
所以,治病要治根本呀2015年3月11日 16:43
-
使用全局唯一订单编号来解决,无论订单从哪来,你使用独立的程序来生成全局的唯一订单编号,给每一个订单请求分配一个独立的编号,依次作为依据来处理...
原则上其他的方式都会存在重复的可能。2015年1月08日 13:18
-
这种情况应该是要加锁才能解决,用数据库行锁 for update
1、先锁数据
2、判断状态,如果判断不正确,直接返回
3、业务处理
4、修改状态。
我们目前是这么处理的。2015年1月07日 13:45
-
你这个和分布式没什么关系啊。
就是一个强一致性的OLTP。
存储既然是DB,用唯一索引是最简洁的方案。想那么多干吗?
性能瓶颈如果是DB,看看能不能上SSD,不能的话订单数据做分片。
2015年1月06日 13:23
-
直接把对方订单号扔redis或者MC里,处理完再remove掉,第一个放进去的正常处理,以后放不进去的全当并发错误返回结果,这样应该不会影响到性能
2015年1月06日 10:05
-
感觉你只能用锁解决,但你说的影响性能,应该不是很大吧,做一个主键锁,锁住你订单的唯一主键,那么只有同一个订单过来才会等待,其它订单不影响啊,多的开销只有和分布式锁介质的通信。
2015年1月05日 17:53
相关推荐
3. **防重表**:建立一张防重表,记录所有请求的唯一标识符,如订单号。每次请求前,先检查防重表中是否已存在该标识符,以此来决定是否执行后续操作。 #### 五、幂等性的局限性 尽管幂等性可以极大地简化客户端的...
在多层分布式防伪第三方物流管理系统中,物流信息的处理流程包括客户在用户层下达物流订单,网络层接收订单并制定物流方案,以及在货物出入库时使用数码技术对货物身份进行识别和防伪。这一系列流程确保了物流过程的...
尤其是在金融交易、订单处理等场景中,幂等性设计是确保业务正确性的基石。 幂等性的实现主要分为两种类型:请求幂等和操作幂等。 1. 请求幂等:客户端确保每个请求唯一,即使请求被重复发送,服务器接收到的也是...
3. **数据一致性手段**:采用防重、幂等性等技术手段,结合状态机和人工介入机制,确保数据的一致性。 #### 灰度部署 1. **部署方案**:支持按Group集群部署,支持分层部署,如接单、分布式队列引擎、业务处理系统...
分布式系统中,数据传输安全、认证授权、防DDoS攻击等问题也需要考虑。HTTPS、JWT令牌、OAuth协议等工具和技术可以增强系统的安全性。 以上就是分布式系统在“购物车项目”中的关键技术点,它们共同构成了一个高效...
在多节点项目中,这种基于Redis的分布式锁可以有效防止重复操作,例如防止同一订单的多次支付、防止同一用户被多次扣减积分等问题。同时,由于锁的获取和释放都是基于Redis操作,性能开销较小,适用于高并发场景。 ...
- **超时与重试机制**:设置锁的超时时间以防死锁,并实现重试机制处理锁获取失败的情况。 4. **优缺点分析**: - **优点**:保证了分布式系统中对共享资源的串行访问,适用于跨服务的操作一致性保障。 - **缺点*...
业务设计时,要注重防重设计,确保操作的幂等性,即多次执行同一操作应有相同的结果。流程定义和状态机有助于跟踪业务流程,后台操作应有反馈,复杂流程可能需要审批机制。良好的文档注释和备份是防止系统出现问题后...
- 代码中没有显示异常处理部分,但一般来说,分布式锁的实现应考虑异常情况,如网络中断、Redis服务故障等,确保在异常情况下能够正确地释放锁。 6. **事务管理**: - 标签中提到`@Transactional`,这通常是...
- 防超卖:通过分布式锁机制,如RedLock,防止同一商品被多个用户同时购买。 - 快速响应:由于Redis是内存数据库,读写速度极快,能快速处理大量请求,降低延迟。 3. RabbitMQ:RabbitMQ是一个开源的消息队列系统...
2. 模块化设计:大型网站通常采用模块化设计,将不同功能划分为独立的服务,如用户管理、订单处理、支付系统等。这样可以实现服务间的解耦,提高开发效率和系统的可扩展性。 3. 服务化架构:服务化架构(SOA)是一...
交易模块关注订单生成、状态跟踪以及纠纷处理。支付模块确保交易过程中的资金安全,通常会集成第三方支付接口。评价模块则用于收集和展示用户的购物体验,促进平台的信誉建设。 在分布式设计中,我们需要考虑服务...
7. **消息队列**:如RabbitMQ或Kafka,用于异步处理订单创建、支付通知等业务,降低系统延迟,提高系统的处理能力。 8. **分布式session管理**:由于用户登录状态需要在多个服务器之间共享,项目可能采用基于Redis...
分布式系统在现代信息技术环境中起着至关重要的作用,其主要目标是提供快速的处理速度和应对海量数据的能力。然而,随着系统复杂性的增加,数据一致性成为一个关键挑战,这直接影响到业务的正常运作和用户对系统的...
对于第三方支付项目而言,其核心业务逻辑包括但不限于用户管理、账户管理、订单处理、支付渠道接入等多个方面,这些都需要通过分布式的架构来支持。 #### 使用Dubbo构建第三方支付系统的关键步骤 1. **服务拆分**...
订单系统是电子商务网站的核心组成部分,它负责处理客户的购买行为,管理商品库存,处理支付流程,以及跟踪订单状态。本文将详细探讨PHP、ASP、jsp、Java四种编程语言下的订单系统,以及与ThinkPHP框架和电商系统...
【分布式快递系统】是一种在大型企业或互联网行业中广泛采用的技术架构,它旨在处理高并发、大数据量的业务场景。在毕业设计中构建这样的系统,学生可以深入理解分布式系统的原理和实践,提高自己的软件开发能力。这...
【标题】"SpringBoot+Zookeeper+Dubbo打造分布式高并发商品秒杀系统"是一个针对电商领域的技术实践项目,旨在构建一个能够处理高并发场景的商品秒杀系统。在这个项目中,核心的技术栈包括SpringBoot、Zookeeper和...
【标题】基于Dubbo的分布式电商系统 在现代互联网行业中,构建可扩展、高可用的电商系统至关重要。这个“基于Dubbo的分布式电商系统”利用了SpringBoot、Dubbo和MySQL等技术,实现了高效、稳定的服务架构。让我们...