案例與解決方案彙總頁: 阿里雲實時計算產品案例&解決方案彙總
對一個互聯網產品來講,典型的風控場景包括:註冊風控、登錄風控、交易風控、活動風控等,而風控的最佳效果是防患於未然,因此事前事中和過後三種實現方案中,又以事前預警和事中控制最好。java
這要求風控系統必定要有實時性。git
本文就介紹一種實時風控解決方案。github
風控是業務場景的產物,風控系統直接服務於業務系統,與之相關的還有懲罰系統和分析系統,各系統關係與角色以下:web
其中風控系統和分析系統是本文討論的重點,而爲了方便討論,咱們假設業務場景以下:redis
風控範圍包括:架構
風控系統有規則和模型兩種技術路線,規則的優勢是簡單直觀、可解釋性強、靈活,因此長期活躍在風控系統之中,但缺點是容易被攻破,一但被黑產猜到裏面就會失效,因而在實際的風控系統中,每每再結合上基於模型的風控環節來增長健壯性。但限於篇幅,本文中咱們只重點討論一種基於規則的風控系統架構,固然若是有模型風控的訴求,該架構也徹底支持。機器學習
規則就是針對事物的條件判斷,咱們針對註冊、登錄、交易、活動分別假設幾條規則,好比:異步
規則能夠組合成規則組,爲了簡單起見,咱們這裏只討論規則。性能
規則其實包括三個部分:學習
規則可由運營專家憑經驗填寫,也可由數據分析師根據歷史數據發掘,但由於規則在與黑產的攻防之中會被猜中致使失效,因此無一例外都須要動態調整。
基於上邊的討論,咱們設計一個風控系統方案以下:
該系統有三條數據流向:
本節先介紹前兩部分,分析系統在下一節介紹。
實時風控是整個系統的核心,被業務系統同步調用,完成對應的風控判斷。
前面提到規則每每由人編寫而且須要動態調整,因此咱們會把風控判斷部分與規則管理部分拆開。規則管理後臺爲運營服務,由運營人員去進行相關操做:
講完管理後臺,那規則判斷部分的邏輯也就十分清晰了,分別包括前置過濾、事實數據準備、規則判斷三個環節。
業務系統在特定事件(如註冊、登錄、下單、參加活動等)被觸發後同步調用風控系統,附帶相關上下文,好比IP地址,事件標識等,規則判斷部分會根據管理後臺的配置決定是否進行判斷,若是是,接着進行黑白名單過濾,都經過後進入下一個環節。
這部分邏輯很是簡單。
在進行判斷以前,系統必需要準備一些事實數據,好比:
redis/hbase的數據產出咱們會在第2.2節準實時數據流中進行介紹。
在獲得事實數據以後,系統會根據規則和閾值進行判斷,而後返回結果,整個過程便結束了。
整個過程邏輯上是清晰的,咱們常說的規則引擎主要在這部分起做用,通常來講這個過程有兩種實現方式:
這兩種方案都支持規則的動態更新。
這部分屬於後臺邏輯,爲風控系統服務,準備事實數據。
把數據準備與邏輯判斷拆分,是出於系統的性能/可擴展性的角度考慮的。
前邊提到,作規則判斷須要事實的相關指標,好比最近一小時登錄次數,最近一小時註冊帳號數等等,這些指標一般有一段時間跨度,是某種狀態或聚合,很難在實時風控過程當中根據原始數據進行計算,由於風控的規則引擎每每是無狀態的,不會記錄前面的結果。
同時,這部分原始數據量很大,由於用戶活動的原始數據都要傳過來進行計算,因此這部分每每由一個流式大數據系統來完成。在這裏咱們選擇Flink,Flink是當今流計算領域無可爭議的No.1,不論是性能仍是功能,都能很好的完成這部分工做。
這部分數據流很是簡單:
Flink訂閱Kafka,完成原子粒度的聚合;
注:Flink僅完成原子粒度的聚合是和規則的動態變動邏輯相關的。舉例來講,在註冊場景中,運營同窗會根據效果一會要判斷某IP最近1小時的註冊帳號數,一會要判斷最近3小時的註冊帳號數,一會又要判斷最近5小時的註冊帳號數……也就是說這個最近N小時的N是動態調整的。那Flink在計算時只應該計算1小時的帳號數,在判斷過程當中根據規則來讀取最近3個1小時仍是5個1小時,而後聚合後進行判斷。由於在Flink的運行機制中,做業提交後會持續運行,若是調整邏輯須要中止做業,修改代碼,而後重啓,至關麻煩;同時由於Flink中間狀態的問題,重啓還面臨着中間狀態可否複用的問題。因此假如直接由Flink完成N小時的聚合的話,每次N的變更都須要重複上面的操做,有時還須要追數據,很是繁瑣。
經過把數據計算和邏輯判斷拆分開來並引入Flink,咱們的風控系統能夠應對極大的用戶規模。
前面的東西靜態來看是一個完整的風控系統,但動態來看就有缺失了,這種缺失不體如今功能性上,而是體如今演進上。即若是從動態的角度來看一個風控系統的話,咱們至少還須要兩部分,一是衡量系統的總體效果,一是爲系統提供規則/邏輯升級的依據。
在衡量總體效果方面,咱們須要:
在爲系統提供規則/邏輯升級依據方面,咱們須要:
這即是分析系統的角色定位,在他的工做中有部分是肯定性的,也有部分是探索性的,爲了完成這種工做,該系統須要儘量多的數據支持,如:
這是一個典型的大數據分析場景,架構也比較靈活,我僅僅給出一種建議的方式。
相對來講這個系統是最開放的,既有固定的指標分析,也可使用機器學習/數據分析技術發現更多新的規則或模式,限於篇幅,這裏就不詳細展開了。
1.從 Drools 規則引擎到風控反洗錢
2.基於Groovy的規則腳本引擎實戰
3.基於規則的風控系統
4.網易嚴選風控實踐
5.網易考拉規則引擎平臺架構設計與實踐
6.一個開源java風控系統
本文爲雲棲社區原創內容,未經容許不得轉載。