话费充值流程

文章描述了一个预充值系统的两个版本。第一版中,系统在客户并发充值时出现掉单和高IO问题。第二版通过引入Redis过滤重复订单,使用MQ进行异步处理,以及缓存渠道信息来减轻MySQL压力,解决了上述问题。同时,通过订单服务过滤重复消费,确保系统稳定并提供手动补救措施。
摘要由CSDN通过智能技术生成

描述

业务说明:为预充值模式,提供给b端客户。从不同的渠道,拿到充值的接口,根据自定义的收费比例,自定义接口,提供给b端客户。让客户对接本公司接口

技术说明:springboot、dubbo、rabbitmq、mysql、redis

模块说明:api接口、后台管理、订单模块

生产环境:银联云服务(centos7)

第一版

客户充值情况访问api接口,验证客户信息后,发起订单充值,一直等待充值渠道的请求结果

 

问题

1.在客户某时间段突然发起多个订单的时候,出现掉单,订单响应不过来

2.mysql的io特别高,有很多慢查询

3.吞吐量少

第二版

改进问题

1.突然出现大量订单时,出现掉单,吞吐量少

b端客户所有的充值请求,在api验证客户信息没有问题,使用redis过滤重复提交的订单,将订单信息存入数据库,再发送消息到mq中,mq接受消息就返回请求成功的结果给b端客户

在订单服务消费消息后,验证客户金额是否充足等等。验证失败时,异步结果给b端客户。通过验证验证发送请求到上游。请求失败时,异步结果给b端客户。请求成功后,等待上游的异步结果,拿到异步结果处理订单后异步结果给b端客户

细节问题

1.mysql的io高?

第一次解决使用了银联的云数据库,发现有所改进,还是比较高

第二次解决,使用redis缓存。如:异步结果时,需要查询充值渠道信息进行校验,渠道信息做缓存处理,等等。减少了mysql查询后,io下降正常水平

2.mq重复消费

在订单服务消费信息时,直接过滤了重复消费的订单。系统不处理重复消费的订单,如果有订单没有发起充值请求。后台管理中客服人员手动发起充值请求。或者做失败处理,异步结果给b端客户

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值