基于Flink的超大规模在线实时反欺诈系统的建设与实践

作者:关贺宇

在大数据时代,金融科技公司通常借助消费数据来综合评估用户的信用和还款能力。这个过程中,某些中介机构会搜集大量的号并进行“养号”工作,即在一年周期里让这些号形成正常的消费、通讯记录,目的是将这些号“培养”得非常健康,然后卖给有欺诈意向的用户。这类用户通过网上信息提交审核,骗到贷款后就“销声匿迹”了。

那么,如何更快速地预防或甄别可能的欺诈行为?如何从超大规模、高并发、多维度的数据中实现在线实时反欺诈?这些都是金融科技公司当下面临的主要难题。针对这一问题,玖富集团打造基于 Flink 的超大规模在线实时反欺诈系统,快速处理海量数据并实现良好的用户体验。

在线实时反欺诈的难点和痛点

常见的金融欺诈场景有三类:一是材料伪造。这是早年需要提交纸质材料时期常见的欺诈;二是“养号”,常见于中介机构,通过收取服务费来维护大量号的健康状态,卖给有欺诈意向的用户进行贷款申请;三是来自于专业黑客的威胁,他们通过寻找系统、流程的漏洞等方式,对账号安全构成攻击。

金融科技因其虚拟性特征,主要风险集中在两方面:一是欺诈风险,二是信用风险,因此核心的风险评估流程就是反欺诈和信用评估。对于反欺诈而言,信息核实、高危人群拦截和实时计算、识别、决策是其核心风控手段。而对于信用风险的评估,需要内外兼修。

玖富集团对用户的信用评级主要由玖富集团自主研发的火眼评分 - 彩虹评级系统动态评估用户信用情况,覆盖玖富集团 C 端全线借贷服务,自上线以来表现稳定,区分效果明显。外部也参考了腾讯、阿里等评分作为参考。

目前,在线实时反欺诈会面临各类痛点,在玖富集团业务场景中,主要痛点集中在以下三方面:

  • 一是低延时要求。越是大量数据需要计算,所需时间越长。在网贷盛行的年代,经常流传的一句口号是“三分钟授信,一分钟放款”,甚至有的公司打出“一分钟授信,半分钟放款”。但是在大数据场景中,数据分析与处理对低延时的需求越来越高。
  • 二是超大规模实时计算要求。大数据场景中,需要对大规模数据做到实时计算,玖富集团内部代号为“伏羲”的 Flink 计算平台每天要在接近 510TB 的数据集上做快速的检索和计算,用户的行为改变会导致数据发生变化,进而影响决策。因此对超大规模数据的实时计算需求越来越高,确保用户在出现欺诈行为时能够及时中止交易。
  • 三是多维度、高并发要求。随着同一业务场景下用户规模的扩增,用户产生的数据也形成爆发性增长。在金融场景下,亟需一套完整系统可以实现按照数据各个维度分析得出风险评估报告,根据用户特性挖掘用户潜在需求等;系统获取用户产生数据最简单有效的方法就是流水式数据,单个数据包里包含了发生时间点的各个维度的所有信息量,这种场景的特性之一就是数据高并发,因此对时效要求比较高的数据分析来说是一个非常巨大的挑战。

针对目前在线实时反欺诈的痛点,玖富集团采用基于 Flink 的超大规模在线实时反欺诈系统,在提升用户体验的同时,也降低了商业损失。

基于 Flink 的超大规模在线实时反欺诈系统

1、为什么选择 Flink?

Flink 开源项目是近一两年大数据处理领域冉冉升起的一颗新星。虽然是后起之秀,但在国内许多大型互联网企业的工程实践中均有被应用,如阿里、美团、京东等。那么,在玖富的大数据技术体系迭代中,为何会选用 Flink 这套流数据处理引擎呢?

■ 从技术语言角度:

