為什么我們選擇基于 Flink 搭建實時個性化營銷平臺?
在大數(shù)據(jù)時代,金融科技公司通常借助消費數(shù)據(jù)來綜合評估用戶的信用和還款能力。這個過程中,某些中介機構(gòu)會搜集大量的號并進行“養(yǎng)號”工作,即在一年周期里讓這些號形成正常的消費、通訊記錄,目的是將這些號“培養(yǎng)”得非常健康,然后賣給有欺詐意向的用戶。這類用戶通過網(wǎng)上信息提交審核,騙到貸款后就“銷聲匿跡”了。
那么,如何更快速地預(yù)防或甄別可能的欺詐行為?如何從超大規(guī)模、高并發(fā)、多維度的數(shù)據(jù)中實現(xiàn)在線實時反欺詐?這些都是金融科技公司當(dāng)下面臨的主要難題。針對這些問題,InfoQ 專訪玖富集團,揭秘基于 Flink 的超大規(guī)模在線實時反欺詐技術(shù)是如何快速處理海量數(shù)據(jù)并打造良好的用戶體驗。
一、在線實時反欺詐的難點和痛點
有三類常見的金融欺詐場景:一是材料偽造。這是早年需要提交紙質(zhì)材料時期常見的欺詐;二是“養(yǎng)號”,常見于中介機構(gòu),通過收取服務(wù)費來維護大量號的健康狀態(tài),賣給有欺詐意向的用戶進行貸款申請;三是來自于專業(yè)黑客的威脅,他們通過尋找系統(tǒng)、流程的漏洞等方式,對賬號安全構(gòu)成攻擊。
金融科技因其虛擬性特征,主要風(fēng)險集中在兩方面:一是欺詐風(fēng)險,二是信用風(fēng)險,因此核心的風(fēng)險評估流程就是反欺詐和信用評估。對于反欺詐而言,信息核實、高危人群攔截和實時計算、識別、決策是其核心風(fēng)控手段。而對于信用風(fēng)險的評估,需要內(nèi)外兼修。
玖富集團對用戶的信用評級主要由玖富集團自主研發(fā)的火眼評分 - 彩虹評級系統(tǒng)動態(tài)評估用戶信用情況,覆蓋玖富集團 C 端全線借貸服務(wù),自上線以來表現(xiàn)穩(wěn)定,區(qū)分效果明顯。外部也參考了騰訊、阿里等評分作為參考。
目前,在線實時反欺詐會面臨各類痛點,在玖富集團業(yè)務(wù)場景中,主要痛點集中在以下三方面:
一是低延時要求。越是大量數(shù)據(jù)需要計算,所需時間越長。在網(wǎng)貸盛行的年代,經(jīng)常流傳的一句口號是“三分鐘授信,一分鐘放款”,甚至有的公司打出“一分鐘授信,半分鐘放款”。但是在大數(shù)據(jù)場景中,數(shù)據(jù)分析與處理對低延時的需求越來越高。
二是超大規(guī)模實時計算要求。大數(shù)據(jù)場景中,需要對大規(guī)模數(shù)據(jù)做到實時計算,玖富集團內(nèi)部代號為“伏羲”的 Flink 計算平臺每天要在接近 510TB 的數(shù)據(jù)集上做快速的檢索和計算,用戶的行為改變會導(dǎo)致數(shù)據(jù)發(fā)生變化,進而影響決策。因此對超大規(guī)模數(shù)據(jù)的實時計算需求越來越高,確保用戶在出現(xiàn)欺詐行為時能夠及時中止交易。
三是多維度、高并發(fā)要求。隨著同一業(yè)務(wù)場景下用戶規(guī)模的擴增,用戶產(chǎn)生的數(shù)據(jù)也形成爆發(fā)性增長。在金融場景下,亟需一套完整系統(tǒng)可以實現(xiàn)按照數(shù)據(jù)各個維度分析得出風(fēng)險評估報告,根據(jù)用戶特性挖掘用戶潛在需求等;系統(tǒng)獲取用戶產(chǎn)生數(shù)據(jù)最簡單有效的方法就是流水式數(shù)據(jù),單個數(shù)據(jù)包里包含了發(fā)生時間點的各個維度的所有信息量,這種場景的特性之一就是數(shù)據(jù)高并發(fā),因此對時效要求比較高的數(shù)據(jù)分析來說是一個非常巨大的挑戰(zhàn)。
針對目前在線實時反欺詐的痛點,玖富集團采用基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng),在提升用戶體驗的同時,也降低了商業(yè)損失。
二、基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng)
1、為什么選擇 Flink?
Flink 開源項目是近一兩年大數(shù)據(jù)處理領(lǐng)域冉冉升起的一顆新星。雖然是后起之秀,但在國內(nèi)許多大型互聯(lián)網(wǎng)企業(yè)的工程實踐中均有被應(yīng)用,如阿里、美團、京東等。那么,在玖富的大數(shù)據(jù)技術(shù)體系迭代中,為何會選用 Flink 這套流數(shù)據(jù)處理引擎呢?
從技術(shù)語言角度:Spark 的技術(shù)語言主要是 JAVA 和 Scala,尤其是對 Scala 語言有一定要求。而 Flink 主要是基于 JAVA,編程語言更成熟,通用度更高,修改代碼也更容易。所以從語言層面綜合來看,F(xiàn)link 相對較好。Spark、Storm、Flink 技術(shù)選型對比如下:

