最近带领团队重构了公司内部风控团案系统,特此记录一下!

     在金融风控领域,数据的准确性和实时性对于保障业务安全至关重要。随着业务的快速发展,我们面临的挑战是如何优化现有的风控数据存储和处理系统,以适应不断增长的数据量和复杂性。为此,我们团队成功完成了一项系统重构项目,将风控系统(以下简称H系统)的输入项数据迁移到图数据库Nebula,并重构了相关项目架构,为未来的系统扩展和维护奠定了基础。

注: 风控反欺诈团案系统,简称H系统,下同。

一、背景与挑战

数据关系复杂性:H系统的输入项数据全部来源于Elasticsearch(ES),但ES的存储结构难以直观展示数据间的关系,且随着输入项的增多,关系数据呈指数级增长,维护难度大。实时性要求:风控业务对数据的实时性有很高要求,而现有的ES存储和处理方式在性能上存在瓶颈。

二、目标与方案

迁移到图数据库:将H系统的输入项关联关系迁移到Nebula图数据库,利用图数据库的天然优势来存储和管理复杂的数据关系。重构项目架构:重构H系统项目,统一技术栈为Java,接入公司统一服务框架,以支持服务水平扩展和监控报警。

三、重构过程

调研与分析:我们首先对现有系统进行了全面的调研,包括接口梳理、核心流程分析、环境配置和触发场景等。方案选择:经过对比,我们选择了充分利用图数据库特点的方案,每个用户只需关注自己的数据变化,建立图形。灰度实施:采用双写策略,逐步迁移流量,确保平滑过渡。数据迁移:全量迁移历史数据,增量同步双写,确保数据一致性。

四、技术亮点

图数据库的天然优势:Nebula图数据库的引入,使得数据关系更加直观,查询效率大幅提升。图数据库的灵活性允许我们轻松地表示和查询复杂的数据关系,这对于风控业务中的关联分析尤为重要。高效的数据迁移策略:我们采用了全量迁移与增量同步相结合的策略,确保了数据的完整性和一致性。通过精心设计的灰度方案,我们能够在不影响现有业务的情况下,逐步完成数据迁移。灰度实施的平滑过渡:通过同步双写和流量回放采样对比,我们确保了新旧系统之间的无缝切换。这种策略允许我们在出现问题时迅速回滚,保证了业务连续性和数据安全。数据一致性保障:我们开发了实时对比和开发对比脚本,确保了迁移过程中数据的一致性。这种对比机制不仅在数据迁移期间发挥作用,也为未来的数据维护提供了强有力的支持。性能提升与可扩展性:新系统在性能上有了显著提升,更好地支持了风控业务的需求。同时,重构后的系统架构更加灵活,为未来的业务发展和系统下线提供了坚实的基础。

五、实际案例

在重构之前,我们面临的一个典型问题是查询具有相同设备号的用户。在ES存储中,我们建立了user_Info_index和user_relation_index,前者表示用户信息,后者表示关联关系。当数据变更事件触发时,我们需要提前计算好用户A的关联关系,例如用户A与B1、B2、B3有相同设备号,然后将这些关系反转,存入关联关系,导致存储数据呈指数级增长。

重构到Nebula图数据库后,我们只需要建立user_info_v(点)和device_v(设备号),以及device_e(设备号边)。每次写入时,只需存入用户A的设备号和设备关联关系。当需要查询用户A的相同设备号用户时,我们可以使用如下Nebula查询语句:

MATCH (v1:cust_info_v)-[e:device_e]->(v2:device_v)<-[e2:device_e]-(v3:cust_info_v)

WHERE id(v1)=='${custNo}' AND id(v1) != id(v3)

RETURN collect(properties(v3).cust_no) AS custNos ;

这条图数据库查询的响应时间在毫秒级,大大减少了写入复杂度,查询性能也有所提升。同时,存储数据减少了大约80%,显著提高了系统的效率和可维护性。

六、成果与展望

性能提升:新系统在性能上有了显著提升,更好地支持了风控业务的需求。未来可扩展性:重构后的系统架构更加灵活,为未来的业务发展和系统下线提供了坚实的基础。

七、结语

通过这次重构,我们不仅解决了现有系统的瓶颈问题,还为团队积累了宝贵的经验。我们相信,随着技术的不断进步,我们的风控系统将更加强大,为业务提供更加坚实的支持。

欢迎点赞、收藏、转发!

也欢迎遇到系统瓶颈,疑难问题,或者需要重构系统解决方案朋友,与我沟通交流!

文章来源

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。