1.数据服务平台(2019年-2020年)
项目介绍:用于交通银行信用卡中心与交通银行总行之间数据交互,例如:交通银行信用卡中心从交通银行总行获取客户借记卡、贷记卡等信息。
使用技术:分布式、MQ
设计思路:总行与卡中心之间ip网段隔离,若卡中心每个系统单独直接获取总行数据需要单独开通防火墙,因此总行系统下发消息至数据服务平台的MQ队列,数据服务平台从MQ队列获取消息,封装数据并在注册中心发布服务,下游系统通过订阅服务来间接获取总行数据。
2.二类借记卡(2020年-2022年)
项目介绍:客户可在交通银行APP上开通交通银行二类借记卡账户,并实时充值、提现、查看交易记录。在2021年配合交通银行北极星业务系统切换,对二类借记卡功能进行改造,保障在北极星并行以及彻底切换期间,二类借记卡功能正常稳定运行,不影响客户体验。
涉及技术:分布式、SpringBoot、Vue、MyBatis、Mysql、Redis
设计思路:采用前后端分离的模式,前端为一个单独的Vue项目,后端的Controller层和Service层拆分为两个单独的项目,Service层负责订阅其他系统发布在注册中心的服务和对数据库进行增删改查操作然后在注册中心也发布一个服务,Controller层接收前段的请求(开通账户、充值、提现、查看交易记录等)并订阅Service层在注册中心发布的服务,封装响应结果返回给前端,以此实现前后端交互。
3.活期富(2021年-2022年)
功能介绍:可在交通银行APP上选择并签约理财产品,可实时买入、卖出、查看收益。
使用技术:分布式、SpringBoot、Vue、MyBatis、Mysql、Redis
项目思路:与二类借记卡基本一致。
4.交易分流(2020年-2024年)
使用技术:分布式、kafka、MyBatis、Mysql、Redis、flink
项目介绍:当客户使用交通银行信用卡进行个交易,满足特定场景条件时,向客户发放立减优惠券、赠送积分等。
设计思路:总行系统下发数据至指定topic,交易分流系统从topic消费数据并送flink处理,判断符合哪种业务场景(向客户发放立减优惠券、赠送积分等)。
问题&解决:
(1)问题描述:在某一业务量激增的时间段(例如:双十一),Kafka Broker堆内存中监控指标数据相关的内存占据60%,导致实际处理生产和消费的可用内存较小而频繁触发full gc。
(2)排查过程:Kafka Broker堆内存4G,发生故障时使用量3.79G,其中监控数据的对象占比较大,排查该对象发现存在大量不同的生产者clientId,生产者clientId如未设置会从1开始自增,如果不新建生产者,一般生产者clientId不变,进一步排查发现大量生产者clientId都与某一topic相关,在排查该topic相关代码发现每次交易请求都新建了生产者对象,当交易请求量较大时,新生成了大量clientId,导致堆内存监控数据的对象占用大量内存。
(3)问题原因:频繁创建生产者对象导致Kafka Broker需要收集大量生产者相关监控指标数据,会占据较大堆内存空间,导致Kafka无法正常工作
(4)解决方案:给创建生产者对象的方法加锁synchronized,若某一topic对应的生产者对象已创建则不再重复创建。
5.核心消息(2020年-2024年)
项目介绍:处理分析交通银行客户的各类交易数据,当交易数据满足特定场景条件时,向客户发送短信,例如:信用卡还款提醒短信、信用卡还款成功通知短信等。
使用技术:分布式、kafka、MyBatis、Mysql、Redis、flink
设计思路:与交易分流基本一致。
6.场景分期(2023年-2025年)
项目介绍:客户可在线上申请车贷和装修贷,填写个人身份信息和选择所要购买的产品,系统后台采集客户学历、工作单位、社保公积金缴纳情况等信息送决策引擎处理,根据决策引擎配置的计算规则计算出是否放款、放款额度、放款期数、放款利率等初始结论,供交通银行经办人员参考和审批,放款审核通过后向商户付款。在2024年(交通银行全行“信创”年),完成了场景分期系统信创改造工作。
使用技术:分布式、SpringBoot、Maven、MyBatis、Mysql、Redis、ELasticsearch、nacos、xxl-job、Entegor、Activiti、决策引擎
设计思路:系统分成三个模块:基础模块、合作商模块、审批模块,各模块各自配置了单独的数据库,各自构建依赖包部署到Maven仓库,各模块之间通过相互引用依赖包来实现数据交互。
(1)基础模块:负责在注册中心上订阅或发布服务,以此实现与外部