真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于Flink和規(guī)則引擎的實時風(fēng)控解決方案

案例與解決方案匯總頁: 阿里云實時計算產(chǎn)品案例&解決方案匯總
對一個互聯(lián)網(wǎng)產(chǎn)品來說,典型的風(fēng)控場景包括:注冊風(fēng)控、登陸風(fēng)控、交易風(fēng)控、活動風(fēng)控等,而風(fēng)控的最佳效果是防患于未然,所以事前事中和事后三種實現(xiàn)方案中,又以事前預(yù)警和事中控制最好。
這要求風(fēng)控系統(tǒng)一定要有實時性。
本文就介紹一種實時風(fēng)控解決方案。

1.總體架構(gòu)

風(fēng)控是業(yè)務(wù)場景的產(chǎn)物,風(fēng)控系統(tǒng)直接服務(wù)于業(yè)務(wù)系統(tǒng),與之相關(guān)的還有懲罰系統(tǒng)和分析系統(tǒng),各系統(tǒng)關(guān)系與角色如下:


  • 業(yè)務(wù)系統(tǒng),通常是APP+后臺 或者 web,是互聯(lián)網(wǎng)業(yè)務(wù)的載體,風(fēng)險從業(yè)務(wù)系統(tǒng)觸發(fā);
  • 風(fēng)控系統(tǒng),為業(yè)務(wù)系統(tǒng)提供支持,根據(jù)業(yè)務(wù)系統(tǒng)傳來的數(shù)據(jù)或埋點信息來判斷當(dāng)前用戶或事件有無風(fēng)險;
  • 懲罰系統(tǒng),業(yè)務(wù)系統(tǒng)根據(jù)風(fēng)控系統(tǒng)的結(jié)果來調(diào)用,對有風(fēng)險的用戶或事件進行控制或懲罰,比如增加驗證碼、限制登陸、禁止下單等等;
  • 分析系統(tǒng),該系統(tǒng)用以支持風(fēng)控系統(tǒng),根據(jù)數(shù)據(jù)來衡量風(fēng)控系統(tǒng)的表現(xiàn),比如某策略攔截率突然降低,那可能意味著該策略已經(jīng)失效,又比如活動商品被強光的時間突然變短,這表面總體活動策略可能有問題等等,該系統(tǒng)也應(yīng)支持運營/分析人員發(fā)現(xiàn)新策略;
其中 風(fēng)控系統(tǒng)和 分析系統(tǒng)是本文討論的重點,而為了方便討論,我們假設(shè)業(yè)務(wù)場景如下:
  • 電商業(yè)務(wù);
  • 風(fēng)控范圍包括:
  • 注冊,虛假注冊;
  • 登陸,盜號登陸;
  • 交易,盜刷客戶余額;
  • 活動,優(yōu)惠活動薅羊毛;

  • 風(fēng)控實現(xiàn)方案:事中風(fēng)控,目標(biāo)為攔截異常事件;

2.風(fēng)控系統(tǒng)

風(fēng)控系統(tǒng)有 規(guī)則和 模型兩種技術(shù)路線,規(guī)則的優(yōu)點是簡單直觀、可解釋性強、靈活,所以長期活躍在風(fēng)控系統(tǒng)之中,但缺點是容易被攻破,一但被黑產(chǎn)猜到里面就會失效,于是在實際的風(fēng)控系統(tǒng)中,往往再結(jié)合上基于模型的風(fēng)控環(huán)節(jié)來增加健壯性。但限于篇幅,本文中我們只重點討論一種基于規(guī)則的風(fēng)控系統(tǒng)架構(gòu),當(dāng)然如果有模型風(fēng)控的訴求,該架構(gòu)也完全支持。
規(guī)則就是針對事物的條件判斷,我們針對注冊、登陸、交易、活動分別假設(shè)幾條規(guī)則,比如:
  • 用戶名與身份證姓名不一致;
  • 某IP最近1小時注冊賬號數(shù)超過10個;
  • 某賬號最近3分鐘登陸次數(shù)大于5次;
  • 某賬號群體最近1消失購買優(yōu)惠商品超過100件;
  • 某賬號最近3分鐘領(lǐng)券超過3張;