從時延和吞吐量的角度:Flink 是純粹的流式設(shè)計,流式大數(shù)據(jù)技術(shù)的計算是邏輯先行,即先定義計算邏輯,當(dāng)數(shù)據(jù)流過時,實時計算并保留計算結(jié)果;當(dāng)需要使用數(shù)據(jù)時,直接調(diào)用計算結(jié)果即可,無需再次計算。流式大數(shù)據(jù)技術(shù)可廣泛應(yīng)用于對數(shù)據(jù)處理時效性要求較高的場景,如實時交易反欺詐。Flink 的時延和吞吐量方面的性能表現(xiàn)較好,能滿足玖富集團對超大規(guī)模數(shù)據(jù)流在線實時計算的要求。相比之下,Spark 主要是小批量處理模式,無法滿足反欺詐系統(tǒng)實時處理大規(guī)模、多維度、高并發(fā)的數(shù)據(jù)流的要求。Storm 雖然是基于流處理,但與 Flink 的性能數(shù)據(jù)相比,F(xiàn)link 吞吐量約為 Storm 的 3~5 倍,F(xiàn)link 在滿吞吐時的延遲約為 Storm 的一半。綜合來看,F(xiàn)link 框架本身性能優(yōu)于 Storm。
從與現(xiàn)有生態(tài)體系結(jié)合的角度:Flink 與超大型計算和存儲(HBase)的結(jié)合比 Spark 和 Storm 要好很多,同時接口也更友好。HBase 是整個系統(tǒng)預(yù)查功能的緩存基礎(chǔ),預(yù)查功能是降低系統(tǒng) p99 延遲最重要的技術(shù)優(yōu)化。
總的來說,F(xiàn)link 是一個設(shè)計良好的框架,它不但功能強大,而且性能出色。此外它還有一些比較好的設(shè)計,比如的內(nèi)存管理和流控。但是,由于 Flink 目前成熟度較低,還存在不少問題,比如 SQL 支持比較初級,無法像 Storm 一樣在不停止任務(wù)的情況下動態(tài)調(diào)整資源;不能像 Spark 一樣提供很好的 Streaming 和 Static Data 的交互操作等。
2、超大規(guī)模在線實時反欺詐系統(tǒng)架構(gòu)
線上信貸的基本流程是:由用戶通過 App 發(fā)起需求,App 會要求用戶填寫與授權(quán)相關(guān)的信息,主要目的是評估用戶的信用額度。之后用戶數(shù)據(jù)會進入后臺數(shù)據(jù)系統(tǒng)進行反欺詐和信用的評估,審核通過,用戶會收到信息,賬戶額度開通。基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng)架構(gòu)如下:

