基於Flink的超大規模線上實時反欺詐系統的建設與實踐
在大資料時代,金融科技公司通常藉助消費資料來綜合評估使用者的信用和還款能力。這個過程中,某些中介機構會蒐集大量的號並進行“養號”工作,即在一年週期裡讓這些號形成正常的消費、通訊記錄,目的是將這些號“培養”得非常健康,然後賣給有欺詐意向的使用者。這類使用者通過網上資訊提交稽核,騙到貸款後就“銷聲匿跡”了。
那麼,如何更快速地預防或甄別可能的欺詐行為?如何從超大規模、高併發、多維度的資料中實現線上實時反欺詐?這些都是金融科技公司當下面臨的主要難題。針對這些問題,InfoQ專訪玖富集團,揭祕基於Flink的超大規模線上實時反欺詐技術是如何快速處理海量資料並打造良好的使用者體驗。
一、線上實時反欺詐的難點和痛點
有三類常見的金融欺詐場景:一是材料偽造。這是早年需要提交紙質材料時期常見的欺詐;二是“養號”,常見於中介機構,通過收取服務費來維護大量號的健康狀態,賣給有欺詐意向的使用者進行貸款申請;三是來自於專業黑客的威脅,他們通過尋找系統、流程的漏洞等方式,對賬號安全構成攻擊。
金融科技因其虛擬性特徵,主要風險集中在兩方面:一是欺詐風險,二是信用風險,因此核心的風險評估流程就是反欺詐和信用評估。對於反欺詐而言,資訊核實、高危人群攔截和實時計算、識別、決策是其核心風控手段。而對於信用風險的評估,需要內外兼修。
玖富集團對使用者的信用評級主要由玖富集團自主研發的火眼評分-彩虹評級系統動態評估使用者信用情況,覆蓋玖富集團C端全線借貸服務,自上線以來表現穩定,區分效果明顯。外部也參考了騰訊、阿里等評分作為參考。
目前,線上實時反欺詐會面臨各類痛點,在玖富集團業務場景中,主要痛點集中在以下三方面:
一是低延時要求。越是大量資料需要計算,所需時間越長。在網貸盛行的年代,經常流傳的一句口號是“三分鐘授信,一分鐘放款”,甚至有的公司打出“一分鐘授信,半分鐘放款”。但是在大資料場景中,資料分析與處理對低延時的需求越來越高。
二是超大規模實時計算要求。大資料場景中,需要對大規模資料做到實時計算,玖富集團內部代號為“伏羲”的Flink計算平臺每天要在接近510TB的資料集上做快速的檢索和計算,使用者的行為改變會導致資料發生變化,進而影響決策。因此對超大規模資料的實時計算需求越來越高,確保使用者在出現欺詐行為時能夠及時中止交易。
三是多維度、高併發要求。隨著同一業務場景下使用者規模的擴增,使用者產生的資料也形成爆發性增長。在金融場景下,亟需一套完整系統可以實現按照資料各個維度分析得出風險評估報告,根據使用者特性挖掘使用者潛在需求等;系統獲取使用者產生資料最簡單有效的方法就是流水式資料,單個資料包裡包含了發生時間點的各個維度的所有資訊量,這種場景的特性之一就是資料高併發,因此對時效要求比較高的資料分析來說是一個非常巨大的挑戰。
針對目前線上實時反欺詐的痛點,玖富集團採用基於Flink的超大規模線上實時反欺詐系統,在提升使用者體驗的同時,也降低了商業損失。
二、基於Flink的超大規模線上實時反欺詐系統
1、為什麼選擇Flink?
Flink開源專案是近一兩年大資料處理領域冉冉升起的一顆新星。雖然是後起之秀,但在國內許多大型網際網路企業的工程實踐中均有被應用,如阿里、美團、京東等。那麼,在玖富的大資料技術體系迭代中,為何會選用Flink這套流資料處理引擎呢?
從技術語言角度:Spark的技術語言主要是JAVA和Scala,尤其是對Scala語言有一定要求。而Flink主要是基於JAVA,程式語言更成熟,通用度更高,修改程式碼也更容易。所以從語言層面綜合來看,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的超大規模線上實時反欺詐系統首先要把資料通路加寬,允許更多資訊同時湧入資料處理中。
第二部分是大型的列式儲存叢集,主要由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 一種計算模型,而是可無限融入多種計算框架,且對這些框架進行統一管理和排程。YARN架構如下:
3、系統架構迭代
基於Flink的超大規模線上實時反欺詐系統,在玖富集團內部經歷過一次比較重大的架構迭代。玖富集團最初是以1s內快速得出風控結果為目標,但是使用者體驗不夠快,於是整個系統進行了一次技術升級,增加了預查技術。預查技術包括檢索和計算兩部分,其核心依賴於Flink強大的併發能力。在大量資料中做快速預查,利用Flink併發能力進行資料覆蓋,最後在快取裡命中結果,從而不必重新進行網路I/O查詢、等待返回的過程。經過部分計算框架升級,最終系統實現了p99延遲由1s降為100ms的優化。
4、AI技術的應用
在大資料時代,資料的質量直接影響大資料分析處理方法的效果,也影響決策過程。通過分析海量資料,可以從中發現資料集中隱含的模式和規律。但異常資料會對分析過程產生重大干擾。在基於Flink的超大規模線上實時反欺詐系統中,利用機器學習進行異常點檢測。異常點檢測(又稱離群點檢測)是找出其行為不同於預期物件的一個檢測過程。這些物件被稱為異常點或者離群點。在大資料中的異常資料存在如下特點:與正常資料的表現有明顯的差異;其產生機制與正常資料不同,可能為未知方式;資料維度較高。異常點檢測在信用卡欺詐檢測中應用較多,當使用者數量非常多時,其中一些低信用值的使用者需要被識別出來,利用機器學習進行異常值檢測,把信用值低的使用者篩選出來,再進行人工確認。
在基於Flink的超大規模線上實時反欺詐系統中也應用了AI知識圖譜技術。社會是由大大小小的群體組成,同理使用者也有這樣的群體特點,用資料來構建這些群體的關係,通過圖的分割與檢索這兩大類演算法深入挖掘資料價值。在實際應用中,如果一個使用者的信用非常差,已經被列入黑名單,那麼與他有關係的使用者都需要重點排查。根據使用者的行為將使用者進行分類,即聚類。各式各樣的聚類演算法很多,然後根據使用者的資訊進行圖的分割,確定每個人的風險係數,也可以通過一些手段打通優質圈層的通路,引導優質圈層進行資訊互動。
三、基於Flink的超大規模線上實時反欺詐系統的未來規劃
對於該套線上實時反欺詐系統的未來規劃,玖富第一步會針對Flink技術本身,結合玖富在技術、場景等方面的積累,把基於Flink的超大規模線上實時反欺詐系統打造成一款資料產品,使其具備向外輸出資料資產和資料處理的能力。
其次,玖富技術團隊也會持續投入人力在系統的功能優化上,並把它做成一個開源的產品推向社群,讓更多開發人員可以直接使用這個系統。
最後,通過技術的優化進一步提升整個系統的效能,目前該系統的p99延遲是100ms,未來玖富的下一專案標是實現p99延遲是50ms。
相關文章
- 基於Vue2和Node.js的反欺詐系統設計與實現VueNode.js
- 快手基於 Apache Flink 的實時數倉建設實踐Apache
- 阿里超大規模 Flink 叢集運維實踐阿里運維
- 美團點評基於 Flink 的實時數倉建設實踐
- 網易雙11“超級工程”:反欺詐系統應用實踐
- 基於Flink流處理的動態實時超大規模使用者行為分析
- Google 如何設計與構建超大規模的軟體系統Go
- 基於 Flink CDC 的實時同步系統
- 基於實時計算(Flink)與高斯模型構建實時異常檢測系統模型
- 基於 Flink 的實時數倉生產實踐
- 快手基於 Flink 構建實時數倉場景化實踐
- 錢大媽基於 Flink 的實時風控實踐
- 微信基於PyTorch的大規模推薦系統訓練實踐PyTorch
- 映象拉取節省 90% 以上,快手基於 Dragonfly 的超大規模分發實踐Go
- 低程式碼實時數倉構建系統的設計與實踐
- GaussDB(DWS)基於Flink的實時數倉構建
- Airwallex 基於 Flink 打造實時風控系統AI
- vivo 推送系統的容災建設與實踐
- 程式碼回現 | 如何實現交易反欺詐?
- 金融反欺詐-交易基礎介紹
- 美團基於 Flink 的實時數倉平臺建設新進展
- vivo 超大規模訊息中介軟體實踐之路
- 網易雲音樂基於Flink實時數倉實踐
- 日處理資料量超10億:友信金服基於Flink構建實時使用者畫像系統的實踐
- 基於 Flink 的小米資料整合實踐
- B站基於Flink的海量使用者行為實時ETL實踐
- 分散式超大規模資料的實時快速排序演算法分散式排序演算法
- 基於 Prometheus 的監控系統實踐Prometheus
- 百度基於雲原生的推薦系統設計與實踐
- 百萬訂單規模系統的技術治理實踐
- 基於 GraphQL 的雲音樂 BFF 建設實踐
- 基於Flink構建全場景實時數倉
- Grafana監控系統的構建與實踐Grafana
- 基於Flink和規則引擎的實時風控解決方案
- 阿里超大規模 Flink 叢集運維體系介紹阿里運維
- 【Flink】基於 Flink 的流式資料實時去重
- Rancher 和知乎超大規模多叢集管理聯合實踐
- 前端⼤規模構建演進實踐前端