漫谈大数据反欺诈技术架构

一年多以前,一位朋友邀请我谈谈你的大数据反欺诈架构是如何实施的,以及我们践踏的是什么,以及如何优化30分钟到1秒以完成实时反欺诈。那时,第一个是不合适的,第二个是场景有限,没有必要分享。

自从我最近在圈子里看到一些东西以来,已经有很长一段时间了。我发现当时的架构并没有过时,仍然具有很大的参考价值。所以今天我要和你谈谈如何构建大数据反欺诈系统。主要来源是我的工作实践以及业内许多大家伙。沟通的做法是一种更好的做法。

当我做这个框架时,我主要关注信用行业大数据的反欺诈。后来,我还研究了电子商务的架构和金融领域的大数据。我发现事实上,每个人都使用这个框架,但在每个链接中都有不同的细节。

最年长的男人说,如果你可以使用图片,尽量不打字,那么我会输入更少的单词并做更多的照片。事实上,大数据只不过是几个步骤。数据源开发,数据提取,数据存储,数据清理和处理,数据应用,并逐一听取我的意见。

数据来源

数据源是一个更重要的一点,毕竟,即使数据源是垃圾,那么毫无疑问可以预测最终输出必须是垃圾,所以在选择数据源和对接数据源时,我们应该注意是否该组织产生的数据质量很高。

例如,行人银行的信用数据是一种非常高质量的数据,主要涉及信用卡,银行自来水,旧信任,不诚实,执法信息等。这是非常核心的。任何一点都可能是坏账的开始。以及各行政机构提供的机密数据。

例如,运营商通信数据,如大型电子商务的行为数据,如各种保险数据,以及各种组织的贷款记录的相互通信,这些数据源在核心是非常有价值的,现在是核心数据反欺诈。

当然,还有一种更粗鲁,更有效的方法,即直接购买外部黑名单数据,这使得反欺诈更加简单,在遇到时直接拒绝,并且可以降低人力和物力资源的成本来进行其他验证。

数据提取

在拥有高质量的数据源之后,当然,如何解决问题,各种组织提供的数据格式是多种多样的,包括http接口的json,xml,其他内部数据源的etl和定时手动报告。 Excel和sqoop + ozzie这两个直接数据提取通道,这个过程只需要确保通道稳定,数据服务是幂等的,并没有什么特别之处。

数据存储

数据存储实际上是构建数据仓库和实时仓库。数据仓库用于存储来自主要数据源的原始数据。实时仓库用于业务系统的核心操作。数据仓库的数据量通常以T为单位。仓库以M和G为单位。

离线计算实时计算

数据是有保证的,那么计算是这个架构的核心,从大的角度可以分为离线计算和实时计算。

离线计算主要做两件事。 Hive,Spark数据集成以及清理和离线数据建模。 Hive数据集成的主要功能是清理和过滤每个数据库的内容,最后将其写入我们定义的标准表中,并将其提供给下游计算。如果这是一个非常复杂的数据清理,我们将使用Spark编写器来完成它。毕竟,有些操作不是Hive,可以通过标准SQL解决。离线数据建模是对这批数据进行建模,以便随后用于实时计算和应用。该算法精通两个基础,LogisticRegression决策树,不要问我为什么。

实时计算有什么作用? SparkStreaming和Flink用于实时流计算,主要用于某些统计事务,以及多个数据流的连接操作。我们想在这做什么?我希望服务可以是实时的,什么是准实时的?在可接受的范围内,我允许你有一定的延迟。我们在开始时的任务延迟是30分钟。

我们踩到了什么坑?

一开始,我们希望使用流批量计算来实现实时计算。在实践中,准实时和实时仍然非常不同。服务通常不允许分钟级延迟。但是,Spark的GraphX必须有一个微小的延迟。适合离线计算。

Hive + Ozzie处理离线批处理是一个非常大的武器。很多人认为Hive数据清理不会写几行SQL?数百甚至数千个表背后的复杂数据清理规则,任务依赖,任务权重运行,数据质量,数据亲属维护。相信我,如果你没有护理和工具,这些可能会让你崩溃。

ElasticSearch会对多台计算机的负载吞吐量进行聚类,这高于单台计算机的性能。毕竟,网卡就在那里。

我们采取了很多坑并且触动了很多时间。我们最终决定在ElasticSearch和Neo4j上构建所有实时操作,因为我们不仅需要实时的全场全场社交关系生成,还需要实时搜索多个维度。多层次的社会关系和反欺诈分析,这种关系可能在数百万级别。根据六度理论,我们不能决定太多层次,所以最后我们只提取三层社会关系。最终确定此架构,此核心决定了我们的响应时间,并最终决定了我们服务的可用性。

在许多地方生成的结果数据只是整个决策链中的一个细节,因此我们还需要像Drools这样的规则引擎来帮助做出最终决策。

业务应用程序

如何使用最终的业务系统以及如何向外部提供服务?这也是一个非常核心的问题,因为这部分要求非常非常稳定,而且效率非常高,一般不允许太高的延迟,但也需要非常高的并发性。这要求我们首先提高计算效率,第二要求我们对系统架构有很高的保证。

数据,将其拉回并重新计算是愚蠢的吗?为什么不在目标系统中以数据服务的形式提供它?

事实上,技术架构保证其中大部分都是基础架构问题,例如动态负载平衡,一个主站和多个从站,远程多机房灾难恢复,网络断线钻,上游服务故障计划等。

建模社交网络

很久以前就引入了各种社区发现算法,所以我在此不再赘述。我很感兴趣,我会仔细看看。

以下是对知识地图的标准建立过程的讨论。

1.主题确认

2.关系建立。

3.建立逻辑推理。

4.地图搜索

主题确认从图的角度来看,确认顶点。这些顶点具有自己的属性,代表网络中的各个人。

从其他数据关系派生的关系建立也可以从第三步的逻辑推导出来。从图的角度来看,它是确认边缘。这些边具有起点和终点,并具有自己的属性,代表网络中的个体。该协会。

建立逻辑推理,这是一个非常重要的部分,如姚明的妻子,姚明的婆婆的母亲。这种先验知识可以借助地图为我们解决许多实际问题。

这件作品的个人。

在这里,我们踩了什么样的优化?我们首先在本地提取整个搜索结果,地图搜索后的结果总是非常大。毕竟,我们发现了许多维度关系,所以Card总是在网络中。经过探索和咨询,确认Neo4j的图形数据库不仅提供数据查询服务,还提供基于自定义社交网络分析的插件开发,以插件形式将我们的反欺诈服务部署到服务器。这减少了网络开销,并保证了我们服务的第二级响应。

完整的架构图

从数据来源,获取,存储,处理,应用,一步到位,如果有点帮助,那就更好了,如果你还有疑问,这篇文章自下而上,然后再来。