項目介紹
一款基于java語言,使用Springboot + Mongodb + Groovy + Es等架構搭建的輕量級實時風控引擎,适用于反欺詐應用場景,極簡的配置,真正做到了開箱即用。
通過學習本項目能快速了解 風險的定義 ,進而 量化風險 ,最後達到 集中管理風險 的目的。
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.
項目特點
- 實時風控,特殊場景可以做到100ms内響應
- 可視化規則編輯器,豐富的運算符、計算規則靈活
- 支援中文,易用性更強
- 自定義規則引擎,更加靈活,支援複雜多變的場景
- 插件化的設計,快速接入其它資料能力平台
- NoSQL,易擴充,高性能
- 配置簡單,開箱即用!
相關站點
Gitee: https://gitee.com/freshday/radar
Github: https://github.com/wfh45678/radar // github 為鏡像網站,貢獻代碼請送出到 gitee
官網: https://www.riskengine.cn
Wiki: https://gitee.com/freshday/radar/wikis/home
背景
伴随着移動網際網路的高速發展,羊毛黨快速崛起,從一平台到另一個平台,所過之處一地雞毛,這還不是最可怕的, 随之而來的黑産令大部分網際網路應用為之膽寒,通常新上線的APP的福利比較大,風控系統不完善,BUG 被發現的頻率也比較高, 黑産利用BUG短時間給平台帶來了巨大的損失,某多多的(100元測試優惠券,一夜損失上百萬W)就是一例。 針對這一現象, 擁有一款實時的風控引擎是所有帶有金融性質的APP 的當務之急,Radar應景而生。
Radar前身是筆者前公司的一個内部研究項目,由于衆多原因項目商業化失敗,考慮到項目本身的價值,棄之可惜, 現使用Springboot進行重構,删除了很多本地化功能,隻保留風控引擎核心,更加通用,更加輕量,二次開發成本低, 開源出來,希望能給有風控需求的你們帶來一些幫助。
項目初衷
我們知道企業做大後,會有很多産品線,而幾乎每一個産品都需要做風險控制,通常我們都是把風險控制的邏輯寫在相應的業務功能代碼裡, 大量重複的風控邏輯代碼耦合在我們的業務邏輯裡面,随着時間的累積,代碼會變得異常複雜,會給後期的維護造成巨大的人力成本和風險。
是以風險的集中化管理勢在必行,隻有通過一個統一的管理平台,使用規則引擎,采用可視化配置的形式, 平台化管理不同産品的風控政策才是一種更好的方式, 而這正是Radar的初衷。
項目架構
前後端分離架構
後端技術架構: SpringBoot + Mybatis + tkMapper + Mysql + MongoDB + Redis + Groovy + ES + Swagger
前端技術架構: React(SPA)
架構圖
技術選型
- Springboot:筆者是java 出生, 選擇 Springboot 理所當然,友善自己, 也友善其他Java使用者進行擴充。
- Mybatis + tkMapper: 持久層架構, tkMapper 提供mapper 通用模闆功能,減少重複代碼的生成。
- Mysql : 本項目中關系資料庫,主要用于存放 風險模型的元資訊。
- MongoDB: 用于存放事件JSON, 提供基本統計學計算(例如:max, min, sum, avg,), 複雜的統計學概念(sd,variance, etc...)在記憶體中計算。
- ES: 提供資料查詢和規則命中報表服務。
- Redis: 提供緩存支援,Engine 利用釋出訂閱特性監聽管理端相關配置的更新
- Groovy: 規則引擎,風控規則最後都生成 groovy 腳本, 實時編輯,動态生成,即時生效。
- Swagger: Rest API 管理
使用手冊
使用手冊裡面有大量的圖檔,為了友善國内使用者使用,故推薦碼雲的wiki 連結,
https://gitee.com/freshday/radar/wikis/manual
示範入口
通過管理端能夠快速了解系統是怎麼從風險的定義到風險的量化再到風險的集中管理的整個工作流程。