Kafka+Flink 实现准实时异常检测系统

1.背景介绍

异常检测可以定义为“基于行动者(人或机器)的行为是否正常作出决策”,这项技术可以应用于非常多的行业中,比如金融场景中做交易检测、贷款检测;工业场景中做生产线预警;安防场景做入侵检测等等。

根据业务要求的不同,流计算在其中扮演着不同的角色:既可以做在线的欺诈检测,也可以做决策后近实时的结果分析、全局预警与规则调整等。

本文先介绍一种准实时的异常检测系统。

所谓准实时,即要求延迟在100ms以内。比如一家银行要做一个实时的交易检测,判断每笔交易是否是正常交易:如果用户的用户名和密码被盗取,系统能够在盗取者发起交易的瞬间检测到风险来决定是否冻结这笔交易。

这种场景对实时性的要求非常高,否则会阻碍用户正常交易,所以叫做准实时系统。

由于行动者可能会根据系统的结果进行调整,所以规则也会更新,流计算和离线的处理用来研究规则是否需要更新以及规则如何更新。

2.系统架构与模块综述

为了解决这个问题,我们设计如下的系统架构:

  • 在线系统,完成在线检测功能,可以是web服务的形式:
    • 针对单条事件进行检测
    • 根据全局上下文进行检测,比如全局黑名单
    • 根据用户画像或近期一段时间的信息进行检测,比如最近20次交易时间与地点
  • kafka,把事件与检测的结果及其原因发送到下游
  • flink近实时处理

近实时的更新用户的属性,比如最近的交易时间&地点;

汇总统计全局的检测状态,并做同期对比,比如某条规则的拦截率突然发生较大变化、全局通过率突然增高或降低等等;

maxcompute/hadoop存储与离线分析,用于保留历史记录,并由业务人员探索性的研究有没有新的模式hbase,保存用户画像

3.关键模块

3.1 在线检测系统

交易的异常检测在本系统中实现,他可以是一个web服务器,也可以是嵌入到客户端的系统。在本文中,我们假设它是一个web服务器,其主要任务就是检阅到来的事件并反馈同意或拒绝。

针对每一个进入的事件,可以进行三个层次的检测:

  • 事件级检测
    只用该事件本身就能完成检测,比如格式判断或基本规则验证(a属性必须大于10小于30,b属性不能为空等等)
  • 全局上下文检测
    在全局信息中的上下文中,比如存在一个全局的黑名单,判断该用户是否在黑名单中。或者某属性大于或小雨全局的平

均值等。

  • 画像内容检测
    针对该行动者本身的跨多条记录分析,比如该用户前100次交易都发生在杭州,而本次交易发生在北京且距上次交易只有10分钟,那就有理由发出异常信号。

所以这个系统至少要保存三方面的东西,一方面是整个检测的过程,一方面是进行判断的规则,一方面是所需的全局数据,除此之外,根据需要决定是否把用户画像在本地做缓存。

3.2 kafka

kafka主要用来把检测的事件、检测的结果、拒绝或通过的原因等数据发送到下游,供流计算和离线计算进行处理。

3.3 flink近实时处理

在上面的系统中已经完成了异常检测,并把决策发送到了kafka,接下来我们需要使用这些数据针对当前的策略进行新一轮的防御性检测。

即使已知的作弊行为已经输入到模型和规则库中进行了标记,但总有“聪明人”尝试欺诈。他们会学习现在的系统,猜测规则并作出调整,一瓶凉白开这些新的行为很可能超出了我们当前的理解。所以我们需要一种系统来检测整体系统的异常,发现新的规则。

也就说,我们的目标不是检测单个事件是否有问题,而是要检测这些用来检测事件的逻辑本身有没有问题,

所以一定要站在比事件更高的层面来看问题,如果在更高的层面发生变化,那么有理由考虑对规则/逻辑进行调整。

具体来说,系统应该关注一些宏观指标,比如总量,平均值,某个群体的行为等等。这些指标发生了变化往往表示某些规则已经失效。

举几个例子:

某条规则之前的拦截率是20%,突然降低到了5%;

某天规则上线后,大量的正常用户均被拦截掉了;

某个人在电子产品上的花费突然增长了100倍,但同时其他人也有很多类似的行为,这可能具有某种说得通的解释(比如Iphone上市);

某人连续几次行为,单次都正常,但不应该有这么多次,比如一天内连续买了100次同一产品【开窗分析】;

识别某种组合多条正常行为的组合,这种组合是异常的,比如用户买菜刀是正常的,买车票是正常的,买绳子也是正常的,去加油站加油也是正常的,但短时间内同时做这些事情就不是正常的。通过全局分析能够发现这种行为的模式。

