在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于異常上線場景的實時攔截與問題分發(fā)策略

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-09-20 15:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

性能中臺負(fù)責(zé)MEG端研發(fā)數(shù)據(jù)的接入、傳輸、管理、應(yīng)用等各個環(huán)節(jié)。為了應(yīng)對移動應(yīng)用領(lǐng)域中端技術(shù)的快速迭代和線上突增問題的挑戰(zhàn),中臺提出了實時攔截與問題的分發(fā)機(jī)制,旨在在端上線的不同階段及時發(fā)現(xiàn)并攔截異常上線,最大程度減少線上變更對用戶體驗的不良影響。本文在數(shù)據(jù)建設(shè)的時效性和準(zhǔn)確性上進(jìn)行深入的探討,包括:變更上線的染色過程、基于染色I(xiàn)D的性能核心數(shù)據(jù)指標(biāo)的監(jiān)控、線上問題實時分發(fā)至相關(guān)模塊組件和人員等。

01

背景

1.1 業(yè)務(wù)背景

在快速發(fā)展的移動應(yīng)用領(lǐng)域中,持續(xù)的技術(shù)迭代是保持APP競爭力的關(guān)鍵因素。然而,對于規(guī)模龐大、用戶眾多的APP應(yīng)用,每一次的變更上線都存在引入線上問題的風(fēng)險。APP的各個組件模塊相互交織,一旦某處出現(xiàn)異常,往往會像連鎖反應(yīng)一樣影響整個系統(tǒng)的穩(wěn)定性,導(dǎo)致用戶體驗的下降。在以往的經(jīng)驗中,即便在開發(fā)和測試階段充分驗證,也難免會有一些問題在真實用戶環(huán)境中暴露出來。這些問題可能表現(xiàn)為崩潰、卡頓、功能失效等,嚴(yán)重影響用戶的使用體驗。在過去,應(yīng)對這些問題通常是事后進(jìn)行問題修復(fù),然而這種方式并不能完全避免線上問題對用戶體驗的不良影響。因此我們希望在業(yè)務(wù)迭代變更上線的過程中,盡可能早的發(fā)現(xiàn)和攔截問題,最大程度的降低問題對用戶的影響。因此,性能中臺引入了多級攔截和問題分發(fā)的機(jī)制,這一機(jī)制旨在在變更上線的不同灰度放量階段,對每次上線或者放量操作進(jìn)行染色形成唯一染色I(xiàn)D,通過對每個染色I(xiàn)D的核心性能數(shù)據(jù)指標(biāo)進(jìn)行監(jiān)控,一旦發(fā)現(xiàn)異常,多級攔截機(jī)制將會被觸發(fā),攔截本次上線以及后續(xù)放量。同時,問題實時分發(fā)機(jī)制能夠直接將問題指向?qū)е略搯栴}發(fā)生的模塊和組件以及開發(fā)和測試人員。從而準(zhǔn)確定位問題,并迅速修復(fù),避免問題在更大范圍內(nèi)擴(kuò)散。

1.2 技術(shù)背景

實時UV計算:在處理異常上線的攔截過程中,數(shù)據(jù)的實時消費(fèi)以及數(shù)據(jù)的時效性的要求特別高,必須在分鐘級別內(nèi)完成。同時,業(yè)務(wù)方不僅需要獲得異常的PV數(shù),同時也需要獲得在各個維度下異常影響的用戶數(shù)(UV)。但實時UV計算不能簡單地累加,這涉及到同維度間用戶交集的處理。例如:A版本和B版本異常影響的用戶數(shù)分別是100,但整體用戶數(shù)實際上可能不足200。但是也不能直接存儲用戶ID,例如通過使用HashSet或者HashMap存儲所有的用戶ID進(jìn)行去重,這面對大量用戶時,會占用大量的計算節(jié)點(diǎn)內(nèi)存資源。因此,我們采取一種計算的時效性和準(zhǔn)確性較高的數(shù)據(jù)結(jié)構(gòu)Bitmap來計算實時UV。

Bitmap 的底層數(shù)據(jù)結(jié)構(gòu)用的是 String 類型的 SDS 數(shù)據(jù)結(jié)構(gòu)來保存位數(shù)組,把每個字節(jié)數(shù)組的 8 個 bit 位利用起來,每個 bit 位 表示一個元素的二值狀態(tài)。該數(shù)據(jù)結(jié)構(gòu)能節(jié)約大量的存儲,同時在用戶群做交集和并集運(yùn)算的時候也有極大的便利。例如,每個用戶ID如果存儲在HashSet或者HashMap中,需要占4個字節(jié)即32bit,而一個用戶在Bitmap中只占一個bit。在做交并集運(yùn)算時,例如,員工1、員工2都是程序員,員工1使用蘋果手機(jī),那么如何查找使用蘋果手機(jī)的程序員用戶?

b987f6d4-576a-11ee-939d-92fbcf53809c.png

直接使用位運(yùn)算,使用蘋果手機(jī)的程序員用戶:(0000000110B & 0000000010B = 0000000010B)