規(guī)則可以組合成規(guī)則組,為了簡單起見,我們這里只討論規(guī)則。
規(guī)則其實包括三個部分:
  • 事實,即被判斷的主體和屬性,如上面規(guī)則的賬號及登陸次數(shù)、IP和注冊次數(shù)等;
  • 條件,判斷的邏輯,如某事實的某屬性大于某個指標(biāo);
  • 指標(biāo)閾值,判斷的依據(jù),比如登陸次數(shù)的臨界閾值,注冊賬號數(shù)的臨界閾值等;
規(guī)則可由運營專家憑經(jīng)驗填寫,也可由數(shù)據(jù)分析師根據(jù)歷史數(shù)據(jù)發(fā)掘,但因為規(guī)則在與黑產(chǎn)的攻防之中會被猜中導(dǎo)致失效,所以無一例外都需要動態(tài)調(diào)整。
基于上邊的討論,我們設(shè)計一個風(fēng)控系統(tǒng)方案如下:
該系統(tǒng)有三條數(shù)據(jù)流向:
  • 實時風(fēng)控數(shù)據(jù)流,由紅線標(biāo)識,同步調(diào)用,為風(fēng)控調(diào)用的核心鏈路;
  • 準(zhǔn)實時指標(biāo)數(shù)據(jù)流,由藍(lán)線標(biāo)識,異步寫入,為實時風(fēng)控部分準(zhǔn)備指標(biāo)數(shù)據(jù);
  • 準(zhǔn)實時/離線分析數(shù)據(jù)流,由綠線標(biāo)識,異步寫入,為風(fēng)控系統(tǒng)的表現(xiàn)分析提供數(shù)據(jù);
本節(jié)先介紹前兩部分,分析系統(tǒng)在下一節(jié)介紹。

2.1 實時風(fēng)控

實時風(fēng)控是整個系統(tǒng)的核心,被業(yè)務(wù)系統(tǒng)同步調(diào)用,完成對應(yīng)的風(fēng)控判斷。
前面提到規(guī)則往往由人編寫并且需要動態(tài)調(diào)整,所以我們會把風(fēng)控判斷部分與規(guī)則管理部分拆開。規(guī)則管理后臺為運營服務(wù),由運營人員去進行相關(guān)操作:
  • 場景管理,決定某個場景是否實施風(fēng)控,比如活動場景,在活動結(jié)束后可以關(guān)閉該場景;
  • 黑白名單,人工/程序找到系統(tǒng)的黑白名單,直接過濾;
  • 規(guī)則管理,管理規(guī)則,包括增刪或修改,比如登陸新增IP地址判斷,比如下單新增頻率校驗等;
  • 閾值管理,管理指標(biāo)的閾值,比如規(guī)則為某IP最近1小時注冊賬號數(shù)不能超過10個,那1和10都屬于閾值;
講完管理后臺,那規(guī)則判斷部分的邏輯也就十分清晰了,分別包括前置過濾、事實數(shù)據(jù)準(zhǔn)備、規(guī)則判斷三個環(huán)節(jié)。

2.1.1 前置過濾

業(yè)務(wù)系統(tǒng)在特定事件(如注冊、登陸、下單、參加活動等)被觸發(fā)后同步調(diào)用風(fēng)控系統(tǒng),附帶相關(guān)上下文,比如IP地址,事件標(biāo)識等,規(guī)則判斷部分會根據(jù)管理后臺的配置決定是否進行判斷,如果是,接著進行黑白名單過濾,都通過后進入下一個環(huán)節(jié)。
這部分邏輯非常簡單。

2.1.2 實時數(shù)據(jù)準(zhǔn)備