业务人员根据流计算产生的近实时结果能够及时发现规则有没有问题,进而对规则作出调整。

除此之外,流计算还能进行用户画像的实时更新更新,比如统计用户过去10分钟的几次行为,最近10次的登陆地点等等。

3.4 maxcompute/hadoop离线存储于探索性分析

在这个环节中,可以通过脚本、sql、或机器学习算法来进行探索性分析,发现新的模型,比如通过聚类算

法把用户进行聚类、对行为打标后进行模型的训练等等,或者周期性的重新计算用户画像。这里和业务关系很大,不多过多描述。

3.5 hbase用户画像

hbase保存着流计算&离线计算产生的用户画像,供检测系统使用。之所以选择hbase主要是为了满足实时查询的需求。

4.总结

上面给出了一个准实时异常检测系统的概念性设计,业务逻辑虽然简单,但整个系统本身是非常完整且具有良好扩展性的,所以可以在这个基础上进一步去完善。

后面我会再介绍近实时的异常检测系统,即实时性要求不那么高,要求在秒级的异常检测系统,在近实时

异常检测系统中,流计算会发挥更大的作用。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FlinkKafka 是一种分布式数据处理架构,可以帮助企业构建实时的、可靠的数据处理流程,为企业应用提供实时的数据服务。Flink 是 Apache 的一项开源项目,提供简单、高效、可靠的数据处理架构Kafka 是一种分布式消息队列,支持高性能的消息传输。它们可以结合在一起,为企业提供实时数据处理能力。 ### 回答2: Kafka Flink数据处理架构是一种将Apache Kafka与Apache Flink集成的架构设计。Apache Kafka是一种高性能、可持久化、分布式流处理平台,而Apache Flink是一种强大的流处理框架。 在Kafka Flink数据处理架构中,Kafka作为数据源,负责收集、存储和分发数据。数据可以以流的形式实时流入Kafka,并被分为多个主题(topics)。每个主题可以有多个分区(partitions),以提高负载均衡和可伸缩性。 Flink作为数据处理引擎,连接到Kafka集群,实时处理从Kafka主题中读取的数据。Flink提供了各种功能和API来对数据进行转换、计算和分析,并将结果写回到Kafka主题或其他外部存储系统。 在Kafka Flink数据处理架构中,Flink提供了一些关键概念和机制来处理数据流。例如,窗口功能允许对数据流进行时间或其他属性的分段处理,以便进行聚合操作。流与表之间的无缝转换使得可以方便地进行复杂的流和批处理操作。 此外,Kafka Flink数据处理架构还支持故障处理和容错机制。Flink可以使用检查点机制来定期记录流处理应用程序的状态,并在故障恢复时恢复到最后一个一致的状态。 总而言之,Kafka Flink数据处理架构结合了KafkaFlink的优势,为实时数据处理提供了可靠,高效和可伸缩的解决方案。它能够处理大量的数据流,并提供丰富的功能和灵活的API来满足不同的数据处理需求。 ### 回答3: Kafka Flink数据处理架构是一种常用的大数据处理架构,它结合了Apache Kafka和Apache Flink这两个开源项目的特性,实现了高效、可扩展的数据流处理。 在这个架构中,Apache Kafka充当着数据流引擎的角色。它是一个分布式的流处理平台,用于高吞吐量、低延迟的发布和订阅消息。Kafka以主题(topic)为单位组织数据流,生产者将数据发布到特定的主题,消费者则从主题中订阅和消费数据。Kafka保证了消息的持久化存储和高可用性,能够支持大规模的数据流处理。 而Apache Flink则是一个分布式流处理框架,用于在数据流中进行实时的、有状态的计算和分析。Flink提供了丰富的流处理操作符和函数,可以进行窗口聚合、数据转换、流量控制等操作。Flink具有低延迟、高吞吐量的特性,并且支持Exactly-once语义,保证了数据的确性和一致性。 在Kafka Flink数据处理架构中,Kafka作为输入源和输出目的地,将数据流通过主题传输到FlinkFlink通过Kafka的消费者接口实时获取数据流,进行各种计算和处理操作,并将结果写回到Kafka的指定主题。这种架构可以实现大规模数据的实时流处理和分析,具有高度容错性和可伸缩性。 此外,Kafka Flink数据处理架构还支持和其他数据存储和计算系统的集成,可以将计算结果写回到数据库、数据仓库或其他存储系统中,也可以将处理过的数据传输给其他分布式计算框架进行更复杂的计算和分析。 总之,Kafka Flink数据处理架构是一个强大而灵活的大数据处理方案,能够支持实时流处理和分析,实现高效可扩展的数据处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值