b9a013fe-576a-11ee-939d-92fbcf53809c.png

異常反混淆:主要用于問題分發(fā)階段。APP廠商在發(fā)布應(yīng)用程序包時,通常會對包進(jìn)行混淆操作,這是為了提高APP應(yīng)用的安全性和減少反編譯的風(fēng)險。混淆是將源代碼中的符號、名稱和結(jié)構(gòu)等轉(zhuǎn)換為難以理解的形式,使得反編譯后的代碼難以還原為原始的源代碼,但是APP上報的異常信息也被混淆了。反混淆操作是將混淆后的異常信息還原為可讀的形式,使開發(fā)人員能夠更準(zhǔn)確地分析問題的原因,并迅速采取正確的修復(fù)措施。在APP產(chǎn)出應(yīng)用程序包時,同時也會產(chǎn)生一份用于反混淆異常信息的映射文件(密碼本),通過映射文件 + 解析算法對混淆的異常進(jìn)行解析,即可得到已讀的異常堆棧。

b9b0fc78-576a-11ee-939d-92fbcf53809c.png

△異常信息反混淆過程

1.3 名詞解釋

性能中臺:性能中臺是APP性能追蹤的一站式解決方案平臺,為APP提供全面、實時的性能分析服務(wù)與工具鏈。

移動線上質(zhì)量平臺:移動線上質(zhì)量平臺是移動端APP發(fā)包后,用來查看、分析包質(zhì)量數(shù)據(jù)、進(jìn)行核心指標(biāo)監(jiān)控/報警、變更異常攔截。

日志中臺:指端日志中臺,包括端日志全生命周期的能力建設(shè)。包括打點(diǎn)SDK / 打點(diǎn)server/日志管理平臺等核心組件。

Tekes平臺:App端研發(fā)平臺,提供包組件管理等基礎(chǔ)設(shè)施。

GEEK TALK

02

系統(tǒng)設(shè)計

2.1整體流程

在以往的流程中,針對客戶端上線變更,我們通常使用大盤性能指標(biāo)來進(jìn)行監(jiān)控,以便進(jìn)行問題定位和止損。然而,在灰度用戶數(shù)量較少的情況下,線上問題往往無法在大盤性能指標(biāo)中產(chǎn)生明顯波動。當(dāng)業(yè)務(wù)決定全量上線或擴(kuò)大灰度用戶規(guī)模時,問題就可能顯現(xiàn)出來了。在問題定位和解決的階段,我們過多地依賴人工干預(yù)和手動排查,這導(dǎo)致問題定位和解決的時間較長,并可能升級為事故。因此,在舊流程中,線上問題影響面大小主要取決于灰度用戶的規(guī)模以及問題排查人員對客戶端各個模塊和相關(guān)人員的了解程度,這是不合理的。因此,系統(tǒng)設(shè)計的關(guān)鍵在于解決兩個核心問題:首先,如何在灰度階段攔截問題,避免其進(jìn)一步擴(kuò)大;其次,一旦線上問題出現(xiàn),如何能夠迅速進(jìn)行問題召回與解決。

b9bed032-576a-11ee-939d-92fbcf53809c.png

△線上異常實時攔截與問題分發(fā)整體流程設(shè)計圖

因此,在新流程中,引入了兩個關(guān)鍵模塊:"變更攔截模塊"和"問題分發(fā)模塊"。對于每次平臺的上線變更,必須先在變更攔截模塊中進(jìn)行注冊,從而生成一個唯一的上線染色I(xiàn)D。同時,將染色I(xiàn)D下發(fā)至本次變更上線的用戶客戶端。此后,該數(shù)據(jù)集的用戶日志將攜帶染色I(xiàn)D進(jìn)行上報。變更攔截模塊將基于染色I(xiàn)D的粒度進(jìn)行監(jiān)控和攔截,以保證在上線過程中問題的及時發(fā)現(xiàn)。同時,問題分發(fā)模塊建立了問題自動分發(fā)機(jī)制。當(dāng)一個上線變更被攔截或者在線上出現(xiàn)問題時,該模塊將直接將問題指派給涉及問題的模塊、組件,以及相關(guān)的研發(fā)和測試人員。協(xié)助業(yè)務(wù)方快速準(zhǔn)確的定位問題,人工再介入修復(fù)。

2.2異常上線變更攔截

異常上線變更攔截的核心思路是:為每次上線變更生成獨(dú)特的染色I(xiàn)D,通過對每個染色I(xiàn)D的性能核心數(shù)據(jù)進(jìn)行攔截與監(jiān)控。

b9cbb554-576a-11ee-939d-92fbcf53809c.png

△異常上線變更攔截流程設(shè)計圖

變更攔截流程的具體步驟如下:

① 變更上線注冊:針對廠內(nèi)各個配置變更平臺,需要在每次上線配置生效之前,將上線信息在染色通用服務(wù)進(jìn)行注冊。

② 獲取染色I(xiàn)D:染色通用服務(wù)通過HTTP接口為每次上線注冊生成通用的染色I(xiàn)D,并將其返回給上線變更平臺。

