描述
业务说明:为预充值模式,提供给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端客户