個人線上經驗不是很多酝陈,我做了風控系統(tǒng)之后营罢,時常在想如何將flink,spark, clickhouse 等應用到風控系統(tǒng)中仲智。 這里不談flink 具體技術买乃。
需求:? 風控系統(tǒng)集成flink
首先,我們想想flink 是做什么的:
1. 實時
可以實時統(tǒng)計龐大的數據流, 并支持各種時間窗口钓辆。Flink CEP 可以天然當作風控規(guī)則引擎來用剪验,當然flink CEP弊端也是顯而易見的。
2. 批量
可以批量統(tǒng)計龐大的數據前联。
這個是我大概對flink 的印象(“能干什么”),? 那么如何將flink 生態(tài)圈用在我們目前風控系統(tǒng)呢功戚? 我們風控系統(tǒng)設計比較簡單,大致前兩篇文章已經寫了似嗤。主要包括規(guī)則引擎和計算引擎 兩個部分啸臀。
1. 規(guī)則引擎 采用 drools, 支持動態(tài)規(guī)則的配置
2. 采用redis 做基于窗口的計算引擎烁落。
顯然如果使用flink 我們將風控分為實時風控和批量風控乘粒,flink 在他們中充當著不同的用途。
1. 在批量風控中伤塌,flink 可以用來計算衍生變量谓厘,比如 每張卡在一天消費的金額, 或者一張卡在一個商戶的消費金額寸谜。 在跑批量風控之前 flink 可以快速的將這天的衍生變量和衍生變量之間關系(平均值,百分比等) 算出來属桦。然后在使用drools 過規(guī)則引擎熊痴。 衍生變量是規(guī)則引擎中的一個變量條件
2. 在實時風控中, flink 可以用來實時 計算衍生變量的值, 這個和批量風控比較類似聂宾。 但是需要考慮是窗口的因素. 在批量風控中果善,我們默認窗口的步長是一天,并且可以支持的配置步長是 N * 一天系谐, 其中N 是整數巾陕。
實時默認的步長讨跟,是根據窗口的大小。比如5分鐘窗口鄙煤,默認步長就是1分鐘晾匠。 可以支持的步長是? N*1分鐘。 步長應該小于窗口的大小梯刚。 按照這種方法凉馆,我們就可以將flink 累計的窗口種類縮小,并且都支持默認的步長亡资。 然后將算出來的累計放到aerospike 中澜共, 或者redis 中。 具體每個規(guī)則配置的步長在進行判斷的時候做計算锥腻。
這樣 flink 的窗口種類就縮小了嗦董,job 的數據量就少了很多:
1. 5分鐘窗口,1分鐘步長
2. 10 分鐘窗口, 1 分鐘步長
3. 30 分鐘窗口瘦黑, 1分鐘步長
4. 2小時窗口京革, 5分鐘步長
5. 6個小時, 10分鐘步長
6. 一天的滾動窗口 (批量風控)
7. 一個月的滾動窗口(批量風控)
這樣flink 通過提交job 的形式供璧,將這些都計算好存崖。 風控系統(tǒng)可以直接拿過來使用,而不用大量的計算了睡毒。這是我對使用flink這樣的計算引擎的理解和使用来惧。 這些是我的構想,沒有實際的實踐和上線演顾。