③ 下發(fā)染色配置:在圈定的用戶群范圍內(nèi),上線變更平臺將新配置和染色信息同時下發(fā)到端上的業(yè)務(wù)SDK(如AB-SDK)中。

④ 染色日志上報:業(yè)務(wù)SDK會判定染色是否生效,如果生效,則在涉及性能核心場景的日志中附加染色I(xiàn)D信息,然后通過UBC-SDK上報。這些日志會通過日志中臺實時轉(zhuǎn)發(fā),并寫入消息隊列。

⑤ 實時指標(biāo)計算:性能中臺會實時訂閱消息隊列中的核心性能數(shù)據(jù),例如崩潰、APP啟動次數(shù)等,然后針對每個染色I(xiàn)D,根據(jù)多個維度(如產(chǎn)品線、APP版本、操作系統(tǒng)、地域等)形成性能聚合指標(biāo),并將其寫入持久存儲。

⑥ 異常攔截服務(wù):基于存儲中的染色數(shù)據(jù),異常攔截服務(wù)通過配置監(jiān)控項來檢測數(shù)據(jù)是否出現(xiàn)異常。一旦染色數(shù)據(jù)異常,系統(tǒng)會觸發(fā)攔截措施并發(fā)出告警。

⑦ 異常止損:在觸發(fā)攔截和告警后,系統(tǒng)會通過關(guān)聯(lián)染色I(xiàn)D和變更上線的關(guān)系,攔截繼續(xù)放量以及通知業(yè)務(wù)方針對本次上線的配置回滾。

針對每次線上配置的變更,都會有一段觀察期。這個觀察期的長短需要適度,以確保數(shù)據(jù)的可靠性。過短的觀察期會影響數(shù)據(jù)的置信度,而過長則可能降低研發(fā)效率。一般而言,每次變更后需要等待10分鐘的觀察期,然后再逐步增加線上流量。因此,變更攔截模塊對數(shù)據(jù)時效性的要求非常高,要求數(shù)據(jù)的端到端傳輸時效在3分鐘以內(nèi),以確保有足夠的數(shù)據(jù)累積時間,從而提升監(jiān)控指標(biāo)的可信度。同時,染色I(xiàn)D的數(shù)據(jù)指標(biāo)項不僅涵蓋了基礎(chǔ)的PV指標(biāo)(如崩潰次數(shù)和APP啟動用戶數(shù)),還擴(kuò)展至UV級別的指標(biāo)(如受崩潰影響的用戶數(shù)收斂情況和APP用戶啟動數(shù))。多個指標(biāo)維度下UV的計算也給數(shù)據(jù)鏈路的時效性和準(zhǔn)確性帶來了挑戰(zhàn)。具體的數(shù)據(jù)流設(shè)計如下所示:

b9e258e0-576a-11ee-939d-92fbcf53809c.png

△變圖更攔截數(shù)據(jù)流設(shè)計

變更攔截的數(shù)據(jù)流主要分為兩個部分:

(1)實時指標(biāo)計算服務(wù);

(2) ID生成服務(wù)。

ID生成服務(wù)

ID生成服務(wù)主要用于將廠內(nèi)的CUID生成INT類型的數(shù)字,從而存儲到Bitmap的數(shù)據(jù)結(jié)構(gòu)中。整個服務(wù)需要滿足以下條件:

(1)CUID-ID的的映射全局唯一,不會出現(xiàn)重復(fù)的ID,且ID的整體趨勢遞增。

(2)高并發(fā)低延時。核心數(shù)據(jù)在計算節(jié)點(diǎn)內(nèi)存中進(jìn)行產(chǎn)出,減少數(shù)據(jù)庫壓力。

(3)高可用,服務(wù)基于云上分布式架構(gòu),即使存儲mysql宕機(jī),也能容忍一段時間數(shù)據(jù)庫不可用。

在實時流中,在接收到原始數(shù)據(jù)時,先根據(jù)CUID進(jìn)行keyby分發(fā),將相同的CUID分發(fā)到同一個計算節(jié)點(diǎn)。對于每個計算節(jié)點(diǎn):

(1)優(yōu)先查詢自身內(nèi)存中的緩存的映射關(guān)系,若不存在,則查詢redis。

(2)若redis不存在映射關(guān)系,則訪問生成新ID服務(wù)。

(3)服務(wù)請求hash到號段節(jié)點(diǎn)上,每次去DB拿固定長度的ID List進(jìn)行分發(fā),然后把最大的ID持久化下來,也就是并非每個ID都做持久化,僅僅持久化一批ID中最大的那一個。這個方式有點(diǎn)像游戲里的定期存檔功能,只不過存檔的是未來某個時間下發(fā)給用戶的ID,這樣極大地減輕了DB持久化的壓力。

(4)最終將映射關(guān)系寫入到Redis存儲中。

實時指標(biāo)計算服務(wù)