玖富基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng)的架構(gòu)分為兩部分:數(shù)據(jù)部分和決策部分。整個系統(tǒng)的運作相當(dāng)于一個工作流,用戶的數(shù)據(jù)信息以流的形式由一個節(jié)點傳到下一個節(jié)點,在流轉(zhuǎn)過程中會產(chǎn)生大量的決策信息,根據(jù)條件做出篩選和判斷,并把判斷結(jié)果快速推行到下一個節(jié)點,從而實時判斷用戶的數(shù)據(jù)情況,進而決定是否放款給用戶。
數(shù)據(jù)部分需要最快速度的加工處理,整個數(shù)據(jù)處理由四部分完成。
第一部分是把數(shù)據(jù)從前端最快速地傳遞到后端。基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng)首先要把數(shù)據(jù)通路加寬,允許更多信息同時涌入數(shù)據(jù)處理中。
第二部分是大型的列式存儲集群,主要由 HBase 實現(xiàn)。HBase 是運行在 Hadoop 上的 NoSQL 數(shù)據(jù)庫,它是一個分布式和可擴展的大數(shù)據(jù)倉庫,能夠利用 HDFS 的分布式處理模式,并從 Hadoop 的 MapReduce 程序模型中獲益,最關(guān)鍵的是可以提供高并發(fā)讀寫操作的支持。HBase 是整個架構(gòu)最基礎(chǔ)的保障,當(dāng)大量數(shù)據(jù)涌入時能實現(xiàn)快速存儲,降低寫入和讀取數(shù)據(jù)過程對系統(tǒng)架構(gòu)的過度依賴。
HBase 里有大量的索引,如一級索引、二級索引等,對 HBase 的讀寫緩存進行定制化改造,保證預(yù)查功能的實現(xiàn)。通過 App 或其他渠道獲取用戶的行為數(shù)據(jù)信息,進而推測用戶的意愿,然后系統(tǒng)開始做預(yù)查詢,把用戶的相關(guān)信息放到緩存里,這樣當(dāng)用戶在前端觸發(fā)操作時,后端直接從緩存里調(diào)用數(shù)據(jù)開展計算,極大地提升了數(shù)據(jù)處理速度。在 HBase 緩存里,基本能夠?qū)崿F(xiàn) 99% 的數(shù)據(jù)信息被命中,這依賴于系統(tǒng)強大的用戶感知能力。
第三部分就是計算引擎,主要由 Flink 完成。計算引擎分為兩部分,一個是過濾引擎,主要是在大規(guī)模、高并發(fā)數(shù)據(jù)流中對用戶信息做不同維度的定制化過濾,目的是降低整個數(shù)據(jù)計算的量級。另一個是函數(shù)引擎,通過高度抽象的方法,定制化一些性能非常好的函數(shù),并把這些函數(shù)加載到引擎中去,可以避免開發(fā)人員自行修改代碼。過濾引擎和函數(shù)引擎的結(jié)合,使整個用戶的數(shù)據(jù)量級大幅降低,再結(jié)合一些高效的代碼,進一步降低延遲。
Flink 的核心是基于流執(zhí)行引擎,F(xiàn)link 提供了諸多更高抽象層的 API 以方便用戶編寫分布式任務(wù),常用的三類 API 如下:
DataSet API,對靜態(tài)數(shù)據(jù)進行批處理操作,將靜態(tài)數(shù)據(jù)抽象成分布式的數(shù)據(jù)集,用戶可以方便的采用 Flink 提供的各種操作符對分布式數(shù)據(jù)集進行各種操作。
DataStream API,對數(shù)據(jù)流進行流處理操作,將流式的數(shù)據(jù)抽象成分布式的數(shù)據(jù)流,用戶可以方便的采用 Flink 提供的各種操作符對分布式數(shù)據(jù)流進行各種操作。
Table API,對結(jié)構(gòu)化數(shù)據(jù)進行查詢操作,將結(jié)構(gòu)化數(shù)據(jù)抽象成關(guān)系表,并通過 Flink 提供的類 SQL 的 DSL 對關(guān)系表進行各種查詢操作。
玖富根據(jù)自身業(yè)務(wù)特點,需要對超大規(guī)模在線實時數(shù)據(jù)流進行快速處理,因此采用 DataStream API,追求更低的延遲。
第四部分是算力。算力依賴于 Hadoop 集群,通過 YARN 實現(xiàn)對整個資源的管理,橫向來說具有很好的可擴展性。YARN 的基本思想是將資源管理和作業(yè)調(diào)度 / 監(jiān)控的功能分解為單獨的守護進程,包括兩個部分,一個是全局的資源調(diào)度(RM),另一個是針對每個應(yīng)用程序的調(diào)度(AM)。YARN 使得 Hadoop 不再局限于僅支持 MapReduce 一種計算模型,而是可無限融入多種計算框架,且對這些框架進行統(tǒng)一管理和調(diào)度。YARN 架構(gòu)如下:

