风控系统设计
一、背景
当前互联网企业存在很多业务风险,有些风险(比如薅羊毛)虽然没有sql注入漏洞利用来的直接,但是一直被羊毛党、刷单党光顾的企业长期生存下来的几率会很低!账号:垃圾注册、撞库、盗号等交易:盗刷、恶意占用资源、篡改交易金额等活动:薅羊毛短信:短信轰炸
实时业务风控系统是分析风险事件,根据场景动态调整规则,实现自动精准预警风险的系统。
需要解决的问题:哪些是风险事件,注册、登录、交易、活动等事件,需要业务埋点配合提供实时数据接入什么样的事件是有风险的,风险分析需要用到统计学,对异常用户的历史数据做统计分析,找出异于正常用户的特征实时性,风险事件的分析必须毫秒级响应,有些场景下需要尽快拦截,能够给用户止损挽回损失低误报,这需要人工风控经验,对各种场景风险阈值和评分的设置,需要长期不断的调整,所以灵活的规则引擎是很重要的支持对历史数据的回溯,能够发现以前的风险,或许能够找到一些特征供参考二、架构图
风控系统的核心就是规则引擎,一个好的规则引擎可以方便业务方随时变更验证逻辑而不用重启服务。既要保证服务的稳定又要不失灵活性。规则引擎我们是采用执行drools脚本,可以灵活变更规则逻辑。这需要对领域模型进行抽象,目前抽象出了策略、规则和指标关系如下图所示:
一般来说业务方在接入风控系统时需要先配置策略规则,然后设定每个规则对应的阈值和分值等级,完了就可以应用上线观测实际预测的效果,实际的预测结果只能依赖离线分析,可能需要对用户历史操作轨迹进行分析,如果预测结果拦截的都是正常操作的用户,这时可能就需要调整阈值。有了这个闭环就知道接下来需要做的事情了,后面所有的架构都是围绕这个闭环来进行。经过重新梳理后架构图如下:
三、风控系统组成实时规则服务
实时风控服务是整个风控系统的核心服务,是风控系统对外的门面,被所有业务系统同步调用,返回对风控规则的校验结果,保证业务流程正常且安全。准实时规则计算服务
准实时风控业务需要对一些业务场景进行实时计算,需要借助kafkaflink等实时计算业务,对核心风控指标进行计算规划离线计算服务
离线计算服务需要对核心指标进行数据建模,借助算法,机器学习,来分析出风险点,将结果反馈上报四、风控管理平台
风控系统实际是包含两部分内容,一是识别风险,二是对识别后的风险或是自动的或是人工的进行处理。后台系统增加了惩罚管理,相对于原先风险处理硬编码在业务逻辑中,惩罚管理可以做到配置化的分级处理,当然响应可能没有以前及时,但也是近实时的。整体流程如下所示。
五、实现原理
统计学次数统计,比如1分钟内某账号的登录次数,可以用来分析盗号等频数统计,比如1小时内某ip上出现的账号,可以用来分析黄牛党等最大统计,比如用户交易金额比历史交易都大,可能有风险最近统计,比如最近一次交易才过数秒,可能机器下单行为习惯,比如用户常用登录地址,用户经常登录时间段,可以用来分析盗号等
抽象:某时间段,在条件维度(可以是多个维度复合)下,利用统计方法统计结果维度的值。充分发挥你的想象吧!
Redis
redis中数据结构sortedset,是个有序的集合,集合中只会出现最新的唯一的值。利用sortedset的天然优势,做频数统计非常有利。
比如1小时内某ip上出现的账号数量统计:
保存维度ZADDkeyscoremember(时间复杂度:O(Mlog(N)),N是有序集的基数,M为成功添加的新成员的数量),keyip,score时间(比如20160807121314),member账号。存储时略耗性能。结构如下:1。1。1。1账号120160807121314账号220160807121315账号n201608071213162。2。2。2账号320160807121314账号420160807121315账号m20160807121316
计算频数ZCOUNTkeyminmax(时间复杂度:O(1)),keyip,min起始时间,max截止时间。计算的性能消耗极少,优势明显
Drools
规则配置:rules。drl,规则都是用java语言编写。默认配置了登录事件的部分规则
drl文件说明:packagerules;规则包路径importcom。example。riskcontrol。model。LoginEvent引入类importcom。example。riskcontrol。service。DimensionServiceimportcom。example。riskcontrol。model。EnumTimePeriodglobalDimensionServicedimensionService引入外部服务rule98loginip规则名称,全局唯一salience98规则优先级,值越大越先执行lockonactivetrue事件不重复执行该规则when条件判断,是否需要进入actionevent:LoginEvent()判断事件对象是否是LoginEvent类thenactionintcountdimensionService。distinctCount(event,newString〔〕{LoginEvent。OPERATEIP},EnumTimePeriod。LASTHOUR,LoginEvent。MOBILE);近1小时内该事件ip上出现的mobile数量统计if(event。addScore(count,20,10,1)){如果统计结果超过20个,则记10分,并且结果每超1个,再多记1分dimensionService。insertRiskEvent(event,近1小时内同ip出现多个mobile,countcount);记录风险事件ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a}end结束规则
别玩NAS了,华为推出家庭存储产品,小白也能轻松上手说起数据存储这件事相信每一个人都有自己的存储方式,前段时间我也曾给大家分享过一篇文章,来讲解关于市面上各类存储产品的优缺点,有兴趣的朋友可以去翻看一下。这不我又来了,这次我会给……
励志的句子1。回避现实的人,未来将更不理想。2。请用今天的努力让明天没有遗憾。3。最大的悲剧,恰是善与善的冲突。4。人一简单就快乐,一世故就变老。5。有多大的思想……
IOS15。7,老机型的福音呀今天无意中看到一位博主将手里的备用机苹果6splus更新到15。7,在续航能力、运行流畅度、发热三个方面进行了测试,相比于14。6,居然均有一些提升。我手里也有一部用作备用机的……
11年如果科比和保罗联手,真的可以拿下总冠军吗?在最近的几个赛季中,相信球迷们也发现了已经成为了一个抱团的风气,越来越多的明星球员,为了能够获得总冠军不惜走捷径,毕竟谁也不希望自己的职业生涯中留下终身的遗憾。这时候有很多人就……
我们人类该做准备了?科学家突然发出警告可能很快会找到外星人外星生命、外星文明的真相可能越来越近了?科学家甚至发出了外星人的警告,我们可能要做准备了!这是怎么回事?虽然我们人类到目前为止仍未发现外星生命、外星文明的蛛丝马迹,但是很……
导入单号后如何自动刷新所有物流信息最近有很多朋友在问,如何导入多个快递单号,并查询所有物流呢?不知道如何操作的宝贝们,下面请随小编一起来试试这个新的查询技巧。所需工具安装一个快递批量查询高手快……
字母哥和亚历山大当选周最佳NBA今天公布了上周东西部最佳球员,雄鹿队的扬尼斯阿德托昆博和雷霆队的吉尔吉斯亚历山大分别当选。字母哥上周场均得到35。7分15个篮板6次助攻,率领雄鹿3战全胜,本赛季仍……
哑巴不是一般人,她虽然不会说话,却是一等人东南地是父亲随口对他开垦的那块儿土地的称呼。虽土地肥沃厚积着千年的腐殖土泛着醉人的松香,但荒远冷僻久无田邻。只有满山谷的鸟鸣、无际的原始森林、森林里不知名的花海,还有田塍……
吃辣长痘吗?幕后黑手,究竟是谁?对于很多无辣不欢的朋友来说,因为吃辣长痘,经常要忍痛割爱。其实大家都冤枉辣椒了,吃辣和长痘并没有直接关系。今天,我带大家一起破案,寻找长痘的幕后黑手。首先,我们来了解长痘……
富士康郑州厂员工出走!恐冲击高达3成iPhone产量知情人士表示,苹果(Apple)供应商鸿海位于于中国河南省的iPhone代工厂受到武汉肺炎(新型冠状病毒病,COVID19)疫情冲击,相关问题可能导致富士康郑州厂11月iPho……
为什么你不应该拔掉你的白发虽然我们大多数人都知道变灰是我们的未来,而且是衰老过程中非常自然的一部分,但这并不意味着我们都喜欢并接受它。当然,名人和有影响力的人最近很自豪地在社交媒体上吹嘘他们的银发,甚至……
400公里4亿公里!记录着中国航天不断创新的跨越之旅十年来,我国一些关键核心技术实现突破,战略性新兴产业发展壮大,载人航天,探月探火取得重大成果。400公里地球到太空中近地轨道的距离。在这片繁忙的区域中,最耀眼的就是……