Spark 的技术语言主要是 JAVA 和 Scala,尤其是对 Scala 语言有一定要求。而 Flink 主要是基于 JAVA,编程语言更成熟,通用度更高,修改代码也更容易。所以从语言层面综合来看,Flink 相对较好。

640.jpeg

Spark、Storm、Flink 技术选型对比

■ 从时延和吞吐量的角度:

Flink 是纯粹的流式设计,流式大数据技术的计算是逻辑先行,即先定义计算逻辑,当数据流过时,实时计算并保留计算结果;当需要使用数据时,直接调用计算结果即可,无需再次计算。流式大数据技术可广泛应用于对数据处理时效性要求较高的场景,如实时交易反欺诈。

Flink 的时延和吞吐量方面的性能表现较好,能满足玖富集团对超大规模数据流在线实时计算的要求。相比之下,Spark 主要是小批量处理模式,无法满足反欺诈系统实时处理大规模、多维度、高并发的数据流的要求。Storm 虽然是基于流处理,但与 Flink 的性能数据相比,Flink 吞吐量约为 Storm 的 3~5 倍,Flink 在满吞吐时的延迟约为 Storm 的一半。综合来看,Flink 框架本身性能优于 Storm。

■ 从与现有生态体系结合的角度

Flink 与超大型计算和存储(HBase)的结合比 Spark 和 Storm 要好很多,同时接口也更友好。HBase 是整个系统预查功能的缓存基础,预查功能是降低系统 p99 延迟最重要的技术优化。

总的来说,Flink 是一个设计良好的框架,它不但功能强大,而且性能出色。此外它还有一些比较好的设计,比如良好的内存管理和流控。但是,由于 Flink 目前成熟度较低,还存在不少问题,比如 SQL 支持比较初级,无法像 Storm 一样在不停止任务的情况下动态调整资源;不能像 Spark 一样提供很好的 Streaming 和 Static Data 的交互操作等。

2、超大规模在线实时反欺诈系统架构

线上信贷的基本流程是:由用户通过 App 发起需求,App 会要求用户填写与授权相关的信息,主要目的是评估用户的信用额度。之后用户数据会进入后台数据系统进行反欺诈和信用的评估,审核通过,用户会收到信息,账户额度开通。

640-2.jpeg

基于 Flink 的超大规模在线实时反欺诈系统架构

玖富基于 Flink 的超大规模在线实时反欺诈系统的架构分为两部分:数据部分和决策部分。整个系统的运作相当于一个工作流,用户的数据信息以流的形式由一个节点传到下一个节点,在流转过程中会产生大量的决策信息,根据条件做出筛选和判断,并把判断结果快速推行到下一个节点,从而实时判断用户的数据情况,进而决定是否放款给用户。

数据部分需要最快速度的加工处理,整个数据处理由四部分完成。

第一部分是把数据从前端最快速地传递到后端。基于 Flink 的超大规模在线实时反欺诈系统首先要把数据通路加宽,允许更多信息同时涌入数据处理中。

第二部分是大型的列式存储集群,主要由 HBase 实现。HBase 是运行在 Hadoop 上的 NoSQL 数据库,它是一个分布式和可扩展的大数据仓库,能够利用 HDFS 的分布式处理模式,并从 Hadoop 的 MapReduce 程序模型中获益,最关键的是可以提供高并发读写操作的支持。HBase 是整个架构最基础的保障,当大量数据涌入时能实现快速存储,降低写入和读取数据过程对系统架构的过度依赖。

HBase 里有大量的索引,如一级索引、二级索引等,对 HBase 的读写缓存进行定制化改造,保证预查功能的实现。通过 App 或其他渠道获取用户的行为数据信息,进而推测用户的意愿,然后系统开始做预查询,把用户的相关信息放到缓存里,这样当用户在前端触发操作时,后端直接从缓存里调用数据开展计算,极大地提升了数据处理速度。在 HBase 缓存里,基本能够实现 99% 的数据信息被命中,这依赖于系统强大的用户感知能力。

