福利社中台以前是用java写的,作为一个C端服务,随着用户量的增加,并发增大,java程序比较占资源,公司在服务器的开销成本不断增大,但在处理并发上达不到理想的效果,因此采用go,利用其并发优势,重构福利社中台
点击空白处退出提示
福利社中台以前是用java写的,作为一个C端服务,随着用户量的增加,并发增大,java程序比较占资源,公司在服务器的开销成本不断增大,但在处理并发上达不到理想的效果,因此采用go,利用其并发优势,重构福利社中台
主要有:登录,权益列表,权益领取,权益兑换,权益购买,券码核销,定时任务,秒抢
用户通过银行app的福利社入口,登录到福利社完成用户注册,领取免费福利权益,或者购买优惠的福利权益,比如爱奇艺月卡,腾讯月卡等,领取权益成功后,调用三方供应商接口使用手机号进行券码核销,完成最终的权益兑换,用户再登录到对应的app里即可
我主要担任项目负责人,负责项目的搭建,项目采用hertz框架,nacos作为项目配置文件源,mysql存储数据,redis做缓存,使用阿里云的RocketMQ做秒抢异步队列
1、在项目开发中期,迁移到新服务的福利社越来越多,数据量增大,并发增大,服务首页接口响应时间,在访问量大的时候平均在10多秒以上,耗尽mysql的db链接,导致服务不可用,我采用pprof工具,配合压测,找到接口的瓶颈点,对循环调用,循环套循环的地方进行优化重构,同时引入缓存,将接口响应时间稳定在500ms-1s之间
2、将同步秒抢重构为异步秒抢时遇到,消费速度慢,库存超发等问题,使用gorouting改造队列消息消费sdk支持批量消费,将库存放入redis队列,同时使用luna+redis保持锁的准确性,解决了库存超发的问题
3、梳理老的福利社中台项目业务逻辑,都由我一人完成,新项目的任务拆分,模块拆分,也由我主导完成,项目已运行在线上,成功替换老的项目
评论