Kafka+Flink , 构建秒级异常检测系统 “基于行动者(人或机器)的行为是否正常作出决策”的异常检测技术,已广泛应用于各大领域,如金融场景中的交易检测、贷款检测;工业场景中的生产线预警;安防场景中的入侵检测等。消息队列Kafka+流计算Flink,就是这项技术的关键。 ![]() ![]() ![]() ![]() ![]() ![]() 系统架构 ![]() ![]() ![]()
在线系统,常见检测功能:
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保存着流计算&离线计算产生的用户画像,供检测系统使用且能满足实时查询的需求。
在线检测系统
在线检测系统交易的异常检测的实现,可以是一个web服务器,或者是嵌入到客户端的系统。其主要任务就是检阅到来的事件并反馈同意或拒绝。
Kafka大数据通讯kafka主要用来把检测的事件、检测的结果、拒绝或通过的原因等数据发送到下游,供流计算和离线计算进行处理。 Flink近实时处理系统完成了异常检测,并把决策发送到了kafka,接下来需要使用这些数据针对当前的策略进行新一轮的防御性检测。系统常见异常:
业务方根据流计算产生的近实时结果能够及时发现规则有没有问题,进而对规则作出调整。 除此之外,流计算还能进行用户画像的实时更新,比如统计用户过去10分钟的几次行为,最近10次的登陆地点等等。 Maxcompute/hadoop离线存储于探索性分析通过脚本、sql、或机器学习算法来进行探索性分析,发现新的模型,比如通过聚类算法把用户进行聚类、对行为打标后进行模型的训练等等,或者周期性的重新计算用户画像。 Hbase用户画像Hbase保存着流计算&离线计算产生的用户画像,供检测系统使用且能满足实时查询的需求。 ![]() ![]()
|
|