文档章节

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

架构师springboot
 架构师springboot
发布于 2018/12/15 14:15
字数 2209
阅读 91
收藏 0

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主要是为了满足实时查询的需求。

感兴趣可以加Java架构师群获取Java工程化、高性能及分布式、高性能、深入浅出。高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货的直播免费学习权限 都是大牛带飞 让你少走很多的弯路的 群..号是:855801563 对了 小白勿进 最好是有开发经验

注:加群要求

1、具有工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

© 著作权归作者所有

共有 人打赏支持
架构师springboot
粉丝 11
博文 116
码字总数 274253
作品 0
东城
私信 提问
Kafka+Flink 实现准实时异常检测系统

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

阿里云云栖社区
2018/10/16
0
0
开源EDR(OSSEC)基础篇- 01 -设计定位与能力输出

前言 介绍OSSEC之前,不得不提到当前比较热门的技术EDR,近几年随着大数据SIEM系统的发展,EDR(端点威胁检测与响应)技术成为了安全界万众宠爱的骄子,广泛用于威胁检测、攻击溯源和响应处理的...

orright
01/08
0
0
开源大数据周刊-第78期

阿里云E-MapReduce资讯 新功能预告: EMR Hadoop集群将增加Flink组件,版本1.4.0 EMR Kafka集群将增加Schema Registry和Rest Proxy组件 资讯 盘点2017年晋升为Apache TLP的大数据相关项目 本...

开源大数据
2018/01/05
0
0
场景化封装,一站式使用,普惠AI集成 ——阿里云发布智能媒体管理产品

导语 近日,阿里云发布了智能媒体管理(Intelligent Media Managemen)服务, 通过离线处理能力关联授权的云存储,提供便捷的海量多媒体数据一键分析,并通过该分析过程构建价值元数据,更好...

罗庆超
2018/01/05
0
0
云巴:基于MQTT协议的实时通信编程模型

概要 有人常问,云巴实时通信系统到底提供了一种怎样的服务,与其他提供推送或 IM 服务的厂商有何本质区别。其实,从技术角度分析,云巴与其它同类厂商都是面向开发者的通信服务,宏观的编程...

Yunba
2016/09/28
94
0

没有更多内容

加载失败,请刷新页面

加载更多

嵌入式应用选择合适的微控制器

准备所需硬件接口列表 使用微控制器的基本硬件框图,准备一份微控制器需要支持的所有外设接口的列表。微控制器中有两种常见的接口类型需要列出。第一种是通信接口,这些是外围设备,如USB,S...

linuxCool
11分钟前
1
0
Group by使用

概述 GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表。 GROUP BY必须得配合...

小橙子的曼曼
22分钟前
1
0
机械臂写中文

Make Me a Hanzi https://www.skishore.me/makemeahanzi/ 使用uArm Swift Pro机械臂写中文-毛笔字 https://github.com/makelove/Robot_Arm_Write_Chinese...

itfanr
34分钟前
0
0
OSChina 周三乱弹 —— 孤独到都和病毒发生了感情了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 逃跑计划《一万次悲伤 (Live)》 《一万次悲伤 (Live)》- 逃跑计划 手机党少年们想听歌,请使劲儿戳(这里) 现在...

小小编辑
今天
979
13
test

//// main.c// Test//// Created by 吕颖 on 2019/1/16.// Copyright © 2019年 carmen. All rights reserved.//#include <stdio.h>#include <stdlib.h>#include <t......

carmen-ly
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部