引言
名單服務是風控架構中重要子域,對風險決策的效能、使用者體驗、成本管控、風險治理沉澱都有重要影響,本文將詳細介紹名單服務設計思路和實現。
背景
什麼是名單?
名單服務通常有幾個部分組成:
風險型別
- 黑名單:絕對會被拒絕的使用者。大部分是歷史資料清洗出來作弊或者破壞業務的使用者,這部分使用者對企業無價值且放之進入會破壞生態平衡
- 灰名單:灰名單上的客戶需要進一步稽核。這部分使用者可能存在某些風險,但是沒有明確的證據表明他們是“黑”的
- 白名單:這部分客戶是正常使用者,是企業數分人員基於歷史表現清洗出來的合規高價值使用者,可以直接放行
名單維度
- 主鍵:手機號、使用者 ID、身份證號、IP、裝置標識、wifi MAC 地址等等
- 業務域:全域、業務子域、細分領域等等,這邊需要字典服務來列舉出需要管控的粒度和場景
時間維度
名單是有一定的生效期的,不同的行為會導致鎖定期不一樣,生效時間可以靈活設定
為什麼需要名單服務?
- 最易構建的決策能力:風控前期的構建是比較依賴名單決策的,策略數分人員透過歷史資料判定哪些是“壞使用者”,直接將其儲存到名單庫中,後續請求直接在第一道名單決策中踢出,而不需要執行後續策略在判定一次。策略相對名單來說是非常“重”的,且名單服務構建簡單便捷,省時省力。
- 效能考慮:名單判定一般是在決策流的第一道,試想,對企業服務來說,大部分使用者其實都是正常的,如果每個使用者的請求都過一遍策略,對成本是極大的浪費,同時對效能來說也是極大的挑戰。此時名單服務透過白黑名單,將大部分使用者直接決策出去,只對不明確的客戶和有風險的客戶來做決策,極大地減少了開銷。
設計實現
名單服務的特點如下:
- 名單資料來源:可以是實時產生、離線跑批生產、運營人員手動批次匯入等等,形式多樣
- 效能足夠好:屬於決策流入口必過服務之一,即最大流量衝擊,需要經得起峰值壓力,RT 要足夠小
- 穩定性:高效能同時還需要高質量保證,如果名單服務出問題,後果不堪設想,流量全部流放到下游,可能會出現服務雪崩
- 質量保證:任何名單新增到名單庫中都需要重視,隨意的新增可能會給企業帶來難以想象的損失,所以得有完備的稽核記錄及新增原因,最重要的是生效時間的設定
整體名單服務的資料流圖如下所示,重要節點會作明確說明:
實時鏈路名單查詢設計
考慮到名單有時效性及效能要求,且名單資料結構整體簡單(多維度,單個維度儲存內容小),選擇 Redis 儲存名單資料非常適合快速查詢,資料結構如下:
說明:
- 採用 Redis Hash 結構儲存資料
- 為何不用 TTL 來儲存過期時間?:一是
expire
最大過期時間不能超過Integer.MAXVALUE
不能滿足長時間的過期訴求;二來 Redis 本身定位是快取,不是永久儲存,即資料是可丟失的,需要自己保證服務的高可用
依賴於 Redis 叢集良好的效能,基本能滿足線上峰值高 QPS 查詢需求,且 RT 能很好的控制在 10 ms 以內。如上所說就是要保障高穩定性需求,如何保障名單資料的高可用是首要問題。
高可用設計
Redis 本身定位是快取,不能永久儲存資料,且叢集癱瘓或者資料部分缺失應對業務影響較小(能及時恢復的情況下,運維保障叢集的可用性),如下是高可用資料設計架構:
說明:
- T+1 Job 保證資料穩定:每天離線任務全量覆蓋,從關聯式資料庫 PG/MySQL 中抽數 push 到 Redis 中即可
- Redis 叢集出問題:不管是老叢集重啟還是更換到新叢集,先用 RDB 恢復資料,保證線上可用,再立即執行離線任務做精確覆蓋(T 日的資料丟失需要立即覆蓋),考慮到讀寫同時進行可能會有問題,需要分叢集切流
同時需要關注多執行緒問題,同一個維度,在同一時間可能存在批次更新情況,尤其是離線任務恢復時,歷史資料會存在對一個維度多次更新問題,不考慮多執行緒問題可能會導致資料被篡改。
資料安全審計
名單庫的風險點在於:隨意地新增名單可能導致“壞使用者”暢通無阻,“好使用者”無法在進入業務流程
名單的生產來源及定性原因不明確,線上在排查問題時也只能乾瞪眼,為了能回溯名單操作,需要做到如下幾點:
- 寫日誌:任何寫動作需要追加日誌,且需要做持久換儲存,方便做名單時序資料分析
- 黑名單 & 白名單需要審計:尤其是線上單獨新增這種,必須指明原因且要對操作負責
- 跑批任務審計:離線任務或者演算法推數等需要控量,否則在迭代更新過程中出現 BUG 問題,導致名單資料猛增,後果不堪設想
異動監控
監控重中之重。
能第一時間感知問題,監控的維度如下:
- 決策層面監控:灰、白、黑名單決策數量監控
- 後設資料產出層面監控:任何名單猛增或猛跌都是需要去定性是否正常
- 拉黑踢白:沒有永久犯錯的人,也沒有永久的好人,名單之間的流動也需要關注
總結
名單服務在風控域中是最重要的子域之一,是風控流量的“閘道器”。名單庫對整個風控決策的穩定性,效能提升起到決定性影響。
同時名單服務也是“高危”的,如果使用不當,可能會給企業良好使用者帶來困擾,給那些“黑產”敞開門戶,需要做好資料稽核及異動監控。
往期精彩
歡迎關注公眾號:咕咕雞技術專欄
個人技術部落格:https://jifuwei.github.io/ >
若有收穫,就點個贊吧