#618復盤系列# | 交易風控系統架構演變

「摘要」系統優化改造主要思路:

1、去關係型資料庫

2、風控引擎業務模型升級優化

3、其他,針對系統存在的其他具體痛點,實施具體改造……

背景介紹

金融系統網路,從業務層到交易層,需要若干系統間協同處理,相互支持,相互依賴,共同完成一筆看似簡單的業務處理。風控在這其中是被若干系統同步調用的葉子節點,並發量高而且要同步實時完成邏輯複雜的風險判斷,給出風險決策。

老交易風控完全依賴關係型資料庫,響應速度慢,抗高並發能力差;內部系統間數據耦合嚴重,不易擴展改造;

不斷增加的業務量,持續增長的規則數,越來越慢的響應速度……亟待系統升級改造,一年前我們開始了系統優化之路……

具體優化措施

一、數據層

內部系統流水數據解耦和

風控系統用到的數據大體分3類:實時業務流水數據;離線風險特徵數據;配置類數據。其中實時業務流水數據是無邊界且數據量極大的數據,也是我們優化的重點,這類數據從使用者的角度,主要分:

  • 實時決策系統(從現在往前n段時間即可)
  • 風控運行系統,供案件分析,人工審核用(需要歷史全量數據)
  • 分析師風險分析用(雖然不需要歷史全量數據,但是比實時系統需要更長的有效數據)
  • 其他非實時系統。

老系統數據架構

如上圖所示,線上實時庫數據與各類內部系統存在耦合關係:

  • Sars系統每天凌晨抽數抽到實時系統性能下降;
  • Mysql從庫當大數據用了,定時炸彈隨時引爆;
  • 實時決策強依賴Mysql,性能差待優化。

所以首先要做的就是:各內部系統數據解耦合。

解耦整體思路:對實時系統接入的所有流水數據做完數據清洗、預處理後,MQ非同步方式發出來,其他內部系統來訂閱,根據自己系統的特點選擇不同的存儲方案。

優化後數據架構

數據解耦後,就可以放心大膽的進行實時系統的優化改造。目前改造的效果:新接入場景所有數據基本不需要再寫入關係型資料庫。

風控實時系統:去關係型資料庫,全面緩存化

  • 流水數據

流水數據聚合統計指標是對mysql影響最大的,也是我們去關係型數據,全面緩存化最有難度的改造。

目前系統用到的方案有兩種,二者相互補充,基本做到大場景所有聚合類統計全部緩存化。

方案一:清洗流水數據,緩存明細,解析聚合SQL轉化為代碼邏輯結合緩存數據實現聚合統計。

方案二:接入流式實時數據計算系統。

方案對比:

  • 離線風險數據

這類數據的使用特點:查詢相對簡單,沒有複雜聚合統計。整體思路:最底層(無需業務層感知)實現關係型資料庫與緩存的數據同步。

寫庫優化

Mysql目前架構是通過cds實現的主從讀寫分離,老業務接入的數據還是要寫MySQL, 單點主庫在高並發情況下出現寫庫瓶頸。

優化方案:

  • MQ非同步降級(大部分聚合統計都已經切緩存,入庫延遲對整體系統業務影響不大)。
  • 業務層合併、批量入庫,減少IO。

優化後,618大促峰值,比去年雙11量大的情況下,非同步寫庫無任何積壓,無任何入庫延遲!

二、引擎Drools版本升級、JVM調優

引擎採用支持熱部署的Drools,隨著規則及業務量的增加,引擎java fullGc頻繁,yongGc耗時過長,嘗試調整各類參數都無法解決問題。

如下優化項完成後,java虛擬機各類GC表現正常,TP999優化效果非常明顯:

  • Drools升級到最新7.0版本,session採用無狀態替代原有有狀態session。
  • Jvm升級到1.8,採用java8默認垃圾收集機制。

三、交易風控3.0– 風控引擎業務模型升級優化

交易風控模型2.0到3.0演進

引入規則包的概念

通過規則包前置條件,可以將規則劃分到更小的規則包,使每條規則能夠更精確的處理自己應該處理的業務請求,提高系統性能。

引入指標模板的概念(通過Rhythm模板引擎實現)

解決問題

  • 多規則間,指標重複配置,復用性差。
  • 相同指標重複收集,浪費系統資源,影響系統效率。
  • 分析師可直接通過界面靈活配置規則。研發負責開發指標模板即可,一勞永逸,節約研發成本。

其他改造方案

1、網關代碼重構:通過模板模式、工廠模式,將不同場景間的定製處理解耦和;拆分場景也便於系統性能監控。

2、自降級方案:系統一旦出現問題,系統可以自降級,及時給上游返回結果,流水數據會存下來,後面非同步再跑引擎。

……

優化改造效果

1、從系統性能角度

在規則數量翻2倍,業務請求量翻3倍的情況下,全場景系統響應TP99降低到原來的1/5,性能提升顯著。過去兩個大促,全部順利經受住考驗……

2、從研發人力角度

隨著交易風控3.0及洞察系統的上線及穩定運行,之前專門設立的都需要1個研發人力支持的:規則開發介面人、線上值班介面人,都已經取消。

後續

目前系統還有優化空間,優化改造之路,我們將持續不斷走下去……

想了解更多乾貨請關注微信公眾號:京東金融技術說(JDJRTechTalk)


推薦閱讀:

「風險」、「威脅」和「漏洞利用」,其實差別很大
為什麼要提供自有資金
宜信的風控和銀行風控哪個強一些,為什麼?

TAG:金融科技 | 交易 | 风险控制 |