3、系統(tǒng)架構(gòu)迭代
基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng),在玖富集團內(nèi)部經(jīng)歷過一次比較重大的架構(gòu)迭代。玖富集團最初是以 1s 內(nèi)快速得出風(fēng)控結(jié)果為目標(biāo),但是用戶體驗不夠快,于是整個系統(tǒng)進行了一次技術(shù)升級,增加了預(yù)查技術(shù)。預(yù)查技術(shù)包括檢索和計算兩部分,其核心依賴于 Flink 強大的并發(fā)能力。在大量數(shù)據(jù)中做快速預(yù)查,利用 Flink 并發(fā)能力進行數(shù)據(jù)覆蓋,最后在緩存里命中結(jié)果,從而不必重新進行網(wǎng)絡(luò) I/O 查詢、等待返回的過程。經(jīng)過部分計算框架升級,最終系統(tǒng)實現(xiàn)了 p99 延遲由 1s 降為 100ms 的優(yōu)化。
4、AI 技術(shù)的應(yīng)用
在大數(shù)據(jù)時代,數(shù)據(jù)的質(zhì)量直接影響大數(shù)據(jù)分析處理方法的效果,也影響決策過程。通過分析海量數(shù)據(jù),可以從中發(fā)現(xiàn)數(shù)據(jù)集中隱含的模式和規(guī)律。但異常數(shù)據(jù)會對分析過程產(chǎn)生重大干擾。在基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng)中,利用機器學(xué)習(xí)進行異常點檢測。異常點檢測(又稱離群點檢測)是找出其行為不同于預(yù)期對象的一個檢測過程。這些對象被稱為異常點或者離群點。在大數(shù)據(jù)中的異常數(shù)據(jù)存在如下特點:與正常數(shù)據(jù)的表現(xiàn)有明顯的差異;其產(chǎn)生機制與正常數(shù)據(jù)不同,可能為未知方式;數(shù)據(jù)維度較高。異常點檢測在信用卡欺詐檢測中應(yīng)用較多,當(dāng)用戶數(shù)量非常多時,其中一些低信用值的用戶需要被識別出來,利用機器學(xué)習(xí)進行異常值檢測,把信用值低的用戶篩選出來,再進行人工確認(rèn)。
在基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng)中也應(yīng)用了 AI 知識圖譜技術(shù)。社會是由大大小小的群體組成,同理用戶也有這樣的群體特點,用數(shù)據(jù)來構(gòu)建這些群體的關(guān)系,通過圖的分割與檢索這兩大類算法深入挖掘數(shù)據(jù)價值。在實際應(yīng)用中,如果一個用戶的信用非常差,已經(jīng)被列入黑名單,那么與他有關(guān)系的用戶都需要重點排查。根據(jù)用戶的行為將用戶進行分類,即聚類。各式各樣的聚類算法很多,然后根據(jù)用戶的信息進行圖的分割,確定每個人的風(fēng)險系數(shù),也可以通過一些手段打通優(yōu)質(zhì)圈層的通路,引導(dǎo)優(yōu)質(zhì)圈層進行信息交互。
三、基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng)的未來規(guī)劃
對于該套在線實時反欺詐系統(tǒng)的未來規(guī)劃,玖富第一步會針對 Flink 技術(shù)本身,結(jié)合玖富在技術(shù)、場景等方面的積累,把基于 Flink 的超大規(guī)模在線實時反欺詐系統(tǒng)打造成一款數(shù)據(jù)產(chǎn)品,使其具備向外輸出數(shù)據(jù)資產(chǎn)和數(shù)據(jù)處理的能力。
其次,玖富技術(shù)團隊也會持續(xù)投入人力在系統(tǒng)的功能優(yōu)化上,并把它做成一個開源的產(chǎn)品推向社區(qū),讓更多開發(fā)人員可以直接使用這個系統(tǒng)。
最后,通過技術(shù)的優(yōu)化進一步提升整個系統(tǒng)的性能,目前該系統(tǒng)的 p99 延遲是 100ms,未來玖富的下一項目標(biāo)是實現(xiàn) p99 延遲是 50ms。