第三部分就是计算引擎,主要由 Flink 完成。计算引擎分为两部分,一个是过滤引擎,主要是在大规模、高并发数据流中对用户信息做不同维度的定制化过滤,目的是降低整个数据计算的量级。另一个是函数引擎,通过高度抽象的方法,定制化一些性能非常好的函数,并把这些函数加载到引擎中去,可以避免开发人员自行修改代码。过滤引擎和函数引擎的结合,使整个用户的数据量级大幅降低,再结合一些高效的代码,进一步降低延迟。

Flink 的核心是基于流执行引擎,Flink 提供了诸多更高抽象层的 API 以方便用户编写分布式任务,常用的三类 API 如下:

  • DataSet API,对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便的采用 Flink 提供的各种操作符对分布式数据集进行各种操作。
  • DataStream API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便的采用 Flink 提供的各种操作符对分布式数据流进行各种操作。
  • Table API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过 Flink 提供的类 SQL 的 DSL 对关系表进行各种查询操作。

玖富根据自身业务特点,需要对超大规模在线实时数据流进行快速处理,因此采用 DataStream API,追求更低的延迟。

第四部分是算力。算力依赖于 Hadoop 集群,通过 YARN 实现对整个资源的管理,横向来说具有很好的可扩展性。YARN 的基本思想是将资源管理和作业调度 / 监控的功能分解为单独的守护进程,包括两个部分,一个是全局的资源调度(RM),另一个是针对每个应用程序的调度(AM)。YARN 使得 Hadoop 不再局限于仅支持 MapReduce 一种计算模型,而是可无限融入多种计算框架,且对这些框架进行统一管理和调度。

640-3.jpeg

 

YARN 架构

3.系统架构迭代

基于 Flink 的超大规模在线实时反欺诈系统,在玖富集团内部经历过一次比较重大的架构迭代。玖富集团最初是以 1s 内快速得出风控结果为目标,但是用户体验不够快,于是整个系统进行了一次技术升级,增加了预查技术。预查技术包括检索和计算两部分,其核心依赖于 Flink 强大的并发能力。在大量数据中做快速预查,利用 Flink 并发能力进行数据覆盖,最后在缓存里命中结果,从而不必重新进行网络 I/O 查询、等待返回的过程。经过部分计算框架升级,最终系统实现了 p99 延迟由 1s 降为 100ms 的优化。

4.AI 技术的应用

在大数据时代,数据的质量直接影响大数据分析处理方法的效果,也影响决策过程。通过分析海量数据,可以从中发现数据集中隐含的模式和规律。但异常数据会对分析过程产生重大干扰。在基于 Flink 的超大规模在线实时反欺诈系统中,利用机器学习进行异常点检测。异常点检测(又称离群点检测)是找出其行为不同于预期对象的一个检测过程。这些对象被称为异常点或者离群点。在大数据中的异常数据存在如下特点:与正常数据的表现有明显的差异;其产生机制与正常数据不同,可能为未知方式;数据维度较高。异常点检测在信用卡欺诈检测中应用较多,当用户数量非常多时,其中一些低信用值的用户需要被识别出来,利用机器学习进行异常值检测,把信用值低的用户筛选出来,再进行人工确认。

在基于 Flink 的超大规模在线实时反欺诈系统中也应用了 AI 知识图谱技术。社会是由大大小小的群体组成,同理用户也有这样的群体特点,用数据来构建这些群体的关系,通过图的分割与检索这两大类算法深入挖掘数据价值。在实际应用中,如果一个用户的信用非常差,已经被列入黑名单,那么与他有关系的用户都需要重点排查。根据用户的行为将用户进行分类,即聚类。各式各样的聚类算法很多,然后根据用户的信息进行图的分割,确定每个人的风险系数,也可以通过一些手段打通优质圈层的通路,引导优质圈层进行信息交互。

未来规划