在數(shù)據(jù)處理流程中,端上傳的日志數(shù)據(jù)經(jīng)由日志中臺進(jìn)行轉(zhuǎn)發(fā),進(jìn)而分發(fā)到性能的各個消息隊列中。實時計算服務(wù)訂閱這些消息隊列中的數(shù)據(jù),以多級聚合方式進(jìn)行維度指標(biāo)的計算:

(1)數(shù)據(jù)分發(fā)與映射:首先,從消息隊列中獲取原始數(shù)據(jù)。根據(jù)CUID進(jìn)行keyby分發(fā),將相同的CUID分發(fā)到同一個計算節(jié)點(diǎn)。防止相同的CUID同時訪問ID-Mapping服務(wù),導(dǎo)致CUID-ID的的映射全局不唯一。

(2)本地聚合:對數(shù)據(jù)進(jìn)行解析獲得指標(biāo)和維度,然后在每個計算節(jié)點(diǎn)上進(jìn)行本地窗口聚合操作,將具有相同維度(版本、操作系統(tǒng)、染色I(xiàn)D等)的CUID匯總成Bitmap格式。本地聚合的目的在于減少后續(xù)的keyby shuffle階段的數(shù)據(jù)量。

(3)全局聚合:狀態(tài)服務(wù)維護(hù)實時流的運(yùn)行時狀態(tài)信息和歷史數(shù)據(jù)的Bitmap結(jié)果。將實時數(shù)據(jù)與歷史數(shù)據(jù)進(jìn)行全局聚合,從而得到最終的結(jié)果數(shù)據(jù)。同時,新的Bitmap結(jié)重新寫入狀態(tài)服務(wù)。其中,運(yùn)行時狀態(tài)信息保證了在實時流斷流或重啟時,能夠恢復(fù)上次運(yùn)行狀態(tài)。加上可重入的數(shù)據(jù)源和冪等的數(shù)據(jù)輸出,確保了數(shù)據(jù)流的不丟不重。

通過上述服務(wù),當(dāng)新的變更上線導(dǎo)致端上異常數(shù)據(jù)突增時,變更攔截服務(wù)能夠在分鐘級內(nèi)對異常上線進(jìn)行監(jiān)控告警以及攔截。此外,除了向業(yè)務(wù)方披露攔截的數(shù)據(jù)指標(biāo),我們也希望中臺能夠直接協(xié)助業(yè)務(wù)方定位排查出問題的根因。

2.3 問題自動分發(fā)

問題自動分發(fā)的核心思路是:建立端上各個模塊、組件、類方法和研發(fā)測試人員的映射關(guān)系,當(dāng)發(fā)生線上問題時,通過聚類規(guī)則將經(jīng)過反混淆之后問題直接指向?qū)е聠栴}發(fā)生的組件、模塊以及負(fù)責(zé)該模塊的研發(fā)測試人員。

b9e9d796-576a-11ee-939d-92fbcf53809c.png

△線上問題實時自動分發(fā)數(shù)據(jù)流

問題分發(fā)的數(shù)據(jù)流主要分為四個部分:

(1)映射文件寫入存儲

(2)線上異常反混淆

(3)端組件關(guān)系建立

(4)問題分發(fā)

其中(1)(2)步驟是為了將線上異常解析為可讀的形式。(3)(4)步驟為將可讀的堆棧進(jìn)行聚類以及分發(fā)。

映射文件寫入存儲

在技術(shù)背景的實時反混淆介紹中,為了將經(jīng)過混淆的異常信息恢復(fù)成可讀的形式,關(guān)鍵在于使用映射文件。映射文件分為兩種:一種是針對每個APP發(fā)版時生成的映射文件,用于對該版本的APP自身的異常信息進(jìn)行反混淆;另一種是操作系統(tǒng)發(fā)版產(chǎn)生的映射文件,用于系統(tǒng)級別的異常信息的反混淆。當(dāng)APP發(fā)版或操作系統(tǒng)升級時,通過配置流水線將相應(yīng)的映射文件寫入映射文件緩存中。 APP的版本又有線上和線下的區(qū)別。針對線上發(fā)版的APP版本,其版本的特點(diǎn)表現(xiàn)為每個版本的發(fā)版周期較長,線上異常數(shù)量較多,同時對數(shù)據(jù)解析的實時性要求較高。為滿足這些特點(diǎn),將線上發(fā)版的映射文件存儲于高性能的Redis集群中。對于廠內(nèi)線下測試發(fā)版的APP版本,其版本特點(diǎn)體現(xiàn)在研發(fā)測試人員都能發(fā)版,導(dǎo)致版本數(shù)量相對較多。然而,與線上環(huán)境不同的是,線下測試環(huán)境中構(gòu)造的異常較少,而對數(shù)據(jù)解析的實時性要求較低。鑒于這些特點(diǎn),更適合將線下測試發(fā)版的映射文件存儲于性能稍弱但更適合存儲大量數(shù)據(jù)的Hbase集群中。

線上異常反混淆