在進行判斷之前,系統(tǒng)必須要準(zhǔn)備一些事實數(shù)據(jù),比如:
  • 注冊場景,假如規(guī)則為單一IP最近1小時注冊賬號數(shù)不超過10個,那系統(tǒng)需要根據(jù)IP地址去redis/hbase找到該IP最近1小時注冊賬號的數(shù)目,比如15;
  • 登陸場景,假如規(guī)則為單一賬號最近3分鐘登陸次數(shù)不超過5次,那系統(tǒng)需要根據(jù)賬號去redis/hbase找到該賬號最近3分鐘登陸的次數(shù),比如8;
redis/hbase的數(shù)據(jù)產(chǎn)出我們會在第2.2節(jié)準(zhǔn)實時數(shù)據(jù)流中進行介紹。

2.2.3 規(guī)則判斷

在得到事實數(shù)據(jù)之后,系統(tǒng)會根據(jù)規(guī)則和閾值進行判斷,然后返回結(jié)果,整個過程便結(jié)束了。
整個過程邏輯上是清晰的,我們常說的規(guī)則引擎主要在這部分起作用,一般來說這個過程有兩種實現(xiàn)方式:
  • 借助成熟的規(guī)則引擎,比如Drools,Drools和Java環(huán)境結(jié)合的非常好,本身也非常完善,支持很多特性,不過使用比較繁瑣,有較高門檻,可參考文章【1】;
  • 基于Groovy等動態(tài)語言自己完成,這里不做贅述。可參考文章【2】;
這兩種方案都支持規(guī)則的動態(tài)更新。

2.2 準(zhǔn)實時數(shù)據(jù)流

這部分屬于后臺邏輯,為風(fēng)控系統(tǒng)服務(wù),準(zhǔn)備事實數(shù)據(jù)。
把數(shù)據(jù)準(zhǔn)備與邏輯判斷拆分,是出于系統(tǒng)的性能/可擴展性的角度考慮的。
前邊提到,做規(guī)則判斷需要事實的相關(guān)指標(biāo),比如最近一小時登陸次數(shù),最近一小時注冊賬號數(shù)等等,這些指標(biāo)通常有一段時間跨度,是某種狀態(tài)或聚合,很難在實時風(fēng)控過程中根據(jù)原始數(shù)據(jù)進行計算,因為風(fēng)控的規(guī)則引擎往往是無狀態(tài)的,不會記錄前面的結(jié)果。
同時,這部分原始數(shù)據(jù)量很大,因為用戶活動的原始數(shù)據(jù)都要傳過來進行計算,所以這部分往往由一個流式大數(shù)據(jù)系統(tǒng)來完成。在這里我們選擇Flink,F(xiàn)link是當(dāng)今流計算領(lǐng)域無可爭議的No.1,不管是性能還是功能,都能很好的完成這部分工作。
這部分?jǐn)?shù)據(jù)流非常簡單:
  • 業(yè)務(wù)系統(tǒng)把埋點數(shù)據(jù)發(fā)送到Kafka;
  • Flink訂閱Kafka, 完成原子粒度的聚合;
  • 注:Flink僅完成原子粒度的聚合是和規(guī)則的動態(tài)變更邏輯相關(guān)的。舉例來說,在注冊場景中,運營同學(xué)會根據(jù)效果一會要判斷某IP最近1小時的注冊賬號數(shù),一會要判斷最近3小時的注冊賬號數(shù),一會又要判斷最近5小時的注冊賬號數(shù)……也就是說這個最近N小時的N是動態(tài)調(diào)整的。那Flink在計算時只應(yīng)該計算1小時的賬號數(shù),在判斷過程中根據(jù)規(guī)則來讀取最近3個1小時還是5個1小時,然后聚合后進行判斷。因為在Flink的運行機制中,作業(yè)提交后會持續(xù)運行,如果調(diào)整邏輯需要停止作業(yè),修改代碼,然后重啟,相當(dāng)麻煩;同時因為Flink中間狀態(tài)的問題,重啟還面臨著中間狀態(tài)能否復(fù)用的問題。所以假如直接由Flink完成N小時的聚合的話,每次N的變動都需要重復(fù)上面的操作,有時還需要追數(shù)據(jù),非常繁瑣。

  • Flink把匯總的指標(biāo)結(jié)果寫入Redis或Hbase,供實時風(fēng)控系統(tǒng)查詢。兩者問題都不大,根據(jù)場景選擇即可。