对于该套在线实时反欺诈系统的未来规划,玖富第一步会针对 Flink 技术本身,结合玖富在技术、场景等方面的积累,把基于 Flink 的超大规模在线实时反欺诈系统打造成一款数据产品,使其具备向外输出数据资产和数据处理的能力。

其次,玖富技术团队也会持续投入人力在系统的功能优化上,并把它做成一个开源的产品推向社区,让更多开发人员可以直接使用这个系统。

最后,通过技术的优化进一步提升整个系统的性能,目前该系统的 p99 延迟是 100ms,未来玖富的下一项目标是实现 p99 延迟是 50ms。

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

别再被 Python 洗脑了!!

Python 作为一种解释型技术脚本语言,越来越被认可为程序员新时代的风口语言。无论是刚入门的程序员,还是年薪百万的 BATJ 的技术大牛都无可否认:Python的应用能力是成为一名码农大神的必要项。 而作为Python初学者来讲,最大的问题…

任务不再等待!玩转DataWorks资源组

引言 DataWorks提供了三种资源组的能力:独享资源组、自定义资源组和默认资源组,很多开发者在使用资源组时经常会碰到各类情况,到时候任务运行失败或者延迟,例如:1. 正在使用默认资源组,任务经常要等待2.购…

微信小程序---实现输入手机验证码功能

*** html部分 <view classcontainer> <view classmain-title bindtap"test"> 输入短信验证码 </view> <view class"sub-title"> 已向<text class"phone">139****9999</text>发送验证码 </view> <…

Docker Harbor 2.3.4 集群 双主复制高可用镜像仓库

下面操作大部分是双节点同时执行一样的命令&#xff0c;不同的地方我会进行标注和特殊说明 文章目录一、环境准备1. 环境要求2. 节点总览3. 安装docker-compose二、安装harbor2.1. 下载2.2. 解压2.3. 调整配置2.4. 安装 harbor2.5. 效果验证三、Docker开启远程API3.1. 修改配置…

如何用Chrome读懂网站监测Cookie

作者 | 朱顺意责编 | 李雪敬出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;网站监测工具用于标识用户的 Cookie 分为第1方 Cookie 和第3方 Cookie&#xff0c;这两者本质上没有什么区别&#xff0c;只是身份不同。Cookie 有 Domain 属性&#xff0c;当 Coo…

DataWorks百问百答01:数据同步该用什么资源组

引子 很多用户在使用数据集成建立同步任务时&#xff0c;往往都会困惑一个设置&#xff0c;即“资源组设置”。 大家常有的疑问是“资源组是用来做什么的&#xff1f;跟网络之间什么关系&#xff1f;我该选择那种资源组&#xff1f;” 下面本文给您一个简要的介绍。 什么是资源…

在阿里,40岁的奋斗姿势

在阿里&#xff0c;40岁的奋斗姿势 在阿里&#xff0c;什么样的年纪可以称为老呢&#xff1f;35岁&#xff1f; 在云网络&#xff0c;有这样一群人&#xff0c;他们的平均年龄接近40&#xff0c;却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢&#xff1f; 洛神…

nginx配置多个conf文件

今天整理了下&#xff0c;在centos 7.6 系统下怎么配置多个conf文件。 step 1:在nginx.conf文件所在目录新建conf.d目录&#xff0c;即mkdir conf.d&#xff0c;为确保权限能够访问到 chmod 777 conf.dstep 2:编辑nginx.conf文件&#xff0c;内容为&#xff1a; #user nobody…

CPU有个禁区,内核权限也无法进入!

来源 | 编程技术宇宙封图 | CSDN 下载自视觉中国神秘项目我是CPU一号车间的阿Q&#xff0c;是的&#xff0c;我又来了。最近一段时间&#xff0c;我几次下班约隔壁二号车间虎子&#xff0c;他都推脱没有时间&#xff0c;不过也没看见他在忙个啥。前几天&#xff0c;我又去找他&…

Vue---淘宝镜像cnpm---安装vue-cli

