互聯(lián)網(wǎng)流量紅利時(shí)代趨于結(jié)束,如何低成本的獲得高質(zhì)量的流量,是眾多互聯(lián)網(wǎng)公司在業(yè)務(wù)發(fā)展中的重要錨點(diǎn)。
根據(jù)中國信息通信研究院2021年《移動數(shù)字廣告與互聯(lián)網(wǎng)欺詐藍(lán)皮報(bào)告》,整個(gè)2020年期間,國內(nèi)互聯(lián)網(wǎng)假量占比連續(xù)多月超過 30%,直接和間接造成的經(jīng)濟(jì)損失超過1500億元。在欺詐流量中,出行行業(yè)是僅次于電商的第二欺詐流量來源。(因疫情影響,過去兩年出行行業(yè)欺詐流量占比略有下降)
達(dá)達(dá)快送作為同城配送的頭部企業(yè),在做線上營銷時(shí)常會遇到黑產(chǎn)流量的攻擊。圖1可看出,一波異常流量,從凌晨持續(xù)到中午。這部分流量惡意注冊裂變,套取平臺補(bǔ)貼,消耗營銷費(fèi)用,給平臺帶來嚴(yán)重的業(yè)務(wù)損失。所以構(gòu)建線上風(fēng)控系統(tǒng)尤為重要。
黑產(chǎn)流量來自于虛假需求,其目的是騙取平臺補(bǔ)貼,其結(jié)果是擾亂平臺正常交易撮合秩序。
黑產(chǎn)流量與正常流量的重大區(qū)別是,黑產(chǎn)流量的用戶生命周期總價(jià)值為負(fù),正常流量的用戶生命周期總價(jià)值為正。換句話說,運(yùn)營正常流量,攔截黑產(chǎn)流量,是業(yè)務(wù)能有效增長的重要報(bào)障。
而所謂業(yè)務(wù)風(fēng)控,就是對黑產(chǎn)流量做精準(zhǔn)識別、攔截,并盡量減少對平臺用戶的干擾。
1、黑產(chǎn)產(chǎn)業(yè)化帶來的挑戰(zhàn)
黑產(chǎn)發(fā)展到當(dāng)前,產(chǎn)業(yè)已經(jīng)相當(dāng)成熟。下圖是黑產(chǎn)產(chǎn)業(yè)鏈的產(chǎn)業(yè)結(jié)構(gòu)。從圖中可以看出,黑產(chǎn)產(chǎn)業(yè)鏈成熟,分工精細(xì)。這大大降低了黑產(chǎn)的攻擊成本,同時(shí)也導(dǎo)致黑產(chǎn)門檻低,黑產(chǎn)攻擊范圍廣泛,黑產(chǎn)受害群體更普遍。
我們平臺在發(fā)展過程中也驗(yàn)證了這一現(xiàn)象:歷次平臺營銷活動,均經(jīng)歷了被黑發(fā)現(xiàn),攻擊,對抗的過程。
2、風(fēng)控的底層邏輯
要知道,不存在無法攻破的系統(tǒng)。差別是,有的系統(tǒng)的攻破成本低,有的系統(tǒng)的攻破成本高。
從黑產(chǎn)的角度看,黑產(chǎn)來到平臺,目的是通過一定的手段,賺取平臺補(bǔ)貼。而黑產(chǎn)的攻擊工具箱里的工具,代理ip,虛擬賬號,虛擬設(shè)備, 群控設(shè)備,自動化腳本,每一個(gè)的使用都是有一定的成本。黑產(chǎn)的盈利空間=賺取平臺利潤 - 攻擊成本。黑產(chǎn)的盈利空間越大,黑產(chǎn)攻擊意圖越強(qiáng)烈。
從平臺角度看, 風(fēng)控系統(tǒng)正常的運(yùn)營也有一定的運(yùn)營成本。這部分成本包括研發(fā)成本、數(shù)據(jù)分析成本、系統(tǒng)運(yùn)營維護(hù)成本。風(fēng)控成本加上活動的其他投入成本,不能高于活動帶來的總收益,否則即便成功攔截了黑產(chǎn),活動本身已經(jīng)沒有正向收益,也得不償失。
概括下來,風(fēng)控就是用低成本的方式提高黑產(chǎn)攻擊成本并達(dá)到一個(gè)收益平衡的過程。
物流系統(tǒng)與典型電商系統(tǒng)的業(yè)務(wù)風(fēng)險(xiǎn)場景有一定的差異。除了典型的營銷系統(tǒng)、商城以外,達(dá)達(dá)具有物流特有的風(fēng)險(xiǎn)場景。
1、營銷系統(tǒng)
營銷系統(tǒng)包括達(dá)達(dá)需求側(cè)的平臺業(yè)務(wù)的拉新留存業(yè)務(wù),騎士激勵(lì)、招募等業(yè)務(wù)。營銷系統(tǒng)的特點(diǎn)是玩法多,迭代快。這給業(yè)務(wù)風(fēng)控系統(tǒng)帶來的挑戰(zhàn)是,業(yè)務(wù)多接入成本高,風(fēng)險(xiǎn)點(diǎn)多風(fēng)險(xiǎn)接入點(diǎn)易疏漏,風(fēng)險(xiǎn)變化快風(fēng)險(xiǎn)對抗節(jié)奏快。
業(yè)務(wù)多是指營銷系統(tǒng)有繁多的活動玩法:裂變、促活、投放、激勵(lì)等活動玩法,活動玩法隨運(yùn)營策劃種類多。這要求風(fēng)控系統(tǒng)具備低成本、快捷的、統(tǒng)一的接入能力。
風(fēng)險(xiǎn)點(diǎn)多是指,由于活動玩法復(fù)雜,一個(gè)活動存在眾多風(fēng)險(xiǎn)點(diǎn),比如任務(wù)領(lǐng)取、邀請好友、提現(xiàn)等多個(gè)節(jié)點(diǎn)在同一個(gè)活動內(nèi)均需要接入風(fēng)控。這要求業(yè)務(wù)風(fēng)控系統(tǒng)與業(yè)務(wù)有較深入的結(jié)合。
風(fēng)險(xiǎn)變化快是指,同一個(gè)風(fēng)險(xiǎn)攔截方式具有一定的時(shí)效性,黑產(chǎn)會針對風(fēng)控邏輯做攻擊的工具升級對抗。這要求風(fēng)控系統(tǒng)具有低成本、高時(shí)效風(fēng)險(xiǎn)規(guī)則迭代能力。
2、訂運(yùn)單流程
達(dá)達(dá)物流包括需求側(cè)與履約側(cè)。需求側(cè)除了從客戶端直接下單的平臺業(yè)務(wù)外,還包括通過開放API下單的KA業(yè)務(wù)、京東到家訂單業(yè)務(wù)。這部分業(yè)務(wù)存在虛假單、刷單等欺詐風(fēng)險(xiǎn)。
3、騎士商城
達(dá)達(dá)商城是達(dá)達(dá)平臺為騎士提供的增值服務(wù)。騎士可以通過平臺便捷、優(yōu)惠的購買騎士日常用品。該業(yè)務(wù)面臨著和主流電商平臺類似的電商欺詐風(fēng)險(xiǎn)。
風(fēng)控系統(tǒng)按照功能模塊,可以分為4部分:風(fēng)險(xiǎn)感知,風(fēng)險(xiǎn)攔截,風(fēng)險(xiǎn)分析,效果監(jiān)控。
1、風(fēng)險(xiǎn)感知
風(fēng)險(xiǎn)感知的關(guān)鍵是,結(jié)合具體的業(yè)務(wù)場景,收集齊備數(shù)據(jù)。
2、風(fēng)險(xiǎn)攔截
風(fēng)險(xiǎn)攔截包括實(shí)時(shí)攔截規(guī)則引擎和風(fēng)控規(guī)則管理后臺。
3、風(fēng)險(xiǎn)分析
風(fēng)險(xiǎn)分析包括實(shí)時(shí)數(shù)據(jù)風(fēng)險(xiǎn)分析和離線大數(shù)據(jù)風(fēng)險(xiǎn)分析。
4、效果監(jiān)控
效果監(jiān)控包括風(fēng)控指標(biāo)監(jiān)控和對應(yīng)業(yè)務(wù)指標(biāo)監(jiān)控。風(fēng)控指標(biāo)監(jiān)控從用戶行為角度包括風(fēng)險(xiǎn)率,攔截率,誤攔率等,從賬號維度包括設(shè)備量、賬號量等。業(yè)務(wù)指標(biāo)隨著各種業(yè)務(wù)場景會有不同的差異,概括的說,包括業(yè)務(wù)請求量和利益點(diǎn)流量。比如說,營銷系統(tǒng)會關(guān)注不同業(yè)務(wù)線的補(bǔ)貼金額,訂運(yùn)單會關(guān)注虛假訂單量,下單設(shè)備量等。
當(dāng)指標(biāo)本身異?;蛑笜?biāo)間趨勢不一致時(shí),則會觸發(fā)風(fēng)控報(bào)警。
1、風(fēng)控架構(gòu)設(shè)計(jì)
風(fēng)控系統(tǒng)作為一個(gè)系統(tǒng),不能簡單理解為決策風(fēng)險(xiǎn)的實(shí)時(shí)服務(wù)自身。風(fēng)控系統(tǒng)正常的運(yùn)行需要研發(fā)人員與運(yùn)營人員共同協(xié)作,涉及風(fēng)控核查,風(fēng)控運(yùn)營,風(fēng)控策略分析師、產(chǎn)品經(jīng)理、系統(tǒng)開發(fā)工程師等多個(gè)角色,系統(tǒng)由業(yè)務(wù)服務(wù)、實(shí)時(shí)風(fēng)控服務(wù)、風(fēng)控策略管理后臺、風(fēng)控客服操作后臺、大數(shù)據(jù)離線分析系統(tǒng)、風(fēng)控監(jiān)控報(bào)表系統(tǒng)等多個(gè)模塊組成??傊?,風(fēng)控系統(tǒng)是一個(gè)非常龐大的系統(tǒng)。下面是達(dá)達(dá)物流風(fēng)控的總體架構(gòu)設(shè)計(jì)圖。
風(fēng)控系統(tǒng)的實(shí)現(xiàn)有5部分組成:
Ⅰ、業(yè)務(wù)層
該層是業(yè)務(wù)接入層。各種存在業(yè)務(wù)風(fēng)險(xiǎn)的功能需要將業(yè)務(wù)關(guān)鍵環(huán)節(jié)接入風(fēng)控,這種關(guān)鍵業(yè)務(wù)節(jié)點(diǎn)被稱為風(fēng)控接入點(diǎn)。
Ⅱ、實(shí)時(shí)風(fēng)控平臺層
基于風(fēng)控?cái)?shù)倉層的風(fēng)控平臺層,就是風(fēng)控系統(tǒng)的核心層。這一層連接業(yè)務(wù)層與數(shù)據(jù)層。業(yè)務(wù)請求會首先進(jìn)入風(fēng)控平臺層,運(yùn)營對應(yīng)的策略、通過對應(yīng)的模型校驗(yàn),做實(shí)時(shí)的數(shù)據(jù)累計(jì),最終形成實(shí)時(shí)風(fēng)險(xiǎn)等級的判斷,供業(yè)務(wù)做決策。為支撐風(fēng)控平臺正常運(yùn)營,風(fēng)控運(yùn)營層對風(fēng)控平臺做管理和后處理。
Ⅲ、數(shù)據(jù)處理層
最下層是數(shù)據(jù)層,包含實(shí)時(shí)數(shù)據(jù)、離線數(shù)據(jù)等。需要注意的是,數(shù)據(jù)層并不只做數(shù)據(jù)的存儲,數(shù)據(jù)層會對數(shù)據(jù)做前處理,數(shù)據(jù)維度、指標(biāo)的轉(zhuǎn)換、去重、清洗等。
Ⅳ、數(shù)據(jù)收集層
數(shù)據(jù)采集層,并不能望文生義的理解為前端層。根據(jù)風(fēng)控的業(yè)務(wù)特征,數(shù)據(jù)采集包括4部分:行為數(shù)據(jù),設(shè)備數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)。其中行為數(shù)據(jù)和設(shè)備數(shù)據(jù)在前端產(chǎn)生,需要前端上報(bào),這部分也相對比較清晰簡單。業(yè)務(wù)數(shù)據(jù)相對就比較復(fù)雜,數(shù)據(jù)的采集也是千差萬別。業(yè)務(wù)數(shù)據(jù)根據(jù)業(yè)務(wù)架構(gòu)的特點(diǎn)有不同的采集方式,常用的采集方式包括:消息通知,主動接口查詢,底層DB直接數(shù)據(jù)同步。
各種數(shù)據(jù)采集方式分別有自己的優(yōu)缺點(diǎn),主動接口查詢實(shí)時(shí)性好架構(gòu)簡單,但會給下游服務(wù)造成壓力。最終采取哪種方式,取決于數(shù)據(jù)要全,實(shí)時(shí)性要有報(bào)障,架構(gòu)足夠簡單三者之間的平衡。
Ⅴ、風(fēng)控運(yùn)營層
策略運(yùn)營等基于數(shù)據(jù)層數(shù)據(jù)做數(shù)據(jù)分析,輸出有效的策略、模型,形成規(guī)則,并同時(shí)對底層數(shù)據(jù)加工處理,形成監(jiān)控指標(biāo)。
模型層和數(shù)據(jù)層由于關(guān)系比較緊密,在物理架構(gòu)上都屬于風(fēng)控?cái)?shù)倉層。
2、風(fēng)控規(guī)則引擎
規(guī)則引擎作為風(fēng)控平臺的核心模塊,其引入對提高對抗黑產(chǎn)的效率至關(guān)重要。有了規(guī)則引擎,就能做到對黑產(chǎn)實(shí)時(shí)分析,實(shí)時(shí)上線,實(shí)時(shí)攔截。不用經(jīng)過分析,研發(fā),測試,上線等漫長過程。
規(guī)則引擎就是一段if-then結(jié)構(gòu),if里面是策略規(guī)則,then是滿足規(guī)則所要執(zhí)行的行為。
規(guī)則引擎的目的是提升對抗時(shí)效,其關(guān)鍵有兩點(diǎn):①數(shù)據(jù)收集要齊備;②攔截邏輯的迭代要靈活。
為了實(shí)現(xiàn)攔截邏輯的靈活迭代,第一,需要將風(fēng)控場景中的數(shù)據(jù)按一定層次進(jìn)行組織,最大化的復(fù)用數(shù)據(jù)。第二,需要將風(fēng)險(xiǎn)攔截算法數(shù)據(jù)化,從而實(shí)現(xiàn)實(shí)時(shí)變更攔截算法,這里我們引用規(guī)則引擎。
風(fēng)險(xiǎn)攔截過程中的兩個(gè)關(guān)鍵領(lǐng)域模型是因子、規(guī)則。規(guī)則引擎不是直接建立在通過各種渠道收集到的原始數(shù)據(jù)上的,而是建立在因子之上。
所謂因子是風(fēng)險(xiǎn)攔截中的最小數(shù)據(jù)單元。舉個(gè)例子,前端上傳的User-Agent并不能直接用于風(fēng)險(xiǎn)攔截,需要對User-Agent做處理提取出設(shè)備平臺、機(jī)型等原子性的信息,后續(xù)規(guī)則是建立在這些因子上運(yùn)行的。
考慮到基于自身的業(yè)務(wù)的復(fù)雜性,傳統(tǒng)的開源方案如Acitivities和drools,對于我的業(yè)務(wù)來說,過于重了。同時(shí),阿里巴巴開源的EQexpress作為規(guī)則引擎,除了groovy腳本具備的靈活性、穩(wěn)定性外,還具有線程安全、與Spring親和性好等優(yōu)點(diǎn)。我們并沒有使用EQexpress,主要是顧慮其在社區(qū)內(nèi)應(yīng)用歷史不長,文檔不夠豐富全面,一旦出問題難定位等原因。
達(dá)達(dá)物流采用了groovy腳本作為規(guī)則引擎。一方面是作為Java系統(tǒng)開發(fā)技術(shù)棧,開發(fā)人員對groovy上手快,另一方面,結(jié)合當(dāng)前業(yè)務(wù)場景其靈活性滿足要求,其三,groovy腳本與java虛擬機(jī)的兼容性好,在并發(fā)量大時(shí),性能有報(bào)障,即便遇到性能問題,由于良好的社區(qū)生態(tài)也更容易獲得幫助。
對于易用性,通過代碼會有一個(gè)直觀的感受:
drools腳本非常接近于自然語言,運(yùn)營等非技術(shù)背景的同時(shí)很容易操作上手:
groovy 仍然具有很多技術(shù)細(xì)節(jié),非技術(shù)背景同時(shí)很難直接使用:
3、風(fēng)控流式計(jì)算
在風(fēng)控流式計(jì)算中,累計(jì)函數(shù)是一個(gè)非常通用的場景。用一句話概括:某事件段內(nèi),若干個(gè)條件(維度)小,某個(gè)值的統(tǒng)計(jì)值(包括總次數(shù)、最值、中數(shù))等。
實(shí)現(xiàn)該功能的技術(shù)方案有redis, mongoDB, flink三種。redis輕量易用性能好,flink復(fù)雜消耗資源多但可追溯,而mongoDB的方案屬于復(fù)雜性與性能的平衡,且支持復(fù)雜的統(tǒng)計(jì)函數(shù)。以下是三種技術(shù)方案的對比。
達(dá)達(dá)最終采用了Redis的實(shí)現(xiàn)方案。這里的原因也很簡單,redis足夠簡單靈活,性能好,適合互聯(lián)網(wǎng)應(yīng)用,同時(shí)達(dá)達(dá)的業(yè)務(wù)風(fēng)控對溯源性要求不高,大多場景均是短時(shí)間窗下場景。
下面以某個(gè)設(shè)備上訪問次數(shù)為例,基于redis zset數(shù)據(jù)結(jié)構(gòu),舉例介紹下累計(jì)函數(shù)的實(shí)現(xiàn)。
實(shí)現(xiàn)代碼:
4、架構(gòu)高可用設(shè)計(jì)
在服務(wù)本身支持彈性伸縮動態(tài)擴(kuò)容的基礎(chǔ)上,我們將高可用設(shè)計(jì)的關(guān)注點(diǎn)放在了隔離設(shè)計(jì)上。
a、按照隔離粒度,可以分為三級:服務(wù)級隔離,接口級隔離,接口內(nèi)邏輯隔離。
Ⅰ服務(wù)隔離。服務(wù)隔離是指風(fēng)控服務(wù)與業(yè)務(wù)服務(wù)做隔離部署。并且,當(dāng)整個(gè)風(fēng)控服務(wù)出現(xiàn)異常時(shí),業(yè)務(wù)服務(wù)作為接入方,應(yīng)該具備能力降級運(yùn)行。比如風(fēng)控服務(wù)出現(xiàn)不可用時(shí),登錄環(huán)節(jié)、下單環(huán)節(jié)均依賴風(fēng)控服務(wù),此時(shí)該主流程環(huán)節(jié)應(yīng)該不受風(fēng)控服務(wù)不可用的阻塞,仍然能夠正常工作。
Ⅱ接口隔離。接口隔離是指,在接口粒度做降級設(shè)計(jì),當(dāng)其中一個(gè)接口不可用時(shí),只有該接口降級提供服務(wù),只有當(dāng)前接口熔斷短路,不能影響其他接口的可用性。在設(shè)計(jì)中注意將接口的熔斷分開在不同的線程池內(nèi)部署就能實(shí)現(xiàn),這里對實(shí)現(xiàn)細(xì)節(jié)就不做贅述了。
Ⅲ內(nèi)部邏輯隔離。事實(shí)上,很多服務(wù)都有內(nèi)部邏輯的降級設(shè)計(jì),比如最常見的三方依賴降級。風(fēng)控之所以不同在于,風(fēng)控作為獨(dú)立的服務(wù),同時(shí)對多種場景提供服務(wù),同一個(gè)場景內(nèi)由若干因子、規(guī)則同時(shí)執(zhí)行最終得到結(jié)果,有時(shí)候因子、規(guī)則多達(dá)上百個(gè),所以對場景、因子、規(guī)則之間隔離就非常有必要。當(dāng)其中一個(gè)因子異常時(shí),只影響并跳過依賴該因子的規(guī)則,不會影響到其他規(guī)則。通過隔離,將異常帶來的業(yè)務(wù)損失降低到最小。
b、按照隔離手段,可分未手動隔離和自動隔離。
Ⅰ自動隔離。在各級交互界面之間,當(dāng)下游模塊出現(xiàn)異常時(shí),服務(wù)會自動降級為一個(gè)業(yè)務(wù)可接收的有損狀態(tài),維持上游模塊正常運(yùn)行。比如接口出現(xiàn)異常達(dá)到一定比例后,具備自動熔斷,不再校驗(yàn)風(fēng)險(xiǎn),避免影響接口整個(gè)響應(yīng)事件,甚至業(yè)務(wù)的正確性。
Ⅱ手動隔離。在各級交互界面之間,可以以手工開關(guān)的方式做隔離。比如訂運(yùn)單主流程可以獨(dú)立于風(fēng)控服務(wù)運(yùn)行,比如大促期間,服務(wù)壓力過大,可通過手動關(guān)閉若干非必要風(fēng)控,降低系統(tǒng)并發(fā),緩解系統(tǒng)壓力,提升核心流程性能等方式。
本文介紹了互聯(lián)網(wǎng)服務(wù)面臨的業(yè)務(wù)風(fēng)控的調(diào)整,并結(jié)合達(dá)達(dá)物流自身的業(yè)務(wù)特殊性,介紹了同城物流行業(yè)的業(yè)務(wù)風(fēng)控場景。在此背景下,本文介紹了達(dá)達(dá)風(fēng)控系統(tǒng)的架構(gòu)設(shè)計(jì),并對架構(gòu)設(shè)計(jì)中的關(guān)鍵技術(shù)做了介紹,比如規(guī)則引擎、實(shí)時(shí)統(tǒng)計(jì)和架構(gòu)的高可用設(shè)計(jì)。
關(guān)于作者
曹圣路: 達(dá)達(dá)集團(tuán)高級工程師, 2019年加入達(dá)達(dá)集團(tuán), 達(dá)達(dá)物流風(fēng)控系統(tǒng)技術(shù)負(fù)責(zé)人之一,目前投入在達(dá)達(dá)用戶增長團(tuán)隊(duì),致力于構(gòu)建完善的營銷系統(tǒng)支持業(yè)務(wù)的高速增長。
陳小欽:達(dá)達(dá)集團(tuán)高級工程師,2020年加入達(dá)達(dá)集團(tuán),從零搭建基于規(guī)則引擎的風(fēng)控系統(tǒng)的技術(shù)負(fù)責(zé)人之一,目前投入在達(dá)達(dá)用戶增長團(tuán)隊(duì),致力于通過風(fēng)控支持業(yè)務(wù)穩(wěn)定健康的增長。
瑪氏中國|2025年度瑪氏箭牌北京區(qū)域包材及原材料倉儲(VMI)項(xiàng)目
2285 閱讀華為的物流“布局”,為何備受關(guān)注?
1509 閱讀縱騰集團(tuán)借殼上市,6.4億收購A股上市公司綠康生化
1071 閱讀15倍爆發(fā)式增長,網(wǎng)絡(luò)貨運(yùn)行業(yè)跑出了一匹黑馬
916 閱讀京東物流一線員工日10周年:為5年、10年老員工授勛,為15000名標(biāo)桿頒獎
850 閱讀京東物流喀什倉正式運(yùn)營:南疆多縣市當(dāng)天可送貨上門
791 閱讀?16億美元大手筆!這家物流巨頭被UPS收購
705 閱讀閃電倉到底靠不靠譜?從倉儲操作看它的真實(shí)挑戰(zhàn)
703 閱讀順豐控股:2025年一季度業(yè)績持續(xù)穩(wěn)健增長,營收698.5億元,歸母凈利潤22.34億元 ,同比增16.87%
737 閱讀韻達(dá)2024年完成快遞業(yè)務(wù)量237.83億件
701 閱讀