業(yè)務(wù)安全系統(tǒng)淺談(二)

接上一篇(業(yè)務(wù)安全系統(tǒng)淺談(一)),這一篇簡單總結(jié)一下業(yè)務(wù)安全系統(tǒng)在‘非主站應(yīng)用’環(huán)境下的‘指標(biāo)轉(zhuǎn)化與增強’篡诽、‘業(yè)務(wù)安全規(guī)則引擎’兩個服務(wù)在當(dāng)初設(shè)計時的一些考慮清焕。

首先茎毁,為什么需要這兩個服務(wù)?

背后的邏輯是這樣的墓懂,‘業(yè)務(wù)安全’系統(tǒng)為了能夠識別用戶的“非法”行為:

- 需要不斷收集用戶在平臺上產(chǎn)生的各類行為數(shù)據(jù)焰宣,數(shù)據(jù)流向“實時計算平臺”和“大數(shù)據(jù)存儲平臺”

- 基于數(shù)據(jù),對業(yè)務(wù)安全關(guān)注的各個‘指標(biāo)’/特征值 (針對的都是每個用戶的‘指標(biāo)’捕仔,如匕积,‘過去30(指標(biāo)可配)分鐘內(nèi)的貨源的點擊次數(shù)’,‘司機過去3個小時(指標(biāo)可配)內(nèi)的GPS 位移距離’榜跌,過去2個小時內(nèi)(指標(biāo)可配)手機的重力感應(yīng)數(shù)據(jù)變化等等) 進(jìn)行累計計算(’指標(biāo)‘累計計算的公式闪唆,通過后臺配置自動生成代碼在實時計算平臺上進(jìn)行執(zhí)行、存儲結(jié)果

- 業(yè)務(wù)安全規(guī)則的定義(用groovy或 js 等語言描述的snippet -- 我們用的js)在后臺配置斜做,配置結(jié)果是一組按‘場景’組織的可執(zhí)行的rule set(規(guī)則集苞氮,其中每個rule 分為rule trigger和rule action 兩個部分(其實是一些用js寫的 snippet codes)及規(guī)則中所關(guān)聯(lián)的各類‘指標(biāo)’/特征值

例子-業(yè)務(wù)安全規(guī)則定義

- 通過實時計算平臺,將用戶行為數(shù)據(jù)進(jìn)行過濾瓤逼,并按‘場景’ 分類輸出(輸出成raw_event_data)笼吟。這里‘場景’(通過sceneId表征库物,見上圖)的概念在車貨匹配業(yè)務(wù)中分為,‘searchCargo’(貨源搜索), 'viewCargo'(查看貨源), 'phoneCall'(撥打貨源)贷帮,‘發(fā)布貨源’(sendCargo)戚揭,‘填寫貨源備注’等等(也可以組合定義)∧焓啵‘場景’ 的定義不僅用于分類輸入給?'指標(biāo)轉(zhuǎn)化與增強'服務(wù)的raw_event_data民晒, 還用于關(guān)聯(lián)輸入給規(guī)則引擎的事實數(shù)據(jù)(rule_fact_data)及規(guī)則的定義部分(rule set)

(鋪墊了這么多,才講到“為什么” ~~~~)

- '指標(biāo)轉(zhuǎn)化與增強'服務(wù)將消費MQ(kafka)中的raw_data锄禽,根據(jù)其sceneId 來匹配所定義的業(yè)務(wù)安全規(guī)則集(rule set)潜必,及rule set 關(guān)聯(lián)的‘指標(biāo)’定義,來“轉(zhuǎn)化和增強” raw_event_data 成為rule_fact_data

例子-Raw_Event_Data 結(jié)構(gòu)
例子-Rule_Fact_Data 結(jié)構(gòu)

- '規(guī)則引擎'服務(wù)則接收rule_fact_data, 根據(jù)其中的sceneId 來匹配rule set 并執(zhí)行每個rule 的rule trigger 部分和rule action 部分沃但。 腳本引擎采用的是java 8 中的nashorn磁滚。 當(dāng)初決定采用哪種語言(甚至開源的rule engine 框架)來描述和定義規(guī)則,著實有一個曲折決策的過程

????????-- 我們看了drools宵晚。但認(rèn)為drools 著實有些重垂攘,雖然對于各類復(fù)雜的rule set 的組織(一個完備的規(guī)則引擎所需的“規(guī)則互斥”、“規(guī)則沖突”淤刃、“規(guī)則執(zhí)行順序”設(shè)置等能力均支持良好)及執(zhí)行效率支持的非常好晒他,但真的不太適合我們的場景。我們預(yù)想的是逸贾,隨著系統(tǒng)的不斷演進(jìn)陨仅,情況可能真不是像預(yù)想的那樣美好---- “提供一個各項規(guī)則配置能力靈活的后臺,產(chǎn)品或運營同學(xué)可以信手拈來隨意配置各種復(fù)雜的業(yè)務(wù)規(guī)則”耕陷,而實際上卻可能更加骨感一些 ---- “提供有限的場景及指標(biāo)的定義掂名,通過后臺來配置成業(yè)務(wù)安全的規(guī)則;生成規(guī)則的過程哟沫,通過預(yù)定義的規(guī)則模板來生成饺蔑。個別的情況,可以提供一個text 框嗜诀,讓RD 來輔助寫rule codes 且可以實時地更新到線上并生效”猾警。在這種考慮之下,drools 就pass 了隆敢,而決定采用某個腳本語言來自己實現(xiàn)一個規(guī)則引擎

? ? ? ?--? 至于腳本語言的選擇发皿,就沒那么糾結(jié)了。當(dāng)時拂蝎,在其他項目里面已經(jīng)有采用js 來構(gòu)建規(guī)則引擎的使用經(jīng)驗(很簡單的使用)穴墅,雖然groovy 是一個很好的option (JS 和 Groovy 都‘近’ java,都比較容易集成使用),但還是放棄了(考慮時間等等成本)

再補一張圖玄货,應(yīng)該就更清晰了

調(diào)用時序圖

PS:

整個業(yè)務(wù)安全系統(tǒng)(工程部分)從最早的版本更新上線到目前的版本大致花了一個多月的時間皇钞,其中對設(shè)計思路、協(xié)議定義規(guī)范松捉、腳本語言的選擇等等架構(gòu)決策也偶有反復(fù)夹界,廢棄了一些原有的代碼,但團隊最后還是都堅持了下來隘世。整個過程走過來回頭來看可柿,留下的也都是財富。

感謝團隊成員 - 曹雷丙者、趙偉复斥、陳長、王雪強蔓钟、李昆鵬永票、牛遷遷的努力與貢獻(xiàn)!



這里沒有對系統(tǒng)細(xì)節(jié)的實現(xiàn)做過多的介紹滥沫,如果有對業(yè)務(wù)安全系統(tǒng)搭建感興趣的同學(xué),歡迎大家一起討論并學(xué)習(xí)進(jìn)步键俱。畢竟兰绣,業(yè)務(wù)安全的topic 非常之豐富。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末编振,一起剝皮案震驚了整個濱河市缀辩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踪央,老刑警劉巖臀玄,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異畅蹂,居然都是意外死亡健无,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門液斜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來累贤,“玉大人,你說我怎么就攤上這事少漆【矢啵” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵示损,是天一觀的道長渗磅。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么始鱼? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任仔掸,我火速辦了婚禮,結(jié)果婚禮上风响,老公的妹妹穿的比我還像新娘嘉汰。我一直安慰自己,他們只是感情好状勤,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布鞋怀。 她就那樣靜靜地躺著,像睡著了一般持搜。 火紅的嫁衣襯著肌膚如雪密似。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天葫盼,我揣著相機與錄音残腌,去河邊找鬼。 笑死贫导,一個胖子當(dāng)著我的面吹牛抛猫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孩灯,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼闺金,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了峰档?” 一聲冷哼從身側(cè)響起败匹,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讥巡,沒想到半個月后掀亩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡欢顷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年槽棍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吱涉。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡刹泄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出怎爵,到底是詐尸還是另有隱情特石,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布鳖链,位于F島的核電站姆蘸,受9級特大地震影響墩莫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逞敷,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一狂秦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧推捐,春花似錦裂问、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至皮壁,卻和暖如春椭更,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛾魄。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工虑瀑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滴须。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓舌狗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扔水。 傳聞我的和親對象是個殘疾皇子把夸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容