首頁>技術>

專案介紹

一款基於java語言,使用Springboot + Mongodb + Groovy 等框架搭建的輕量級實時風控引擎,適用於反欺詐應用場景,極簡的配置,真正做到了開箱即用。通過學習本專案能快速了解風險的定義,進而量化風險 ,最後達到集中管理風險的目的。A real-time risk analysis engine,which can update risk rule in real-time and make it effective immediately.It applies to the anti-fraud application perfectly. The project code called Radar, like the code, monitor the transaction at the back.

專案特點

背景

伴隨著移動網際網路的高速發展,羊毛黨快速崛起,從一平臺到另一個平臺,所過之處一地雞毛,這還不是最可怕的, 隨之而來的黑產令大部分網際網路應用為之膽寒,通常新上線的APP的福利比較大,風控系統不完善,BUG 被發現的頻率也比較高, 黑產利用BUG短時間給平臺帶來了巨大的損失,某多多的(100元測試優惠券,一夜損失上百萬W)就是一例。 針對這一現象, 擁有一款實時的風控引擎是所有帶有金融性質的APP 的當務之急, Radar 應景而生,Radar本來是筆者前公司的一個內部專案,公司現在不復存在,考慮到專案本身的價值, 現在使用Springboot進行改造,並刪除了很多本地化功能,只保留風控引擎核心,更具通用型,二次開發成本低。

專案初衷

我們知道企業做大後,會有很多產品線,而幾乎每一個產品都需要做風險控制,通常我們都是把風險控制的邏輯寫在相應的業務功能程式碼裡, 大量重複的風控邏輯程式碼耦合在我們的業務邏輯裡面,隨著時間的累積,程式碼會變得異常複雜,會給後期的維護造成巨大的人力成本和風險。

所以風險的集中化管理勢在必行,只有通過一個統一的管理平臺,使用規則引擎,採用視覺化配置的形式, 平臺化管理不同產品的風控策略才是一種更好的方式, 而這正是Radar的初衷。

專案架構

前後端分離架構

後端技術框架: SpringBoot + Mybatis + tkMapper + Mysql + MongoDB + Redis + Groovy + Swagger

前端技術框架: React(SPA)

架構圖

技術選型

Springboot:筆者是java 出生, 選擇 Springboot 理所當然,方便自己, 也方便其他Java使用者進行擴充套件。Mybatis + tkMapper: 持久層框架, tkMapper 提供mapper 通用模板功能,減少重複程式碼的生成。Mysql : 本專案中關係資料庫,主要用於存放 風險模型的元資訊。MongoDB: 用於存放事件JSON, 提供基本統計學計算(例如:max, min, sum, avg, ), 複雜的統計學概念(sd,variance, etc...)在記憶體中計算。Redis: 提供快取支援,Engine 利用釋出訂閱特性監聽管理端相關配置的更新Groovy: 規則引擎,風控規則最後都生成 groovy 指令碼, 實時編輯,動態生成,即時生效。Swagger: Rest API 管理

名詞解釋

Model: 模型

使用者行為事件, 例如:註冊,登入,購買,提現。。。

模型三要素

也就是事件行為三要素,風控系統的核心定義:事件流水ID(例如:交易流水號),實體ID(例如:userId),事件發生時間(例如:交易時間), 簡單來說就是誰什麼時候做了什麼事。(who, when, what)

PreItem: 預處理

像經緯度,IP,手機號碼段等事件屬性,可能無法直接計算,通過預處理外掛 轉換成 其他格式, 例如:經緯度,ip 可以通過對應外掛變成位置和地址,手機號碼可以通過外掛獲取其它系統的使用者畫像資訊等。

Abstraction: 特徵

特徵工程,例如使用者小時交易次數,IP 一天交易金額,裝置一小時交易次數。。。

Adaptation: 機器學習模型介面卡

使用訓練好的機器學習模型,進行檢測

Activation: 啟用點

概念類似於機器學習裡面的 (Activation Function), 一個模型可以定義多個 activation(相當於不同維度的檢測報告),每個activation都可以獨立配置規則,單獨打分。 例如,使用者註冊行為, 可以定義:異常註冊, 垃圾註冊, 可以輸出多個activation。

Rule: 規則

在計算 abstraction 和 activation 之前,需要先檢查資料是否正常,檢查就是按照rule 配置進行檢測。

Plugin:外掛

為了通用性,專案自身並不提供敏感資料能力,但是通過擴充套件外掛來獲得其它系統或者中間資料功能, 目前專案自帶手機號碼段和IP地址轉換兩款外掛,理論上可以通過擴充套件外掛整合任何其它資料的能力, 例如:如果商戶自身帶有內部使用者畫像,可以自定義一個外掛用過使用者ID來獲取使用者畫像資料。

引擎處理流程

資料ER關係圖

Demo資料

以ting提現為例:

資料樣例:

響應樣例:

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 向優秀的人或作品學習是成功的捷徑,Spring 用了哪些設計模式呢