<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Jack Jiang

    我的最新工程MobileIMSDK:http://git.oschina.net/jackjiang/MobileIMSDK
    posts - 494, comments - 13, trackbacks - 0, articles - 1

    本文由騰訊技術(shù)工程師remyliu分享,原題“微信萬億數(shù)據(jù)倉庫架構(gòu)設(shè)計與實現(xiàn)”,本文收錄時有內(nèi)容修訂和重新排版。

    1、引言

    沒有足夠的特征數(shù)據(jù),安全策略將是“無根之木,無源之水”。

    微信的安全數(shù)據(jù)特征倉庫應(yīng)運而生,并成為整個安全業(yè)務(wù)的特征數(shù)據(jù)存儲中心,每天服務(wù)了萬億級的特征數(shù)據(jù)讀寫請求,為整個微信安全策略提供了可靠的數(shù)據(jù)支撐,是微信安全基石之所在。

    然而,微信安全特征數(shù)據(jù)倉庫不僅僅是一個存儲中心,更是一個特征管理和數(shù)據(jù)質(zhì)量管理的中心。

    微信的安全數(shù)據(jù)特征倉庫在演進(jìn)過程中,一直致力于提升特征管理能力和數(shù)據(jù)質(zhì)量保障,實現(xiàn)了特征的管理、共享、分析和數(shù)據(jù)質(zhì)量檢測等功能。

    本文將介紹微信的安全數(shù)據(jù)特征倉庫的背景起源、技術(shù)演進(jìn)、當(dāng)前的架構(gòu)設(shè)計和實踐,以及數(shù)據(jù)質(zhì)量保證系統(tǒng)的實現(xiàn)。希望給中大型IM系統(tǒng)的安全數(shù)據(jù)特征倉庫的設(shè)計帶來啟發(fā)。

     
     
    技術(shù)交流:

    (本文已同步發(fā)布于:http://www.52im.net/thread-4374-1-1.html

    2、安全策略開發(fā)流程

    安全業(yè)務(wù)的核心邏輯是在安全策略中實現(xiàn)的。整個的策略開發(fā)流程包括特征數(shù)據(jù)的收集,安全策略的編寫實現(xiàn),和策略的反饋評估(如下圖所示)。

    其中特征數(shù)據(jù)的收集是必不可少的環(huán)節(jié),數(shù)據(jù)的質(zhì)量將直接影響安全策略的效果。

    特征數(shù)據(jù)收集主要包括:

    • 1)數(shù)據(jù)接入;
    • 2)特征的計算;
    • 3)特征的存儲。

    傳統(tǒng)特征數(shù)據(jù)收集流程:

    如上圖所示:在數(shù)據(jù)倉庫還未建立時,業(yè)務(wù)同學(xué)通過消費離線存儲mmdata和tdw接入數(shù)據(jù),通過Flink流式計算或者自定義模塊對數(shù)據(jù)進(jìn)行加工,計算出需要的特征,最終存儲到自行維護(hù)的KV,然后在安全策略平臺上編寫安全策略,讀取KV中的數(shù)據(jù), 實現(xiàn)需要的安全邏輯。

    3、為什么需要安全特征數(shù)據(jù)倉庫

    前面提到在還未建立數(shù)據(jù)倉庫時,業(yè)務(wù)同學(xué)都按照自己的方式去存儲計算出的特征,大多通過自行申請部署KV來存儲(如下圖中的架構(gòu)):如A同學(xué)把部署一套KV集群,存儲特征到KV表中,B同學(xué)把特征存儲到同KV集群的不同表中,C同學(xué)又額外申請了另外一套KV集群存儲。

    傳統(tǒng)安全后臺(各業(yè)務(wù)特征分散存儲):

    這種特征的分散存儲,導(dǎo)致業(yè)務(wù)同學(xué)只了解自己熟悉的特征,難以交流和共享,特征缺乏統(tǒng)一的管理,數(shù)據(jù)質(zhì)量難以保證,不同的存儲方式,也導(dǎo)致特征訪問接口的混亂,業(yè)務(wù)系統(tǒng)的可靠性也難以保證。

    針對上述的問題:我們希望把所有業(yè)務(wù)的特征,按統(tǒng)一的規(guī)范,建立統(tǒng)一的存儲,方便特征的共享、管理和維護(hù)、并建立數(shù)據(jù)質(zhì)量保障體系, 為策略提供可靠的數(shù)據(jù)。所以我們需要開發(fā)數(shù)據(jù)倉庫。

    問題和目標(biāo):

    4、安全業(yè)務(wù)的后臺架構(gòu)

    當(dāng)前,我們已經(jīng)把所有的安全策略統(tǒng)一到安全策略平臺進(jìn)行開發(fā)和管理,特征數(shù)據(jù)的接入和計算統(tǒng)一到了Flink實時計算平臺和特征平臺。

    數(shù)據(jù)倉庫作為承上啟下的部分,是整個業(yè)務(wù)體系中不可或缺的部分。

    總結(jié)一下它作用就是:

    • 1)對上為在安全策略平臺上的安全策略提供了數(shù)據(jù)讀寫;
    • 2)對下為實時計算平臺和特征平臺計算輸出的特征提供了存儲。

    安全業(yè)務(wù)后臺架構(gòu):

    5、安全特征數(shù)據(jù)倉庫的存儲選型

    微信的安全業(yè)務(wù)特征數(shù)據(jù)主要有2種類型:

    • 1)離線特征:用來滿足離線計算數(shù)據(jù)導(dǎo)入線上實時使用的需求(通常特征離線計算,定期的批量后臺上線,提供在線讀,但不支持實時寫入);
    • 2)實時特征:用來滿足實時的在線讀寫需求。

    微信內(nèi)部有多種非常成熟穩(wěn)定的自研KV:實時讀寫KV(簡稱實時KV)、離線寫實時讀KV(簡稱離線KV)、***KV等等,這些KV已經(jīng)在多個業(yè)務(wù)被驗證,有非常好的性能和可靠性,有團(tuán)隊做長期的維護(hù),為此數(shù)據(jù)倉庫的底層存儲采用了微信自研的KV。

    微信自研的KV主要特點如下:

    具體就是:

    • 1)離線KV適合離線特征要求的場景:擁有非常好的讀性能,并且提供了版本管理功能,在處理有問題數(shù)據(jù)時可以非常方便的可以回退版本,采用這種KV存儲時,value一般是protobuf對象,新增特征時可以在pb中增加字段;
    • 2)實時KV適合實時特征的場景:在線實時讀寫性能優(yōu)秀,而且支持?jǐn)?shù)據(jù)過期淘汰,該KV提供了類MySQL表的概念,KV表定義類似于一個MySQL表,而每一個安全業(yè)務(wù)特征剛好可以用表的一個字段表示。

    6、數(shù)據(jù)倉庫的架構(gòu)設(shè)計和演進(jìn)

    6.1統(tǒng)一存儲統(tǒng)一接口

    數(shù)據(jù)倉庫第一個版本,針對特征存儲分散訪問接口混亂問題,首先部署了公共的實時KV/離線KV集群,并實現(xiàn)了一個接入層。新增特征和歷史特征放到公共的KV存儲集群,并且在接入層屏蔽了底層KV的細(xì)節(jié),提供了統(tǒng)一的讀寫特征的接口。

    數(shù)據(jù)倉庫架構(gòu)1.0版:

    接入層支持任意多個KV集群,支持多個表,為屏蔽KV的細(xì)節(jié),接入層為每個特征分配唯一的標(biāo)識<sceneid, columnid>,讀寫特征數(shù)據(jù)使用唯一標(biāo)識進(jìn)行,不需要關(guān)注KV類型和KV表ID,方便業(yè)務(wù)的接入使用。

    統(tǒng)一接口:

    接入層還實現(xiàn)配置管理、參數(shù)校驗、模塊校驗、權(quán)限校驗、流水上報、PV統(tǒng)計等功能。

    6.2讀寫分離和多IDC同步

    1)讀寫分離:數(shù)據(jù)倉庫的讀請求量遠(yuǎn)遠(yuǎn)多于實時寫入量,為了提高性能,減少讀寫之間的相互影響,接入層做了讀寫分離,將讀和寫接口拆分到兩個模塊。

    2)數(shù)據(jù)多IDC同步:數(shù)據(jù)倉庫和業(yè)務(wù)都采用的是多IDC部署,為了不降低查詢性能,不希望業(yè)務(wù)跨IDC訪問存儲,所以底層的KV也是多IDC部署。這里就帶來一個問題,特征數(shù)據(jù)如何在多IDC的KV之間進(jìn)行同步? 例如業(yè)務(wù)在上海寫入一個特征,希望在深圳也能讀到這個特征。

    這里按特征類型進(jìn)行分類處理:

    • 1)離線特征數(shù)據(jù)同步:離線特征數(shù)據(jù)上線流程是通過離線計算在文件系統(tǒng)中生成一個文件,然后將文件導(dǎo)入到離線KV, 而離線KV支持多個IDC共享同一份數(shù)據(jù),數(shù)據(jù)文件只需要生成一份,所有IDC的離線KV拉取同一個文件,新數(shù)據(jù)最終能同步到所有IDC上;
    • 2)實時特征數(shù)據(jù)同步:實時特征的同步采用微信自研的分布式隊列組件,該組件提供了高可靠、高可用、高吞吐、低延時的數(shù)據(jù)消息隊列服務(wù)。數(shù)據(jù)倉庫寫接入模塊在寫入數(shù)據(jù)時,同時將數(shù)據(jù)寫一份到分布式隊列,使用隊列做跨IDC的數(shù)據(jù)同步,在其他IDC啟動進(jìn)程消費隊列中的數(shù)據(jù),寫入到本IDC的實時KV,實現(xiàn)實時特征數(shù)據(jù)的同步。

    數(shù)據(jù)倉庫架構(gòu)2.0版:

    6.3異步寫和替代分布式隊列

    1)異步寫入:前一個版本中實時特征是同步寫入,影響業(yè)務(wù)的性能,業(yè)務(wù)希望是異步寫入。

    2)替代分布式隊列:前一個版本中分布式隊列采用的是公共的集群,眾多業(yè)務(wù)使用,出現(xiàn)過數(shù)據(jù)倉庫受干擾影響特征數(shù)據(jù)同步。

    為此:在數(shù)據(jù)倉庫中新增一個異步消息隊列模塊寫MQ,用于異步寫入。和分布式隊列相比,MQ更輕量,而且MQ我們可以自行維護(hù),更可控。所以新架構(gòu)中通過MQ實現(xiàn)實時特征的多IDC數(shù)據(jù)的同步,替代了分布式隊列,保證數(shù)據(jù)同步不受其他業(yè)務(wù)影響。

    數(shù)據(jù)倉庫架構(gòu)3.0版:

    6.4運營系統(tǒng)

    前面3個版本解決了特征存儲分散、讀寫接口不統(tǒng)一、數(shù)據(jù)同步、讀寫性能問題,但是特征的上線依然采用的是配置發(fā)布上線的方式,效率依然低效。

    更重要的是特征缺乏統(tǒng)一的管理,共享困難,難以滿足業(yè)務(wù)的需求。

    業(yè)務(wù)常常也有各種疑問:

    為此數(shù)據(jù)倉庫新增運營系統(tǒng)模塊,實現(xiàn)了特征申請、特征上線、特征管理&分析、特征值查詢/修改、特征數(shù)據(jù)質(zhì)量管理等功能。

    數(shù)據(jù)倉庫架構(gòu)4.0版:

    1)特征申請:

    用戶不再需要手動的修改配置文件來新增特征,可直接通過WEB頁面申請,填寫必要的特征信息,通過通用審批系統(tǒng)進(jìn)行審批。

    2)特征上線:

    用戶不在需要手動的發(fā)布配置上線特征,無論是新增的實時特征還是離線特征,審批通過后將自動化的上線,提升體驗和效率。

    3)特征管理:

    特征管理支持對特征meta信息進(jìn)行查詢和修改,包括特征所屬的業(yè)務(wù)分類(索引)、特征類型、特征負(fù)責(zé)人、給特征打tag等等,業(yè)務(wù)可以方便的查詢需要特征信息,避免重復(fù)的計算,方便各業(yè)務(wù)共享特征。

    ▲ 特征管理頁面

    4)特征分析:

    追蹤特征的原始數(shù)據(jù)來源、計算過程、數(shù)據(jù)流路徑、最終的存儲信息等等, 可以追蹤特征完整生產(chǎn)流程。

    ▲ 特征分析頁面

    5)特征值查詢&修改:運營系統(tǒng)支持在WEB頁面查詢特征值和修改特征值;

    ▲ 特征值查詢頁面

    6)特征數(shù)據(jù)質(zhì)量管理:保障數(shù)據(jù)質(zhì)量, 下一章節(jié)詳細(xì)講述。

    7、數(shù)據(jù)質(zhì)量保障手段1:安全特征標(biāo)準(zhǔn)化

    數(shù)據(jù)倉庫主要通過兩個方面來保障數(shù)據(jù)質(zhì)量:特征的標(biāo)準(zhǔn)化和數(shù)據(jù)空跑系統(tǒng)。本節(jié)分享特征的標(biāo)準(zhǔn)化。

    特征的標(biāo)準(zhǔn)化是保證數(shù)據(jù)倉庫數(shù)據(jù)質(zhì)量的手段之一,標(biāo)準(zhǔn)化是指對數(shù)據(jù)倉庫中的特征進(jìn)行規(guī)范化處理,使得特征能夠達(dá)到一致性、可重復(fù)性等標(biāo)準(zhǔn),從而提高數(shù)據(jù)的可靠性和準(zhǔn)確性。

    對于新增實時/離線特征:數(shù)據(jù)倉庫制定了的特征規(guī)范文檔,并按規(guī)范文檔的要求,特征申請/管理頁面必須正確的補充完整特征信息,如特征類型、業(yè)務(wù)分類等等,后臺對每個特征都會進(jìn)行校驗,不符合規(guī)范的特征無法錄入。

    另外:數(shù)據(jù)倉庫還提供了接入編程指導(dǎo)文檔,并給出完整的C++編程實例,致力于提供標(biāo)準(zhǔn)化的編程最佳實踐。

    8、數(shù)據(jù)質(zhì)量保障手段2:數(shù)據(jù)空跑系統(tǒng)

    離線特征數(shù)據(jù)來自于業(yè)務(wù)離線計算在分布式文件系統(tǒng)中生成數(shù)據(jù)文件,然后將文件上線。

    歷史上曾因為生成的數(shù)據(jù)文件存在錯誤,存在錯誤的文件數(shù)據(jù)被上線到離線KV,導(dǎo)致策略出現(xiàn)故障。

    為了保障離線特征數(shù)據(jù)的質(zhì)量,數(shù)據(jù)倉庫設(shè)計了一套空跑系統(tǒng),在上線前對數(shù)據(jù)文件進(jìn)行檢查,避免存在問題的數(shù)據(jù)上線到現(xiàn)網(wǎng)。

    數(shù)據(jù)空跑架構(gòu):

    數(shù)據(jù)空跑架構(gòu)如上圖所示,離線特征數(shù)據(jù)的上線也納入到了運營系統(tǒng)的管理中。

    整個的空跑流程如下。

    1)業(yè)務(wù)發(fā)起數(shù)據(jù)上線:運營系統(tǒng)將數(shù)據(jù)上線到備用的離線KV表,也就是用于空跑的KV表;

    2)打開空跑開關(guān):按一定的比率采樣現(xiàn)網(wǎng)的讀請求,旁路到新增的讀MQ模塊,該模塊讀空跑表的數(shù)據(jù),和當(dāng)前現(xiàn)網(wǎng)做對比, 分析差異率。這里采用的動態(tài)采樣, 如果表的PV高則采樣率低,PV低則采樣率高或者100%采樣,避免請求量小的表無法進(jìn)行空跑,而請求量大的表空跑流量太高又消耗太多資源。

    3)計算和分析差異率:如果差異率超過了閾值,就自動的攔截數(shù)據(jù)上線,如果閾值檢查通過,就繼續(xù)后續(xù)的檢查流程,最終自動上線數(shù)據(jù)文件到現(xiàn)網(wǎng)離線KV。

    差異率示例會如下圖(詳細(xì)的展示了具體的差異細(xì)節(jié)):

    離線特征數(shù)據(jù)上線完整流程:

    完整的數(shù)據(jù)上線流程如上圖所示:空跑差異檢測通過后,需要檢查數(shù)據(jù)文件完整性,防止文件被修改或者覆蓋,最后數(shù)據(jù)再上線到現(xiàn)網(wǎng)數(shù)據(jù)倉庫系統(tǒng),通知業(yè)務(wù)數(shù)據(jù)上線成功。如果中間任何一個步驟出錯將告警給業(yè)務(wù)負(fù)責(zé)人,提醒人工介入處理。

    9、本文小結(jié)

    微信后臺安全特征數(shù)據(jù)倉庫將分散的特征全部集中統(tǒng)一管理,提供統(tǒng)一的訪問接口,標(biāo)準(zhǔn)化每個一個特征,建立了統(tǒng)一的規(guī)范。

    并且在此基礎(chǔ)保障了數(shù)據(jù)的質(zhì)量,夯實了整個安全業(yè)務(wù)的基礎(chǔ),助力一站式的數(shù)據(jù)-策略開發(fā),極大的提升了安全對抗的效率,實現(xiàn)了數(shù)據(jù)價值的最大化。

    10、相關(guān)資料

    [1] 探討組合加密算法在IM中的應(yīng)用

    [2] IM聊天系統(tǒng)安全手段之通信連接層加密技術(shù)

    [3] IM聊天系統(tǒng)安全手段之傳輸內(nèi)容端到端加密技術(shù)

    [4] 理論聯(lián)系實際:一套典型的IM通信協(xié)議設(shè)計詳解(含安全層設(shè)計)

    [5] 微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解

    [6] 移動端安全通信的利器——端到端加密(E2EE)技術(shù)詳解

    [7] 通俗易懂:一篇掌握即時通訊的消息傳輸安全原理

    [8] 基于Netty的IM聊天加密技術(shù)學(xué)習(xí):一文理清常見的加密概念、術(shù)語等

    [9] 手把手教你為基于Netty的IM生成自簽名SSL/TLS證書

    11、微信團(tuán)隊的其它技術(shù)文章

    IM全文檢索技術(shù)專題(一):微信移動端的全文檢索優(yōu)化之路

    IM全文檢索技術(shù)專題(二):微信移動端的全文檢索多音字問題解決方案

    微信團(tuán)隊分享:iOS版微信的高性能通用key-value組件技術(shù)實踐

    微信團(tuán)隊分享:iOS版微信是如何防止特殊字符導(dǎo)致的炸群、APP崩潰的?

    微信團(tuán)隊原創(chuàng)分享:iOS版微信的內(nèi)存監(jiān)控系統(tǒng)技術(shù)實踐

    iOS后臺喚醒實戰(zhàn):微信收款到賬語音提醒技術(shù)總結(jié)

    微信團(tuán)隊分享:微信Android版小視頻編碼填過的那些坑

    企業(yè)微信客戶端中組織架構(gòu)數(shù)據(jù)的同步更新方案優(yōu)化實戰(zhàn)

    微信團(tuán)隊披露:微信界面卡死超級bug“15。。。。”的來龍去脈

    微信后臺基于時間序的海量數(shù)據(jù)冷熱分級架構(gòu)設(shè)計實踐

    微信團(tuán)隊原創(chuàng)分享:Android版微信的臃腫之困與模塊化實踐之路

    微信后臺團(tuán)隊:微信后臺異步消息隊列的優(yōu)化升級實踐分享

    微信團(tuán)隊原創(chuàng)分享:微信客戶端SQLite數(shù)據(jù)庫損壞修復(fù)實踐

    微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解

    微信團(tuán)隊原創(chuàng)分享:Android版微信后臺保活實戰(zhàn)分享(進(jìn)程保活篇)

    iOS版微信安裝包“減肥”實戰(zhàn)記錄

    移動端IM實踐:iOS版微信界面卡頓監(jiān)測方案

    微信“紅包照片”背后的技術(shù)難題

    移動端IM實踐:iOS版微信小視頻功能技術(shù)方案實錄

    移動端IM實踐:Android版微信如何大幅提升交互性能(一)

    移動端IM實踐:實現(xiàn)Android版微信的智能心跳機制

    IPv6技術(shù)詳解:基本概念、應(yīng)用現(xiàn)狀、技術(shù)實踐(上篇)

    微信技術(shù)分享:微信的海量IM聊天消息序列號生成實踐(算法原理篇)

    微信團(tuán)隊分享:Kotlin漸被認(rèn)可,Android版微信的技術(shù)嘗鮮之旅

    社交軟件紅包技術(shù)解密(十一):解密微信紅包隨機算法(含代碼實現(xiàn))

    微信團(tuán)隊分享:極致優(yōu)化,iOS版微信編譯速度3倍提升的實踐總結(jié)

    IM“掃一掃”功能很好做?看看微信“掃一掃識物”的完整技術(shù)實現(xiàn)

    微信團(tuán)隊分享:微信直播聊天室單房間1500萬在線的消息架構(gòu)演進(jìn)之路

    企業(yè)微信的IM架構(gòu)設(shè)計揭秘:消息模型、萬人群、已讀回執(zhí)、消息撤回等

    IM全文檢索技術(shù)專題(四):微信iOS端的最新全文檢索技術(shù)優(yōu)化實踐

    微信團(tuán)隊分享:微信后臺在海量并發(fā)請求下是如何做到不崩潰的

    微信Windows端IM消息數(shù)據(jù)庫的優(yōu)化實踐:查詢慢、體積大、文件損壞等

    (本文已同步發(fā)布于:http://www.52im.net/thread-4374-1-1.html



    作者:Jack Jiang (點擊作者姓名進(jìn)入Github)
    出處:http://www.52im.net/space-uid-1.html
    交流:歡迎加入即時通訊開發(fā)交流群 215891622
    討論:http://www.52im.net/
    Jack Jiang同時是【原創(chuàng)Java Swing外觀工程BeautyEye】【輕量級移動端即時通訊框架MobileIMSDK】的作者,可前往下載交流。
    本博文 歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處(也可前往 我的52im.net 找到我)。


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    Jack Jiang的 Mail: jb2011@163.com, 聯(lián)系QQ: 413980957, 微信: hellojackjiang
    主站蜘蛛池模板: 国产∨亚洲V天堂无码久久久| 三年片免费高清版| 久久夜色精品国产噜噜亚洲AV| 黄网址在线永久免费观看| 特级无码毛片免费视频尤物| 黄人成a动漫片免费网站| 亚洲人成77777在线观看网| 亚洲AV永久无码精品| 亚洲日韩涩涩成人午夜私人影院| 我要看WWW免费看插插视频| 99久久精品免费视频| 中文字幕免费在线观看动作大片| 国产亚洲视频在线| 亚洲国产精品成人AV在线| 亚洲婷婷综合色高清在线| 久久精品国产亚洲AV麻豆不卡| 国产亚洲av片在线观看18女人| 国产乱人免费视频| 免费看片A级毛片免费看| 在线观看无码AV网站永久免费 | 毛片a级毛片免费观看品善网| 99蜜桃在线观看免费视频网站| 一级有奶水毛片免费看| 无遮挡国产高潮视频免费观看 | 嘿嘿嘿视频免费网站在线观看| 久9久9精品免费观看| 国产好大好硬好爽免费不卡| 青柠影视在线观看免费高清 | 国产免费AV片无码永久免费| 在线观看免费精品国产| 在线播放免费播放av片| 韩国欧洲一级毛片免费| 看全色黄大色大片免费久久 | 特黄aa级毛片免费视频播放| 美国毛片亚洲社区在线观看| 久久久久亚洲AV无码去区首| 美女视频黄频a免费| 国产精品日本亚洲777| 免费精品视频在线| 国产成人无码免费网站| 在线看片免费人成视频久网下载|