在端發(fā)生線上異常時,端會上報兩條信息流。一條是崩潰的指標(biāo)數(shù)據(jù)流,一條是定位堆棧的文件流。指標(biāo)數(shù)據(jù)流的特點(diǎn)是上傳信息快,包含核心信息以及簡化版的異常信息,但異常信息量不全。而文件流的特點(diǎn)是,上傳速度偏慢,但是異常信息完整(2M)。結(jié)合這兩種信息流,可以獲得完整的線上異常信息,供業(yè)務(wù)分析使用。但是由于兩條信息流是異步上報,經(jīng)常面臨數(shù)據(jù)流亂序到達(dá)的問題。因此,為了解決亂序問題,我們設(shè)計了狀態(tài)服務(wù)。

b9f55dbe-576a-11ee-939d-92fbcf53809c.png

△狀態(tài)服務(wù)數(shù)據(jù)流設(shè)計

狀態(tài)服務(wù)的主要目的是處理雙流亂序的數(shù)據(jù),以確保它們能夠被正確關(guān)聯(lián)。其核心流程如下:

(1)同時間窗口數(shù)據(jù)關(guān)聯(lián):從消息隊列中訂閱數(shù)據(jù)后,首先會對處于計算節(jié)點(diǎn)同一個時間窗口的數(shù)據(jù)進(jìn)行關(guān)聯(lián),若關(guān)聯(lián)成功,則數(shù)據(jù)直接發(fā)往下游進(jìn)行計算。

(2)同歷史未關(guān)聯(lián)的數(shù)據(jù)關(guān)聯(lián):若未成功,則查詢狀態(tài)服務(wù)中之前窗口中尚未被關(guān)聯(lián)的數(shù)據(jù)進(jìn)行關(guān)聯(lián),若關(guān)聯(lián)成功,發(fā)往下游,狀態(tài)存儲中清除關(guān)聯(lián)數(shù)據(jù)。

(3)未關(guān)聯(lián)數(shù)據(jù)寫入狀態(tài)存儲:若未成功,則將未關(guān)聯(lián)的數(shù)據(jù)寫入到狀態(tài)存儲中,等待被將來的數(shù)據(jù)進(jìn)行關(guān)聯(lián)。

此外,狀態(tài)存儲也不能無限的增長,需要有過期淘汰的策略,在該場景下,我們設(shè)置的是30min的TTL,能夠關(guān)聯(lián)到99.9%以上的數(shù)據(jù)。 在成功關(guān)聯(lián)雙流數(shù)據(jù)后,緊接著是對堆棧進(jìn)行反混淆解析。反混淆的目標(biāo)是將經(jīng)過混淆后的異常信息還原為可讀的形式。在反混淆過程中,各種類型異常的解析算法工具(如騰訊Bugly、谷歌CrashPad)通常能夠在秒級別(約10秒)內(nèi)完成解析操作。然而,在實時數(shù)據(jù)流處理中,僅僅滿足秒級的解析時效性是不夠的,需要將解析速度提升至毫秒級。因此,中臺實時流中對反混淆解析進(jìn)行了升級,包含算法升級適配實時流以及多級緩存在構(gòu)建。 多級緩存由計算節(jié)點(diǎn)內(nèi)存,Redis以及Hbase構(gòu)成。其中,根據(jù)不同的緩存命中情況,反混淆解析的性能會有所不同。如果堆棧對應(yīng)的映射文件在計算節(jié)點(diǎn)內(nèi)存中命中,解析可以在<10ms內(nèi)完成。若在Redis或Hbase中命中,則解析時間會略有延長,達(dá)到秒級別(約10秒),那么最理想的方式是將所有的映射文件都在計算節(jié)點(diǎn)內(nèi)存中被命中。然而,由于每個版本都有對應(yīng)的映射文件,且每個線上APP都有數(shù)十個版本,每個映射文件大小約為300MB,這使得無法將線上流量所需的所有映射文件都加載到算子內(nèi)存中。為了解決這一問題,我們對解析算法進(jìn)行了多級索引的優(yōu)化。這種優(yōu)化策略將整個映射文件進(jìn)行了細(xì)粒度拆分,僅將異常堆棧命中的映射文件行信息加載到內(nèi)存中。因此,解析算法現(xiàn)在不再需要將整個映射文件完全存入內(nèi)存。相反,它只需存儲一級索引和二級索引的關(guān)系,以及命中堆棧后獲得的結(jié)果數(shù)據(jù)。這一方式在顯著提高內(nèi)存利用效率的同時,也解決了計算節(jié)點(diǎn)內(nèi)存不足的問題。

ba05e5d0-576a-11ee-939d-92fbcf53809c.png

△多級索引查詢

但是,隨著線上任務(wù)長時間運(yùn)行時,我們注意到程序性能逐漸下降,導(dǎo)致實時流任務(wù)的數(shù)據(jù)處理經(jīng)常出現(xiàn)延遲。我們發(fā)現(xiàn)問題的根本原因是計算節(jié)點(diǎn)緩存中的映射文件被頻繁替換,導(dǎo)致緩存命中率低。因此,我們采用了更為適合業(yè)務(wù)場景的緩存替代算法---W-TinyLFU代替常規(guī)的LRU緩存替代策略。

