项目描述:
积分平台主要用于计算银行信用卡的各种积分,在接手这个项目的时候,积分系统仍旧使用Oracle存储过程进行批量处理,系统的缺乏横向扩展能力,并且应对批量中断的能力也很差。
该项目是为了拓展积分系统现有的发分规则功能。整理经过多年积累积存下来的大量复杂而冗余的规则。简化业务进行规则配置所需要的消耗的经历和时间,以便于系统在分布式环境中进行部署。
主要职责和成果:
1.使用spring-boot框架重写了现有的规则发分引擎,通过引入groovy脚本对现有的规则引擎的功能进行改造,将原本分散在oracle存储过程中的规则计算逻辑整合到groovy脚本中。
2.在计算的过程中引入了分层标签的概念。简化了规则功能的总数,新规则引擎功能上线后,将原有的400多条压缩到150多条,大大简化了配置流程。
3.使用自研的规则引擎对系统内的一部分其他逻辑(如积分限额,发分类型的计算)进行了改造,节省了接近30%的开发工作量。
4.引入携程的Apollo框架作为配置中心,统一了分布在各个服务器中零散的配置文件,解决分布式配置的问题。
5.引入saturn框架解决了积分系统定时跑批任务的调度,并开发了一套适用于本系统的批量任务跑批框架,解决交易数据并发执行的问题
6.引入RocketMQ消息队列应对积分计算过程中产生的触达、消息推送等需求,并在“笔笔抽”实时功能发分相应项目得到了应用。
7.对部分交易数据(如授权交易,资产等级信息等),使用redis进行缓存以提高吞吐效率