云报表后台系统
为了方便统计商户门店的历史营收情况、分析当前门店运营数据。
主要业务流程:通过商户上传账单,上送到云报表入库服务,云报表入库系统,计算门店当天的历史营收情况,菜品热度、餐段、优惠折扣、等等。统计好当天的数据,同时异步会计算出当天营收情况的excel报表,以邮件发送到商邮箱中。云报表查询服务主要提供一些报表查询和Excel导出的一些API接口。
技术框架:gradle、git、nginx、springboot、springcloud、mybatis、zipkin、rabbitmq、postgresql、sharding-jdbc、redis 、ELK日志分析平台。
1.通过rabbitmq监听到的账单推送消息,将要计算的账单数据,存入到redis中。
2.报表入库服务启动一个定时Job任务每隔10分钟去缓存里获取任务计算账单数据到数据库中。
3.为了保证定时Job幂等性问题,使用了redis实现了分片(后期引用了xxl-job)。
4.由于数据库量比较大,采用了sharding-jdbc分库,针对门店id取模计算,将门店营收数据入到不同的数据库中,减少数据库压力。