该项目主要是为《金牛财经》App提供后端接口服务,在其中负责或参与的功能模板包括:
1、直播模块
2、活动模块
3、个人中心
4、龙门课栈(在线课程售卖)
5、讲股堂(讲师vlog视频)
除基础模块开发外,还需要保证直播模块的稳定性及接口的高并发能力(首页、直播列表页等高频次访问页面均达到TPS2000+)
该项目的前端主要有App(IOS、安卓、鸿蒙),网页(H5,Web),微信小程序
后端的架构采用Golang与Java职责分离的架构方式,Golang侧主要负责用户高频次操作等需求(如高频次访问接口、直播间弹幕等),Java侧则负责数据的异步处理(如活动奖励发放、vlog视频的压缩与转码、基于mysql binlog的数据监听及缓存更新等)
项目采用微服务架构(Golang服务若干及Java服务若干),服务间采用gRPC协议进行数据交互
项目中最大的难点就是如何保证高频接口数据的实时性及查询高效,我们采用的方案有以下几点:
1、golang程序内使用“单程”技术实现了请求合并及防缓存击穿
2、接口数据使用redis进行预缓存,调用接口时直接查询缓存
3、使用java程序对mysql的binlog进行监听,发现数据变更后出发缓存更新
4、部分实时性要求较高的数据,在因调用其他的接口发生更新时,主动刷新缓存