風控核心子域——名單服務構建及挑戰

是咕咕雞發表於2023-02-01

引言

名單服務是風控架構中重要子域,對風險決策的效能、使用者體驗、成本管控、風險治理沉澱都有重要影響,本文將詳細介紹名單服務設計思路和實現。

背景

什麼是名單?

名單服務通常有幾個部分組成:

風險型別

  • 黑名單:絕對會被拒絕的使用者。大部分是歷史資料清洗出來作弊或者破壞業務的使用者,這部分使用者對企業無價值且放之進入會破壞生態平衡
  • 灰名單:灰名單上的客戶需要進一步稽核。這部分使用者可能存在某些風險,但是沒有明確的證據表明他們是“黑”的
  • 白名單:這部分客戶是正常使用者,是企業數分人員基於歷史表現清洗出來的合規高價值使用者,可以直接放行

名單維度

  • 主鍵:手機號、使用者 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/ >

若有收穫,就點個贊吧

相關文章