通過把數(shù)據(jù)計算和邏輯判斷拆分開來并引入Flink,我們的風(fēng)控系統(tǒng)可以應(yīng)對極大的用戶規(guī)模。

3.分析系統(tǒng)

前面的東西靜態(tài)來看是一個完整的風(fēng)控系統(tǒng),但動態(tài)來看就有缺失了,這種缺失不體現(xiàn)在功能性上,而是體現(xiàn)在演進上。即如果從動態(tài)的角度來看一個風(fēng)控系統(tǒng)的話,我們至少還需要兩部分,一是衡量系統(tǒng)的整體效果,一是為系統(tǒng)提供規(guī)則/邏輯升級的依據(jù)。
在衡量整體效果方面,我們需要:
  • 判斷規(guī)則是否失效,比如攔截率的突然降低;
  • 判斷規(guī)則是否多余,比如某規(guī)則從來沒攔截過任何事件;
  • 判斷規(guī)則是否有漏洞,比如在舉辦某個促銷活動或發(fā)放代金券后,福利被領(lǐng)完了,但沒有達(dá)到預(yù)期效果;
在為系統(tǒng)提供規(guī)則/邏輯升級依據(jù)方面,我們需要:
  • 發(fā)現(xiàn)全局規(guī)則,比如某人在電子產(chǎn)品的花費突然增長了100倍,單獨來看是有問題的,但整體來看,可能很多人都出現(xiàn)了這個現(xiàn)象,原來是蘋果發(fā)新品了……
  • 識別某種行為的組合,單次行為是正常的,但組合是異常的,比如用戶買菜刀是正常的,買車票是正常的,買繩子也是正常的,去加油站加油也是正常的,但短時間內(nèi)同時做這些事情就不是正常的。
  • 群體識別,比如通過圖分析技術(shù),發(fā)現(xiàn)某個群體,然后給給這個群體的所有賬號都打上群體標(biāo)簽,防止出現(xiàn)那種每個賬號表現(xiàn)都正常,但整個群體卻在集中薅羊毛的情況。
這便是分析系統(tǒng)的角色定位,在他的工作中有部分是確定性的,也有部分是探索性的,為了完成這種工作,該系統(tǒng)需要盡可能多的數(shù)據(jù)支持,如:
  • 業(yè)務(wù)系統(tǒng)的數(shù)據(jù),業(yè)務(wù)的埋點數(shù)據(jù),記錄詳細(xì)的用戶、交易或活動數(shù)據(jù);
  • 風(fēng)控攔截數(shù)據(jù),風(fēng)控系統(tǒng)的埋點數(shù)據(jù),比如某個用戶在具有某些特征的狀態(tài)下因為某條規(guī)則而被攔截,這條攔截本身就是一個事件數(shù)據(jù);
這是一個典型的大數(shù)據(jù)分析場景,架構(gòu)也比較靈活,我僅僅給出一種建議的方式。

相對來說這個系統(tǒng)是最開放的,既有固定的指標(biāo)分析,也可以使用機器學(xué)習(xí)/數(shù)據(jù)分析技術(shù)發(fā)現(xiàn)更多新的規(guī)則或模式,限于篇幅,這里就不詳細(xì)展開了。

原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

新聞名稱:基于Flink和規(guī)則引擎的實時風(fēng)控解決方案
新聞來源:http://weahome.cn/article/gddije.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部