项目介绍:
由于公司业务扩展,需要对接话费充值运营商,于是开发一套话费充值系统来扩展公司业务。该系统由推单系
统和配单系统两个项目组和使用,同时给三方渠道商提供对接接口。由于充话费业务的特殊性,月初月末都会
有较大单量,其中推单项目用来对接话费渠道商,配单项目对接运营商。
我的职责:
负责项目开发,解决项目遇到的并发问题,主导业务设计和数据库设计;
利用 reentrantlock+自旋锁机制解决 refreshtoken 重复刷新问题;
使用 Redis 的 Hash 结构存储系统参数,话费订单充值需要拉取支付凭证(存在过期),使用 List 结构存储支付
凭证,使用左近左出的策略防止拉去的支付凭证都是过期凭证,使用 Set 结构来防止缓存中存放重复订单;
为了提高项目的并发量,将项目中主干业务(渠道推单、商户回调)和核心业务(记账和失败重试)拆分成异步,主
干业务中只处理三方请求和核心业务需要的消费型数据入库或缓存,将核心业务拆分成异步批量处理;
解决项目中遇到的锁表死锁等问题,解决因为网络抖动造成的线程池任务堆积连锁反应产生的 OOM;
由于每月都会有数百万的数据,导致数据库性能极具下降,每个月都会进行数据归档操作。