天天看點

基于 Flink 的超大規模線上實時反欺詐系統的建設與實踐

作者:關賀宇

在大資料時代,金融科技公司通常借助消費資料來綜合評估使用者的信用和還款能力。這個過程中,某些中介機構會搜集大量的号并進行“養号”工作,即在一年周期裡讓這些号形成正常的消費、通訊記錄,目的是将這些号“培養”得非常健康,然後賣給有欺詐意向的使用者。這類使用者通過網上資訊送出稽核,騙到貸款後就“銷聲匿迹”了。

那麼,如何更快速地預防或甄别可能的欺詐行為?如何從超大規模、高并發、多元度的資料中實作線上實時反欺詐?這些都是金融科技公司當下面臨的主要難題。針對這一問題,玖富集團打造基于 Flink 的超大規模線上實時反欺詐系統,快速處理海量資料并實作良好的使用者體驗。

線上實時反欺詐的難點和痛點

常見的金融欺詐場景有三類:一是材料僞造。這是早年需要送出紙質材料時期常見的欺詐;二是“養号”,常見于中介機構,通過收取服務費來維護大量号的健康狀态,賣給有欺詐意向的使用者進行貸款申請;三是來自于專業黑客的威脅,他們通過尋找系統、流程的漏洞等方式,對賬号安全構成攻擊。

金融科技因其虛拟性特征,主要風險集中在兩方面:一是欺詐風險,二是信用風險,是以核心的風險評估流程就是反欺詐和信用評估。對于反欺詐而言,資訊核實、高危人群攔截和實時計算、識别、決策是其核心風控手段。而對于信用風險的評估,需要内外兼修。

玖富集團對使用者的信用評級主要由玖富集團自主研發的火眼評分 - 彩虹評級系統動态評估使用者信用情況,覆寫玖富集團 C 端全線借貸服務,自上線以來表現穩定,區分效果明顯。外部也參考了騰訊、阿裡等評分作為參考。

目前,線上實時反欺詐會面臨各類痛點,在玖富集團業務場景中,主要痛點集中在以下三方面:

  • 一是低延時要求。越是大量資料需要計算,所需時間越長。在網貸盛行的年代,經常流傳的一句口号是“三分鐘授信,一分鐘放款”,甚至有的公司打出“一分鐘授信,半分鐘放款”。但是在大資料場景中,資料分析與處理對低延時的需求越來越高。
  • 二是超大規模實時計算要求。大資料場景中,需要對大規模資料做到實時計算,玖富集團内部代号為“伏羲”的 Flink 計算平台每天要在接近 510TB 的資料集上做快速的檢索和計算,使用者的行為改變會導緻資料發生變化,進而影響決策。是以對超大規模資料的實時計算需求越來越高,確定使用者在出現欺詐行為時能夠及時中止交易。
  • 三是多元度、高并發要求。随着同一業務場景下使用者規模的擴增,使用者産生的資料也形成爆發性增長。在金融場景下,亟需一套完整系統可以實作按照資料各個次元分析得出風險評估報告,根據使用者特性挖掘使用者潛在需求等;系統擷取使用者産生資料最簡單有效的方法就是流水式資料,單個資料包裡包含了發生時間點的各個次元的所有資訊量,這種場景的特性之一就是資料高并發,是以對時效要求比較高的資料分析來說是一個非常巨大的挑戰。

針對目前線上實時反欺詐的痛點,玖富集團采用基于 Flink 的超大規模線上實時反欺詐系統,在提升使用者體驗的同時,也降低了商業損失。

基于 Flink 的超大規模線上實時反欺詐系統

1、為什麼選擇 Flink?

Flink 開源項目是近一兩年大資料處理領域冉冉升起的一顆新星。雖然是後起之秀,但在國内許多大型網際網路企業的工程實踐中均有被應用,如阿裡、美團、京東等。那麼,在玖富的大資料技術體系疊代中,為何會選用 Flink 這套流資料處理引擎呢?

■ 從技術語言角度:

Spark 的技術語言主要是 JAVA 和 Scala,尤其是對 Scala 語言有一定要求。而 Flink 主要是基于 JAVA,程式設計語言更成熟,通用度更高,修改代碼也更容易。是以從語言層面綜合來看,Flink 相對較好。

基于 Flink 的超大規模線上實時反欺詐系統的建設與實踐

Spark、Storm、Flink 技術選型對比

■ 從時延和吞吐量的角度:

Flink 是純粹的流式設計,流式大資料技術的計算是邏輯先行,即先定義計算邏輯,當資料流過時,實時計算并保留計算結果;當需要使用資料時,直接調用計算結果即可,無需再次計算。流式大資料技術可廣泛應用于對資料處理時效性要求較高的場景,如實時交易反欺詐。

Flink 的時延和吞吐量方面的性能表現較好,能滿足玖富集團對超大規模資料流線上實時計算的要求。相比之下,Spark 主要是小批量處理模式,無法滿足反欺詐系統實時處理大規模、多元度、高并發的資料流的要求。Storm 雖然是基于流處理,但與 Flink 的性能資料相比,Flink 吞吐量約為 Storm 的 3~5 倍,Flink 在滿吞吐時的延遲約為 Storm 的一半。綜合來看,Flink 架構本身性能優于 Storm。

■ 從與現有生态體系結合的角度:

Flink 與超大型計算和存儲(HBase)的結合比 Spark 和 Storm 要好很多,同時接口也更友好。HBase 是整個系統預查功能的緩存基礎,預查功能是降低系統 p99 延遲最重要的技術優化。

總的來說,Flink 是一個設計良好的架構,它不但功能強大,而且性能出色。此外它還有一些比較好的設計,比如良好的記憶體管理和流控。但是,由于 Flink 目前成熟度較低,還存在不少問題,比如 SQL 支援比較初級,無法像 Storm 一樣在不停止任務的情況下動态調整資源;不能像 Spark 一樣提供很好的 Streaming 和 Static Data 的互動操作等。

2、超大規模線上實時反欺詐系統架構

線上信貸的基本流程是:由使用者通過 App 發起需求,App 會要求使用者填寫與授權相關的資訊,主要目的是評估使用者的信用額度。之後使用者資料會進入背景資料系統進行反欺詐和信用的評估,稽核通過,使用者會收到資訊,賬戶額度開通。

基于 Flink 的超大規模線上實時反欺詐系統的建設與實踐

基于 Flink 的超大規模線上實時反欺詐系統架構

玖富基于 Flink 的超大規模線上實時反欺詐系統的架構分為兩部分:資料部分和決策部分。整個系統的運作相當于一個工作流,使用者的資料資訊以流的形式由一個節點傳到下一個節點,在流轉過程中會産生大量的決策資訊,根據條件做出篩選和判斷,并把判斷結果快速推行到下一個節點,進而實時判斷使用者的資料情況,進而決定是否放款給使用者。

資料部分需要最快速度的加工處理,整個資料處理由四部分完成。

第一部分是把資料從前端最快速地傳遞到後端。基于 Flink 的超大規模線上實時反欺詐系統首先要把資料通路加寬,允許更多資訊同時湧入資料進行中。

第二部分是大型的列式存儲叢集,主要由 HBase 實作。HBase 是運作在 Hadoop 上的 NoSQL 資料庫,它是一個分布式和可擴充的大資料倉庫,能夠利用 HDFS 的分布式處理模式,并從 Hadoop 的 MapReduce 程式模型中獲益,最關鍵的是可以提供高并發讀寫操作的支援。HBase 是整個架構最基礎的保障,當大量資料湧入時能實作快速存儲,降低寫入和讀取資料過程對系統架構的過度依賴。

HBase 裡有大量的索引,如一級索引、二級索引等,對 HBase 的讀寫緩存進行定制化改造,保證預查功能的實作。通過 App 或其他管道擷取使用者的行為資料資訊,進而推測使用者的意願,然後系統開始做預查詢,把使用者的相關資訊放到緩存裡,這樣當使用者在前端觸發操作時,後端直接從緩存裡調用資料開展計算,極大地提升了資料處理速度。在 HBase 緩存裡,基本能夠實作 99% 的資料資訊被命中,這依賴于系統強大的使用者感覺能力。

第三部分就是計算引擎,主要由 Flink 完成。計算引擎分為兩部分,一個是過濾引擎,主要是在大規模、高并發資料流中對使用者資訊做不同次元的定制化過濾,目的是降低整個資料計算的量級。另一個是函數引擎,通過高度抽象的方法,定制化一些性能非常好的函數,并把這些函數加載到引擎中去,可以避免開發人員自行修改代碼。過濾引擎和函數引擎的結合,使整個使用者的資料量級大幅降低,再結合一些高效的代碼,進一步降低延遲。

