logo
企业版

技术分享

从 Elasticsearch 到 NebulaGraph:图数据库在反欺诈团案系统中重构实战

Elasticsearch

在之前的文章《图数据库系统重构之路:从OrientDB迁移到NebulaGraph 真实案例》🔗 作者阿七教我们如何在业务和技术栈都不熟的情况下做重构。

这次,他记录了下带领团队重构了公司内部风控团案系统的新的感悟。以下内容由他的视角进行展开:

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

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

Part.01 背景与挑战

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

Part.02 目标与方案

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

Part.03 重构过程

1.调研与分析:我们首先对现有系统进行了全面的调研,包括接口梳理、核心流程分析、环境配置和触发场景等。

2.方案选择:经过对比,我们选择了充分利用图数据库特点的方案,每个用户只需关注自己的数据变化,建立图形。

3.灰度实施:采用双写策略,逐步迁移流量,确保平滑过渡。

4.数据迁移:全量迁移历史数据,增量同步双写,确保数据一致性。

Part.04 技术亮点

1.图数据库的天然优势:NebulaGraph 图数据库的引入,使得数据关系更加直观,查询效率大幅提升。图数据库的灵活性允许我们轻松地表示和查询复杂的数据关系,这对于风控业务中的关联分析尤为重要。

2.高效的数据迁移策略:我们采用了全量迁移与增量同步相结合的策略,确保了数据的完整性和一致性。通过精心设计的灰度方案,我们能够在不影响现有业务的情况下,逐步完成数据迁移。

3.灰度实施的平滑过渡:通过同步双写和流量回放采样对比,我们确保了新旧系统之间的无缝切换。这种策略允许我们在出现问题时迅速回滚,保证了业务连续性和数据安全。

4.数据一致性保障:我们开发了实时对比脚本,确保了迁移过程中数据的一致性。这种对比机制不仅在数据迁移期间发挥作用,也为未来的数据维护提供了强有力的支持。

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

Part.05 实际案例

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

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

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%**显著提高了系统的效率和可维护性。

Part.06 成果与展望

  • 性能提升:新系统在性能上有了显著提升,更好地支持了风控业务的需求。

  • 未来可扩展性:重构后的系统架构更加灵活,为未来的业务发展和系统下线提供了坚实的基础。

Part.07 结语

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

推荐阅读

图数据库系统重构之路:从OrientDB迁移到NebulaGraph 真实案例分享🔗:在业务和技术栈都不熟的情况下,如何做重构呢?本文给出了详细的方案,顺便教你如何做灰度验证。