ba1159f6-576a-11ee-939d-92fbcf53809c.png

△W-TinyLFU算法

相比LRU算法,W-TinyLFU:

1、熱點(diǎn)數(shù)據(jù)適應(yīng)性更強(qiáng):在高流量的場景中,一些熱點(diǎn)數(shù)據(jù)項可能會在短時間內(nèi)被多次訪問。與LRU只關(guān)注最近的訪問,W-TinyLFU通過維護(hù)頻繁訪問計數(shù)來更好地捕獲這種熱點(diǎn)數(shù)據(jù)的特征,從而更好地適應(yīng)瞬時的流量變化。

2、低頻數(shù)據(jù)保護(hù):LRU在遇到新數(shù)據(jù)時,會立即淘汰最近最少使用的數(shù)據(jù),這可能導(dǎo)致低頻數(shù)據(jù)被頻繁淘汰。W-TinyLFU通過維護(hù)一個近似的頻率計數(shù),可以更好地保護(hù)低頻數(shù)據(jù),防止它們被過早地淘汰。

3、適應(yīng)性更強(qiáng):W-TinyLFU在面對訪問模式的變化時,能夠更快地適應(yīng)新的訪問模式。它在長時間內(nèi)持續(xù)觀察訪問模式,并逐漸調(diào)整數(shù)據(jù)項的權(quán)重,以更好地反映最近的訪問模式。

4、寫入操作考慮:LRU通常對寫入操作的適應(yīng)性較差,因為寫入操作可能導(dǎo)致數(shù)據(jù)被立即淘汰。W-TinyLFU考慮了寫入操作,通過維護(hù)寫入時的頻繁訪問計數(shù),可以更好地處理寫入操作。

5、內(nèi)存效率:W-TinyLFU使用了一些壓縮技術(shù)來存儲頻繁訪問計數(shù),從而在一定程度上減少了內(nèi)存占用。

經(jīng)過對線上異常進(jìn)行反混淆處理后,我們獲得了可讀的堆棧信息。接下來,我們可以對這些可讀的堆棧信息進(jìn)行問題聚類和分發(fā)。

端組件關(guān)系建立

組件關(guān)系變更的數(shù)據(jù)來源分為兩個部分:

(1)全量數(shù)據(jù):在APP進(jìn)行發(fā)版時,通過EasyBox等工具將組件、模塊等關(guān)系從包中解析出來,將該版本的組件信息上傳到組件管理平臺,觸發(fā)組件管理平臺的全量同步,將組件信息寫入消息隊列中。中臺通過訂閱組件數(shù)據(jù),建立類方法<->組件、模塊、研發(fā)人員、測試人員的關(guān)系,寫入到存儲中。

(2)增量數(shù)據(jù):在組件管理平臺進(jìn)行人為的修改,例如修改組件類的研發(fā)、測試負(fù)責(zé)人等,觸發(fā)增量同步,變更的數(shù)據(jù)寫入消息隊列。

通過上述數(shù)據(jù)同步,建立了類方法<->人的映射。

問題分發(fā)

通過數(shù)據(jù)流的反混淆解析,我們成功地將異常信息從二進(jìn)制地址轉(zhuǎn)換為可讀的信息。接下來,借助聚類規(guī)則算法,我們將不同的異常堆棧逐行遍歷,并優(yōu)先將其聚類到廠內(nèi)維護(hù)的組件和模塊中所包含的類中。在此過程中,我們建立了線上問題<->類之間的關(guān)系。而在端組件關(guān)系建立的流程中,我們成功地構(gòu)建了類方法<->研發(fā)測試人員之間的映射關(guān)系。將這兩者的關(guān)系結(jié)合起來,我們獲得了問題<->人員之間的關(guān)聯(lián)。因此,當(dāng)線上出現(xiàn)問題時,無需人工干預(yù),系統(tǒng)可以直接將該問題指向負(fù)責(zé)該問題模塊的負(fù)責(zé)人。負(fù)責(zé)人隨后可以根據(jù)反混淆后的異常信息,進(jìn)行問題的排查和修復(fù)工作。

GEEK TALK

03

總結(jié)與展望

本文主要介紹了性能中臺在處理異常上線過程中,針對變更攔截和問題分發(fā)方面做的一些努力。當(dāng)然,后面我們還會繼續(xù)更好的服務(wù)業(yè)務(wù),如:

1、提升影響力:對接更多的上線變更平臺以及落地更多的APP。

2、提升場景覆蓋度:覆蓋卡頓、啟動速度、網(wǎng)絡(luò)性能、搜索性能等更多的核心業(yè)務(wù)場景。

3、提升問題聚類以及分發(fā)策略的準(zhǔn)確度:將線上問題分發(fā)的更加合理與準(zhǔn)確。