1. 淘宝镜像命令 npm install -g cnpm --registryhttps://registry.npm.taobao.org 2. 安装vue-cli脚手架 npm install -g vue/cli 3.vue-cli脚手架更新 npm i -g vue/cli 4. 查看当前vue-cli版本号 vue -V

防删库实用指南 | 只需一步,快速召回被误删的表

数据库的一些非常不错的企业级功能都是“养兵千日&#xff0c;用兵一时”&#xff0c;比如Oracle 10g中的回收站&#xff08;Recycle Bin&#xff09;功能&#xff0c;可以在特殊情况下发挥特种兵的功能&#xff0c;比如当你删除一个表空间、一个用户&#xff08;Schema)时&…

智能化中的控制与自动化中的控制不同

智能化中的控制相对于自动化中的控制更加灵活、智能、综合和学习能力强。智能化控制系统能够根据实际情况进行自主决策和优化&#xff0c;适用范围更广&#xff0c;效果更好。 首先&#xff0c;智能化控制系统能够根据外部环境的变化和实时数据的反馈来自主调整和优化控制策略&…

Flink on Zeppelin (4) - 机器学习篇

今天我来讲下如何在 Zeppelin 里做机器学习。机器学习的重要性我就不多说了&#xff0c;我们直奔主题。 Flink 在机器学习这个领域发力较晚&#xff0c;社区版没有一个完整的机器学习算法库可以用&#xff0c;Alink[1]是目前 Flink 生态圈相对比较完整的机器学习算法库&#x…

docker yum 安装

文章目录一、安装docker1. 卸载旧版本2. 需要的安装包3. 设置镜像仓库4. yum更新软件包索引5. 安装docker-ce6. 启动docker7. 查看版本二、卸载docker2.1. 卸载docker2.2. 删除docker资源三、指定版本安装docker一、安装docker https://docs.docker.com/engine/install/centos…

解决Vue3创建项目后的Error: Cannot find module ‘vue-loader-v16/package.json‘问题

1. 卸载vue-loader-v16依赖 npm uninstall vue-loader-v16 2.使用cnpm安装vue-loader-v16依赖 cnpm i vue-loader-v16 最后npm run serve 重新启动项目

五个问答,告诉你阿里云对象存储如何助力钉钉战胜业务洪峰

“基于OSS在弹性扩容、跨省容灾、多租户管理以及传输加速方面的基础能力&#xff0c;钉钉在此次战役过程中&#xff0c;实现了一键切换写入区域&#xff0c;拆分业务到多个区域的功能&#xff0c;同时钉钉在跨区域的图片处理、文档预览的并发处理量上有了10倍速的提升。”——钉…

知乎高赞:一行代码凭什么躺普通程序员的10年工资?

笔者这两天闲逛知乎&#xff0c;看到了这个帖子&#xff1a;匿名答题&#xff0c;发表于2014年&#xff0c;此外没有留下任何多余信息。2年躺赚200万&#xff0c;相当于普通程序员10年的工资。没想到Pyhon这么强大&#xff0c;怪不得有人说“除了不会生孩子&#xff0c;Python什…

第九弹 - 脚本模式与参数视图

MaxCompute&#xff08;原ODPS&#xff09;是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用&#xff0c;支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外&#xff0c;也致力于提升SQL语言的用户体验和表达能力&#xff0c;提高…

Vue3---安装Element-Plus组件库

*** 全局安装Element-Plus 1. npm安装 npm install element-plus --save 2. 在main.js中引入以下内容 import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import App from ./App.vue const app createApp(App…

在家“隔离”这1个月,阿里云视频云这些工程师都经历了什么?

战"疫”当前&#xff0c;没有谁会置身事外。从1月底开始&#xff0c;一场全民疫情阻击战拉开帷幕&#xff0c;企业停工、学校停课、商场停业&#xff0c;城市街道分外冷清&#xff0c;相反的是&#xff0c;无法出门的数亿网民却在互联网上掀起了一阵不小的流量热潮。距离2…