分享

Kafka+Flink , 构建秒级异常检测系统

 quasiceo 2018-10-10

Kafka+Flink , 构建秒级异常检测系统

“基于行动者(人或机器)的行为是否正常作出决策”的异常检测技术,已广泛应用于各大领域,如金融场景中的交易检测、贷款检测;工业场景中的生产线预警;安防场景中的入侵检测等。消息队列Kafka+流计算Flink,就是这项技术的关键。

关于产品
  • 消息队列 Kafka

    消息队列 Kafka 是一个分布式的、高吞吐量、高可扩展性消息队列服务,广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等。

    低至85折
  • 实时计算Flink

    实时计算(原阿里云流计算)是一套基于Apache Flink构建的一站式、高性能实时大数据处理平台。

    9折起
技术实现

系统架构

查看大图
在线系统,常见检测功能:

1)针对单条事件进行检测 ;

2)根据全局上下文进行检测,比如全局黑名单;

3)根据用户画像或近期一段时间的信息进行检测,比如最近20次交易时间与地点 。

消息队列kafka

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

Flink近实时处理

1)汇总统计全局的检测状态,并做同期对比,比如规则拦截率变化、全局通过率波动;

2)近实时的更新用户的属性,如最近的交易时间&地点。

实现方法
关键模块 ## 在线检测系统 交易的异常检测的实现,可以是一个web服务器,或者是嵌入到客户端的系统。其主要任务就是检阅到来的事件并反馈同意或拒绝。 > 针对每一个进入的事件,可以进行三个层次的检测: > * 事件级检测:只用该事件本身就能完成检测,比如格式判断或基本规则验证(例如:10<A<30,B不为空等等) > * 全局上下文检测:在全局信息中的上下文中,比如存在一个全局的黑名单,判断该用户是否在黑名单中。 > * 画像内容检测:针对该行动者本身的跨多条记录分析,比如该用户前100次交易都发生在杭州,而本次交易发生在北京且距上次交易只有10分钟,那就有理由发出异常信号。系统至少要保存三方面的内容,一是整个检测的过程,一是进行判断的规则,一是所需的全局数据,除此之外,根据需要决定是否把用户画像在本地做缓存。 ## Kafka大数据通讯 kafka主要用来把检测的事件、检测的结果、拒绝或通过的原因等数据发送到下游,供流计算和离线计算进行处理。 ## Flink近实时处理 系统完成了异常检测,并把决策发送到了kafka,接下来需要使用这些数据针对当前的策略进行新一轮的防御性检测。系统常见异常: > * 某条规则之前的拦截率是20%,突然降低到了5%; > * 某天规则上线后,大量的正常用户均被拦截掉了; > * 某个人在电子产品上的花费突然增长了100倍,但同时其他人也有很多类似的行为,这可能具有某种说得通的解释(比如Iphone上市); > * 某人连续几次行为,单次都正常,但不应该有这么多次,比如一天内连续买了100次同一产品(开窗分析); 业务方根据流计算产生的近实时结果能够及时发现规则有没有问题,进而对规则作出调整。 除此之外,流计算还能进行用户画像的实时更新,比如统计用户过去10分钟的几次行为,最近10次的登陆地点等等。 ## Maxcompute/hadoop离线存储于探索性分析 通过脚本、sql、或机器学习算法来进行探索性分析,发现新的模型,比如通过聚类算法把用户进行聚类、对行为打标后进行模型的训练等等,或者周期性的重新计算用户画像。 ## Hbase用户画像 Hbase保存着流计算&离线计算产生的用户画像,供检测系统使用且能满足实时查询的需求。

在线检测系统

  • 在线检测系统

  • Kafka大数据通讯

  • Flink近实时处理

  • Maxcompute/hadoop离线存储于探索性分析

  • Hbase用户画像

    关键模块

在线检测系统

交易的异常检测的实现,可以是一个web服务器,或者是嵌入到客户端的系统。其主要任务就是检阅到来的事件并反馈同意或拒绝。

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

  • 事件级检测:只用该事件本身就能完成检测,比如格式判断或基本规则验证(例如:10<A<30,B不为空等等)
  • 全局上下文检测:在全局信息中的上下文中,比如存在一个全局的黑名单,判断该用户是否在黑名单中。
  • 画像内容检测:针对该行动者本身的跨多条记录分析,比如该用户前100次交易都发生在杭州,而本次交易发生在北京且距上次交易只有10分钟,那就有理由发出异常信号。系统至少要保存三方面的内容,一是整个检测的过程,一是进行判断的规则,一是所需的全局数据,除此之外,根据需要决定是否把用户画像在本地做缓存。

Kafka大数据通讯

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

Flink近实时处理

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

  • 某条规则之前的拦截率是20%,突然降低到了5%;
  • 某天规则上线后,大量的正常用户均被拦截掉了;
  • 某个人在电子产品上的花费突然增长了100倍,但同时其他人也有很多类似的行为,这可能具有某种说得通的解释(比如Iphone上市);
  • 某人连续几次行为,单次都正常,但不应该有这么多次,比如一天内连续买了100次同一产品(开窗分析);

业务方根据流计算产生的近实时结果能够及时发现规则有没有问题,进而对规则作出调整。 除此之外,流计算还能进行用户画像的实时更新,比如统计用户过去10分钟的几次行为,最近10次的登陆地点等等。

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

通过脚本、sql、或机器学习算法来进行探索性分析,发现新的模型,比如通过聚类算法把用户进行聚类、对行为打标后进行模型的训练等等,或者周期性的重新计算用户画像。

Hbase用户画像

Hbase保存着流计算&离线计算产生的用户画像,供检测系统使用且能满足实时查询的需求。

实践入门
  • Q:实时计算 Flink 详细使用文档在哪里 ?
    A :实时计算,学习入门还请参看:https://help.aliyun.com/learn/learningpath/streamcompute.html
  • Q:消息队列 Kafka的详细使用文档在哪里?
    A :消息队列,学习入门还请参看:https://help.aliyun.com/document_detail/68151.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多