希望,性能中臺持續(xù)不斷優(yōu)化,為保障APP的質(zhì)量做出貢獻(xiàn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標(biāo)題:基于異常上線場景的實時攔截與問題分發(fā)策略

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    鴻道Intewell實時操作系統(tǒng)有哪些應(yīng)用場景

    鴻道Intewell工業(yè)操作系統(tǒng)作為一款國產(chǎn)實時操作系統(tǒng)(RTOS),在工業(yè)領(lǐng)域因其高實時性、高可靠性和強(qiáng)定制化能力,被廣泛應(yīng)用于對系統(tǒng)響應(yīng)速度和穩(wěn)定性要求苛刻的場景。以下是其典型應(yīng)用場景
    的頭像 發(fā)表于 06-26 10:15 ?113次閱讀

    機(jī)器學(xué)習(xí)異常檢測實戰(zhàn):用Isolation Forest快速構(gòu)建無標(biāo)簽異常檢測系統(tǒng)

    算法進(jìn)行異常檢測,并結(jié)合LightGBM作為主分類器,構(gòu)建完整的欺詐檢測系統(tǒng)。文章詳細(xì)闡述了從無監(jiān)督異常檢測到人工反饋循環(huán)的完整工作流程,為實際業(yè)務(wù)場景中的風(fēng)險控
    的頭像 發(fā)表于 06-24 11:40 ?565次閱讀
    機(jī)器學(xué)習(xí)<b class='flag-5'>異常</b>檢測實戰(zhàn):用Isolation Forest快速構(gòu)建無標(biāo)簽<b class='flag-5'>異常</b>檢測系統(tǒng)

    EGBox Mini:一體式緊湊型實時仿真平臺,適配多元實驗場景

    復(fù)雜電力電子系統(tǒng)實時仿真(如光伏逆變器、電機(jī)驅(qū)動系統(tǒng)等),精確模擬電路動態(tài)行為,加速產(chǎn)品研發(fā)迭代。 ▍新能源領(lǐng)域: 破解復(fù)雜工況模擬難題,助力優(yōu)化系統(tǒng)性能與控制策略,提高新能源利用效率。 ▍ 高校教學(xué)
    發(fā)表于 04-29 10:40

    RFID在藥品分發(fā)中的應(yīng)用

    。RFID在藥品分發(fā)中的優(yōu)勢高效率:RFID可以快速批量讀取藥品信息,大幅縮短分發(fā)時間,提高藥品管理效率。準(zhǔn)確性:RFID減少了人工操作的錯誤率,提高了藥品分發(fā)的準(zhǔn)確
    的頭像 發(fā)表于 04-17 18:11 ?204次閱讀
    RFID在藥品<b class='flag-5'>分發(fā)</b>中的應(yīng)用

    商湯科技日日新大模型SenseNova上線聲網(wǎng)云市場

    日前,商湯科技日日新大模型SenseNova即將正式上線聲網(wǎng)云市場,開發(fā)者和企業(yè)用戶可通過聲網(wǎng)的實時互動云服務(wù)進(jìn)行調(diào)用,將商湯領(lǐng)先的模型能力集成到各類應(yīng)用場景中,快速構(gòu)建基于日日新大模型的實時
    的頭像 發(fā)表于 04-08 17:24 ?818次閱讀

    工業(yè)場景下 TNC 插座的專業(yè)拆卸策略

    工業(yè)場景下 TNC 插座的拆卸工作,必須嚴(yán)格遵循上述專業(yè)策略。每一個步驟都與設(shè)備安全及拆卸工作的順利推進(jìn)緊密相關(guān)。只有通過專業(yè)、規(guī)范的操作流程,才能有效降低設(shè)備損壞風(fēng)險,確保工作得以安全、高效地完成。
    的頭像 發(fā)表于 04-02 09:50 ?279次閱讀
    工業(yè)<b class='flag-5'>場景</b>下 TNC 插座的專業(yè)拆卸<b class='flag-5'>策略</b>

    嵌入式系統(tǒng)存儲的軟件優(yōu)化策略

    使用單獨(dú)的硬件控制器對存儲進(jìn)行管理,相比于Linux下NAND驅(qū)動管理可靠性更高。 ·內(nèi)部固件集成多種功能:使用壽命等健康信息記錄、根據(jù)不同的場景動態(tài)調(diào)整內(nèi)部存儲策略。 ·接口標(biāo)準(zhǔn),各廠家各容量兼容性好
    發(fā)表于 02-28 14:17

    數(shù)據(jù)記錄儀的計數(shù)原理和應(yīng)用場景

    限于: 工業(yè)領(lǐng)域: 設(shè)備運(yùn)行監(jiān)測:數(shù)據(jù)記錄儀可以實時監(jiān)測生產(chǎn)設(shè)備的運(yùn)行狀態(tài),包括振動、溫度、壓力等關(guān)鍵參數(shù),及時發(fā)現(xiàn)設(shè)備異常,預(yù)防故障發(fā)生,延長設(shè)備壽命。 質(zhì)量控制:精確記錄生產(chǎn)過程中的各項數(shù)據(jù),如材料
    發(fā)表于 02-24 14:28

    HarmonyOS官網(wǎng)上線“穩(wěn)定性”專欄 助力更穩(wěn)定流暢的鴻蒙原生應(yīng)用開發(fā)

    鴻蒙開發(fā)者官網(wǎng)的最佳實踐中上線了穩(wěn)定性專欄,將DevEco Studio問題定位工具與穩(wěn)定性實際場景相結(jié)合,幫助開發(fā)者用好工具的同時,降低穩(wěn)定性問題定位的難度。 下面以CppCrash的問題為例,介紹
    發(fā)表于 02-17 17:17

    鴻蒙原生頁面高性能解決方案上線OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用

    Nodepool、HMrouter和DataCache 三大解決方案,并上架OpenHarmony開源社區(qū)分,分別針對應(yīng)用頁面滑動、跳轉(zhuǎn)、首頁冷啟動等關(guān)鍵性能場景提供高效易用的工具,助力伙伴和開發(fā)者打造
    發(fā)表于 01-02 18:00

    串口通訊異常處理方法 串口設(shè)備連接方式

    等。 軟件檢測 :在軟件層面,可以通過檢查接收到的數(shù)據(jù)幀是否符合預(yù)期的格式和協(xié)議來檢測異常。 2. 錯誤處理策略 一旦檢測到異常,可以采取以下策略進(jìn)行處理: 重發(fā)機(jī)制 :對于某些錯誤,
    的頭像 發(fā)表于 12-27 09:53 ?3897次閱讀

    IP地址數(shù)據(jù)信息和爬蟲攔截的關(guān)聯(lián)

    IP地址數(shù)據(jù)信息和爬蟲攔截的關(guān)聯(lián)主要涉及到兩方面的內(nèi)容,也就是數(shù)據(jù)信息和爬蟲。IP 地址數(shù)據(jù)信息的內(nèi)容豐富,包括所屬地域、所屬網(wǎng)絡(luò)運(yùn)營商、訪問時間序列、訪問頻率等。 從IP地址信息中可以窺見
    的頭像 發(fā)表于 12-23 10:13 ?349次閱讀

    詳解MES系統(tǒng)的生產(chǎn)過程實時監(jiān)控與異常處理

    萬界星空科技的MES系統(tǒng)能實時監(jiān)控生產(chǎn)過程,檢測異常情況并自動糾正,確保生產(chǎn)過程的連續(xù)性和穩(wěn)定性。通過可視化界面,管理人員可以實時查看生產(chǎn)進(jìn)度和設(shè)備狀態(tài)。預(yù)警機(jī)制一旦檢測到異常情況,會
    的頭像 發(fā)表于 10-28 15:57 ?701次閱讀
    詳解MES系統(tǒng)的生產(chǎn)過程<b class='flag-5'>實時</b>監(jiān)控與<b class='flag-5'>異常</b>處理

    實時示波器的技術(shù)原理和應(yīng)用場景

    實時示波器是一種高性能的電子測量儀器,其技術(shù)原理和應(yīng)用場景對于電子工程和通信技術(shù)領(lǐng)域具有重要意義。以下是對實時示波器的技術(shù)原理和應(yīng)用場景的詳細(xì)解釋:一、技術(shù)原理
    發(fā)表于 10-23 14:22

    FPGA與MCU的應(yīng)用場景

    到Windows無響應(yīng),而MCU只要設(shè)計的問題不大,一般跑飛的概率會小很多,而FPGA的實時系統(tǒng)的低延遲在某些場景會更勝一籌。 硬件級可編程性的應(yīng)用 對于創(chuàng)新性的應(yīng)用或尚未成熟的算法,開發(fā)者可以
    發(fā)表于 07-29 15:45
    主站蜘蛛池模板: 校园 春色 欧美 另类 小说 | 欧美性天堂 | 色综合五月婷婷 | 黄色一级片视频 | 精品精品国产高清a毛片牛牛 | 免费看片你懂的 | 99久热只有精品视频免费观看17 | 美女露出扒开尿口让男人桶 | 激情爱爱的免费视频 | 欧美色a电影精品aaaa | 性欧美极品另类 | 一级特黄aaa大片 | 片免费观看在线看 | 女性私密部位扒开的视频 | 国产成人毛片亚洲精品不卡 | 久久综合九色综合欧美狠狠 | 亚洲欧美日本视频 | 久久精品国产免费 | 夜夜爽网站 | 97超频国产在线公开免费视频 | 日本黄色绿像 | 视频亚洲一区 | 欧美成人性色xxxxx视频大 | 免费一级大毛片a一观看不卡 | 国产精品久久久精品视频 | 啪啪在线视频 | 日韩免费在线视频 | 99亚洲自拍 | 国产精品久久永久免费 | 黄网站视频在线观看 | 五月天婷婷爱 | 中文在线免费看影视 | 免费观看黄a一级视频日本 免费观看黄色网页 | 日本操穴 | 天堂资源在线最新版 | 久艹精品| 午夜美女网站 | 上色天天综合网 | 永久免费精品影视网站 | 在线观看你懂的视频 | 国产小视频在线观看 |