Flink 的核心是基于流執行引擎,Flink 提供了諸多更高抽象層的 API 以友善使用者編寫分布式任務,常用的三類 API 如下:

  • DataSet API,對靜态資料進行批處理操作,将靜态資料抽象成分布式的資料集,使用者可以友善的采用 Flink 提供的各種操作符對分布式資料集進行各種操作。
  • DataStream API,對資料流進行流處理操作,将流式的資料抽象成分布式的資料流,使用者可以友善的采用 Flink 提供的各種操作符對分布式資料流進行各種操作。
  • Table API,對結構化資料進行查詢操作,将結構化資料抽象成關系表,并通過 Flink 提供的類 SQL 的 DSL 對關系表進行各種查詢操作。

玖富根據自身業務特點,需要對超大規模線上實時資料流進行快速處理,是以采用 DataStream API,追求更低的延遲。

第四部分是算力。算力依賴于 Hadoop 叢集,通過 YARN 實作對整個資源的管理,橫向來說具有很好的可擴充性。YARN 的基本思想是将資源管理和作業排程 / 監控的功能分解為單獨的守護程序,包括兩個部分,一個是全局的資源排程(RM),另一個是針對每個應用程式的排程(AM)。YARN 使得 Hadoop 不再局限于僅支援 MapReduce 一種計算模型,而是可無限融入多種計算架構,且對這些架構進行統一管理和排程。

基于 Flink 的超大規模線上實時反欺詐系統的建設與實踐

YARN 架構

3.系統架構疊代

基于 Flink 的超大規模線上實時反欺詐系統,在玖富集團内部經曆過一次比較重大的架構疊代。玖富集團最初是以 1s 内快速得出風控結果為目标,但是使用者體驗不夠快,于是整個系統進行了一次技術更新,增加了預查技術。預查技術包括檢索和計算兩部分,其核心依賴于 Flink 強大的并發能力。在大量資料中做快速預查,利用 Flink 并發能力進行資料覆寫,最後在緩存裡命中結果,進而不必重新進行網絡 I/O 查詢、等待傳回的過程。經過部分計算架構更新,最終系統實作了 p99 延遲由 1s 降為 100ms 的優化。

4.AI 技術的應用

在大資料時代,資料的品質直接影響大資料分析處理方法的效果,也影響決策過程。通過分析海量資料,可以從中發現資料集中隐含的模式和規律。但異常資料會對分析過程産生重大幹擾。在基于 Flink 的超大規模線上實時反欺詐系統中,利用機器學習進行異常點檢測。異常點檢測(又稱離群點檢測)是找出其行為不同于預期對象的一個檢測過程。這些對象被稱為異常點或者離群點。在大資料中的異常資料存在如下特點:與正常資料的表現有明顯的差異;其産生機制與正常資料不同,可能為未知方式;資料次元較高。異常點檢測在信用卡欺詐檢測中應用較多,當使用者數量非常多時,其中一些低信用值的使用者需要被識别出來,利用機器學習進行異常值檢測,把信用值低的使用者篩選出來,再進行人工确認。

在基于 Flink 的超大規模線上實時反欺詐系統中也應用了 AI 知識圖譜技術。社會是由大大小小的群體組成,同理使用者也有這樣的群體特點,用資料來建構這些群體的關系,通過圖的分割與檢索這兩大類算法深入挖掘資料價值。在實際應用中,如果一個使用者的信用非常差,已經被列入黑名單,那麼與他有關系的使用者都需要重點排查。根據使用者的行為将使用者進行分類,即聚類。各式各樣的聚類算法很多,然後根據使用者的資訊進行圖的分割,确定每個人的風險系數,也可以通過一些手段打通優質圈層的通路,引導優質圈層進行資訊互動。

未來規劃

對于該套線上實時反欺詐系統的未來規劃,玖富第一步會針對 Flink 技術本身,結合玖富在技術、場景等方面的積累,把基于 Flink 的超大規模線上實時反欺詐系統打造成一款資料産品,使其具備向外輸出資料資産和資料處理的能力。

其次,玖富技術團隊也會持續投入人力在系統的功能優化上,并把它做成一個開源的産品推向社群,讓更多開發人員可以直接使用這個系統。

最後,通過技術的優化進一步提升整個系統的性能,目前該系統的 p99 延遲是 100ms,未來玖富的下一項目标是實作 p99 延遲是 50ms。

繼續閱讀