小螞蟻說(shuō):
《支付寶客戶(hù)端架構(gòu)解析》系列將從支付寶客戶(hù)端的架構(gòu)設(shè)計(jì)方案入手,細(xì)分拆解客戶(hù)端在“ 容器化框架設(shè)計(jì) ”、“ 網(wǎng)絡(luò)優(yōu)化 ”、“ 性能啟動(dòng)優(yōu)化 ”、“ 自動(dòng)化日志收集 ”、“ RPC 組件設(shè)計(jì) ”、“ 移動(dòng)應(yīng)用監(jiān)控、診斷、定位 ”等具體實(shí)現(xiàn),帶領(lǐng)大家進(jìn)一步了解支付寶在客戶(hù)端架構(gòu)上的迭代與優(yōu)化歷程。
本節(jié)將結(jié)合禾兮在 OSChina 珠海站現(xiàn)場(chǎng)的分享《移動(dòng)端分析方案在螞蟻金服 mPaaS 中的實(shí)踐》,介紹支付寶客戶(hù)端自動(dòng)化日志收集與分析的具體思路。內(nèi)容將分成三個(gè)部分展開(kāi):
支付寶客戶(hù)端分析方案的探索;
MAS 移動(dòng)分析框架淺析;
mPaaS 技術(shù)架構(gòu)與助力。
支付寶客戶(hù)端分析方案的探索
正如我們?cè)凇? 開(kāi)篇 | 模塊化與解耦式開(kāi)發(fā)在螞蟻金服 mPaaS 深度實(shí)踐探討 》已經(jīng)對(duì)支付寶的架構(gòu)演變與開(kāi)發(fā)團(tuán)隊(duì)規(guī)模發(fā)展做過(guò)介紹:
截止目前,在研發(fā)上面,支付寶僅 Android、iOS 客戶(hù)端開(kāi)發(fā)人員近千人,客戶(hù)端代碼行數(shù)超過(guò)了數(shù)百萬(wàn)行,按業(yè)務(wù)劃分的工程數(shù)也已近千個(gè),每個(gè)工程都有獨(dú)立的開(kāi)發(fā) owner 負(fù)責(zé)某一個(gè)具體的模塊。雖然工程師團(tuán)隊(duì)及工程量越發(fā)龐大,支付寶依舊能夠做到日發(fā)布的頻率以確保業(yè)務(wù)快速迭代,同時(shí)在業(yè)務(wù)功能日益復(fù)雜的環(huán)境,保證 App 閃退率僅 0.01%。
那么,在如此大體量的用戶(hù)規(guī)模和研發(fā)團(tuán)隊(duì)下,支付寶又是如何確保用戶(hù)使用過(guò)程中的用戶(hù)體驗(yàn)?zāi)兀课覀冎饕獜囊韵聝蓚€(gè)維度衡量客戶(hù)端用戶(hù)體驗(yàn):
靜態(tài): 指應(yīng)用開(kāi)發(fā)過(guò)程中,關(guān)注 App 本身的安裝包大小、存儲(chǔ)、涉及到的用戶(hù)隱私權(quán)限、安全策略等,決定用戶(hù)是否愿意安裝并使用你的應(yīng)用。
動(dòng)態(tài): 指應(yīng)用發(fā)布上線(xiàn)后,用戶(hù)在使用過(guò)程中,App 的啟動(dòng)速度,閃退、卡死卡頓等穩(wěn)定性數(shù)據(jù),網(wǎng)絡(luò)請(qǐng)求,內(nèi)存以及電量流量等用戶(hù)實(shí)際的使用感受。
啟動(dòng)應(yīng)用是用戶(hù)使用任何一款應(yīng)用最必不可少的操作,從點(diǎn)擊 App 圖標(biāo)到首頁(yè)展示,整個(gè)啟動(dòng)過(guò)程的性能,嚴(yán)重影響著用戶(hù)的體驗(yàn)。支付寶客戶(hù)端作為一個(gè)超級(jí) App,啟動(dòng)速度當(dāng)然是我們關(guān)注的重要指標(biāo)之一。支付寶對(duì)于應(yīng)用啟動(dòng)過(guò)程中的優(yōu)化,主要分為以下四個(gè)方面:
框架治理:
梳理啟動(dòng)流程并重構(gòu),遵守啟動(dòng)過(guò)程中按需加載原則。
引用 Pipeline 機(jī)制,根據(jù)業(yè)務(wù)優(yōu)先級(jí)規(guī)定業(yè)務(wù)初始化時(shí)機(jī)。
制定統(tǒng)一的開(kāi)發(fā)規(guī)范,盡量降低業(yè)務(wù)方流程對(duì)啟動(dòng)性能的影響。
業(yè)務(wù)治理:
按需加載,延時(shí)執(zhí)行。
線(xiàn)程治理:統(tǒng)一管理已有線(xiàn)程,并調(diào)整線(xiàn)程優(yōu)先級(jí)。
I/O 治理:關(guān)注主線(xiàn)程 I/O,優(yōu)化合并頻繁讀寫(xiě)的 I/O 操作,盡量使用統(tǒng)一存儲(chǔ)。
技術(shù)突破:
防止啟動(dòng)過(guò)程中的 UI 重刷操作。
虛擬機(jī)優(yōu)化,包括 JIT 關(guān)閉,降低 GC 次數(shù)。
基礎(chǔ)模塊調(diào)優(yōu),分析主線(xiàn)程耗時(shí)操作并優(yōu)化。
另外,用戶(hù)使用過(guò)程中 App 的內(nèi)存、存儲(chǔ)、電量及流量等消耗,也是重要的衡量指標(biāo)。具體的優(yōu)化點(diǎn)如下:
內(nèi)存:
內(nèi)存分析:memtrace hprof 線(xiàn)下內(nèi)存分析,遍歷對(duì)象,根據(jù)生命周期標(biāo)記內(nèi)存泄露,同時(shí)根據(jù) object 創(chuàng)建引用確定業(yè)務(wù)歸屬。
Native 內(nèi)存:圖像庫(kù)切換到 native 層,4.x bitmap 像素?cái)?shù)據(jù)放到 ashme 共享內(nèi)存,降低 GC。
內(nèi)存優(yōu)化:對(duì)象池復(fù)用,減小 bitmap 對(duì)內(nèi)存占用,使用更小的圖,尤其注意三方 H5 頁(yè)面。
存儲(chǔ):
存儲(chǔ)分析:查看應(yīng)用存儲(chǔ)大小。
存儲(chǔ)優(yōu)化:使用共享庫(kù),業(yè)務(wù)定向優(yōu)化,壓縮存儲(chǔ)等。
流量:
耗流量原因:分析各種網(wǎng)絡(luò)請(qǐng)求。
流量異常捕獲:hook 所有網(wǎng)絡(luò)請(qǐng)求,根據(jù)host聚合流量,超過(guò)閾值確定異常。
流量?jī)?yōu)化:PC 底層協(xié)議優(yōu)化,資源增量按需下載,同時(shí)通過(guò)切面信息調(diào)用方。
電量:
耗電原因:監(jiān)控 CPU 使用率,各種 sensor、gps、weaklock、網(wǎng)絡(luò)連接等耗電操作。
耗電異常捕獲:遍歷線(xiàn)程,獲取所有線(xiàn)程運(yùn)行時(shí)間,與主線(xiàn)程比較確定異常。
耗電優(yōu)化:高性能 dump 線(xiàn)程棧優(yōu)化,通過(guò)線(xiàn)程映射調(diào)用方,評(píng)估調(diào)用邏輯進(jìn)行優(yōu)化。
針對(duì)以上每個(gè)優(yōu)化點(diǎn),支付寶都投入了大量精力進(jìn)行研究和實(shí)踐,有關(guān)啟動(dòng)性能優(yōu)化的詳細(xì)內(nèi)容可以查閱文檔《支付寶客戶(hù)端架構(gòu)解析:iOS 客戶(hù)端啟動(dòng)性能優(yōu)化初探》和《支付寶客戶(hù)端架構(gòu)解析:Android 客戶(hù)端啟動(dòng)速度優(yōu)化之「垃圾回收」》,其他優(yōu)化點(diǎn)請(qǐng)持續(xù)關(guān)注“客戶(hù)端架構(gòu)解析”系列文章。
基于這些對(duì)用戶(hù)體驗(yàn)優(yōu)化的內(nèi)容,支付寶構(gòu)建了一套完整的超級(jí) App 線(xiàn)上運(yùn)維體系,實(shí)時(shí)監(jiān)控線(xiàn)上 App 發(fā)生的異常問(wèn)題,針對(duì)這些問(wèn)題,以最快的時(shí)間定位問(wèn)題原因并找到對(duì)應(yīng)的解決方案,最后通過(guò)動(dòng)態(tài)熱修復(fù)的技術(shù)及時(shí)修復(fù)線(xiàn)上問(wèn)題,最終形成一個(gè)線(xiàn)上質(zhì)量保障的閉環(huán),保障應(yīng)用運(yùn)行的穩(wěn)定性。
MAS移動(dòng)分析框架淺析
接下來(lái),詳細(xì)介紹超級(jí) App 運(yùn)維體系中的移動(dòng)監(jiān)控框架具體是如何實(shí)現(xiàn)的。
移動(dòng)分析 MAS(Mobile Analysis Service)通過(guò)對(duì)移動(dòng)客戶(hù)端、H5、小程序、PC等多端埋點(diǎn)數(shù)據(jù)的采集與分析,實(shí)現(xiàn)產(chǎn)品核心指標(biāo)監(jiān)控,提供頁(yè)面、設(shè)備、留存、性能等基礎(chǔ)分析,并支持自定義事件分析、漏斗分析等高階分析,幫助企業(yè)更好地完成業(yè)務(wù)監(jiān)控、用戶(hù)洞察與行為分析,指導(dǎo)產(chǎn)品迭代,精細(xì)化產(chǎn)品運(yùn)營(yíng),輔助營(yíng)銷(xiāo)決策,加速業(yè)務(wù)商業(yè)化。主要分為以下四個(gè)階段:
整個(gè)移動(dòng)分析的完整鏈路從左往右看,就是客戶(hù)端通過(guò)調(diào)用埋點(diǎn) SDK 的接口進(jìn)行數(shù)據(jù)埋點(diǎn),埋點(diǎn) SDK 對(duì)日志進(jìn)行格式化后,先寫(xiě)入客戶(hù)端本地文件,滿(mǎn)足日志上報(bào)觸發(fā)條件后,將本地日志上報(bào)到日志服務(wù)器并清理本地日志文件以減少存儲(chǔ)大小;日志服務(wù)器接收到客戶(hù)端上報(bào)的日志后同步到計(jì)算平臺(tái),經(jīng)過(guò)離線(xiàn)計(jì)算和實(shí)時(shí)計(jì)算后,將結(jié)果進(jìn)行展示,用來(lái)監(jiān)控、分析、搜索、推薦等。
接下來(lái)我們將從移動(dòng)分析框架的四個(gè)階段,詳細(xì)介紹數(shù)據(jù)分析的整個(gè)鏈路邏輯。
根據(jù)采集數(shù)據(jù)時(shí)機(jī)、應(yīng)用場(chǎng)景,最終用途的不同,我們把客戶(hù)端采集的數(shù)據(jù)分為了以下幾類(lèi)。其中結(jié)合 mPaaS 模塊化開(kāi)發(fā)框架,報(bào)活埋點(diǎn)、押后臺(tái)埋點(diǎn)、頁(yè)面自動(dòng)化埋點(diǎn)、性能埋點(diǎn)及 H5 埋點(diǎn),由客戶(hù)端 SDK 自動(dòng)采集,無(wú)需開(kāi)發(fā)者手動(dòng)調(diào)用接口實(shí)現(xiàn),開(kāi)發(fā)者只需要關(guān)注自己的業(yè)務(wù)邏輯,在需要監(jiān)控的邏輯除埋點(diǎn)統(tǒng)計(jì)。
為了降低頻繁上報(bào)日志對(duì)應(yīng)用性能的影響,客戶(hù)端采集到數(shù)據(jù)后,會(huì)預(yù)先保存在應(yīng)用本地,通過(guò)以下三種方式同步到日志服務(wù)器:
自動(dòng)上報(bào): 滿(mǎn)足一定條件后客戶(hù)端埋點(diǎn) SDK 自動(dòng)上報(bào),包括
程序每次冷啟動(dòng)都會(huì)觸發(fā)檢查日志上報(bào)的邏輯。
程序進(jìn)入后臺(tái)會(huì)立即觸發(fā)上報(bào)。
寫(xiě)日志時(shí),某種類(lèi)型的日志默認(rèn)到達(dá) 40 條就觸發(fā)上報(bào)。
實(shí)時(shí)監(jiān)控: 對(duì)于比較重要的客戶(hù)端日志,如異常、應(yīng)用閃退日志等,可實(shí)時(shí)上報(bào),產(chǎn)生一條上報(bào)一條,便于后臺(tái)實(shí)時(shí)監(jiān)控。
動(dòng)態(tài)控制: 在自動(dòng)上報(bào)的基礎(chǔ)上,通過(guò)服務(wù)端下發(fā)的開(kāi)關(guān)值,修改客戶(hù)端日志寫(xiě)入和日志上報(bào)觸發(fā)的條件。如在大流量并發(fā)的情況下,為減少日志服務(wù)器的壓力,控制客戶(hù)端只寫(xiě)入并上報(bào)異常或閃退日志,忽略行為日志的統(tǒng)計(jì)。
上報(bào)到日志服務(wù)器的日志,會(huì)同步到計(jì)算平臺(tái)進(jìn)行計(jì)算,后臺(tái)主要包含以下幾個(gè)系統(tǒng):
mdap: 日志采集網(wǎng)關(guān),負(fù)責(zé)收集客戶(hù)端埋點(diǎn)日志,收到日志后,直接傳輸至 JStorm 集群進(jìn)行計(jì)算。
JStorm: 實(shí)時(shí)計(jì)算引擎,根據(jù)處理規(guī)則對(duì)日志進(jìn)行實(shí)時(shí)解析并將需要的數(shù)據(jù)存儲(chǔ)入庫(kù)。
SSDB: kv 數(shù)據(jù)存儲(chǔ)層,底層使用 leveldb,支持單表十億級(jí)記錄。
ZooKeeper: 集群管理、組件間服務(wù)發(fā)現(xiàn)。
計(jì)算平臺(tái)計(jì)算出來(lái)的結(jié)果,可以為用戶(hù)提供用戶(hù)分析、事件分析、行為、性能等數(shù)據(jù)分析服務(wù)。
基礎(chǔ)分析: 關(guān)注于 App 的通用分析,包括每日登錄用戶(hù)、新增用戶(hù)、使用時(shí)長(zhǎng)、用戶(hù)留存、頁(yè)面分析、訪(fǎng)問(wèn)路徑等基礎(chǔ)分析。
高階分析: 用于 App 專(zhuān)注業(yè)務(wù)的特定分析需求,提供一種靈活的多維分析能力;提供熱修復(fù)報(bào)告,幫助您了解 RPC、修復(fù)、回滾相關(guān)信息等。
性能分析: 提供閃退、卡死、卡頓的統(tǒng)計(jì)功能。當(dāng)客戶(hù)端發(fā)生性能問(wèn)題后,移動(dòng)分析服務(wù)提供實(shí)時(shí)查看性能分析的統(tǒng)計(jì)數(shù)據(jù)。
日志管理: 支持按關(guān)鍵字實(shí)時(shí)搜索查詢(xún)?nèi)罩荆蛲ㄟ^(guò)服務(wù)端開(kāi)關(guān)實(shí)時(shí)控制客戶(hù)端日志上報(bào)邏輯。
在上一步數(shù)據(jù)應(yīng)用的基礎(chǔ)上,可以與大數(shù)據(jù)、營(yíng)銷(xiāo)平臺(tái)及推送平臺(tái)結(jié)合,根據(jù)移動(dòng)分析得到的埋點(diǎn)數(shù)據(jù),通過(guò)大數(shù)據(jù)平臺(tái)進(jìn)行打標(biāo)、圈人、用戶(hù)畫(huà)像及建模后,可以在營(yíng)銷(xiāo)平臺(tái)上發(fā)起一次營(yíng)銷(xiāo)活動(dòng),指定活動(dòng)的類(lèi)型,活動(dòng)算法,參與人群及活動(dòng)獎(jiǎng)品,通過(guò)消息推送、數(shù)據(jù)同步,動(dòng)態(tài)發(fā)布等形式,觸達(dá)到客戶(hù)端,實(shí)現(xiàn)客戶(hù)端拉新促活、活動(dòng)推廣及操作引導(dǎo)的目的。同時(shí)結(jié)合運(yùn)營(yíng)活動(dòng)的場(chǎng)景需求,形成了一套完整的數(shù)字化運(yùn)營(yíng)體系,監(jiān)控一次運(yùn)營(yíng)活動(dòng)的參與人數(shù)、活動(dòng)發(fā)放率、核銷(xiāo)率等,觀察活動(dòng)的有效性。
mPaaS 技術(shù)架構(gòu)與助力
上面介紹的支付寶內(nèi)移動(dòng)端分析方案的技術(shù)積累和架構(gòu)實(shí)踐,已經(jīng)通過(guò) mPaaS 移動(dòng)開(kāi)發(fā)平臺(tái)作為螞蟻金服金融科技的一部分對(duì)外開(kāi)放。mPaaS(Mobile Platform As A Service),源于支付寶 App 的移動(dòng)開(kāi)發(fā)平臺(tái),為移動(dòng)開(kāi)發(fā)、測(cè)試、運(yùn)營(yíng)及運(yùn)維提供云到端的一站式解決方案,能有效降低技術(shù)門(mén)檻、減少研發(fā)成本、提升開(kāi)發(fā)效率,協(xié)助企業(yè)快速搭建穩(wěn)定高質(zhì)量的移動(dòng) App。
在 mPaaS 移動(dòng)開(kāi)放平臺(tái)上,我們將移動(dòng)分析框架中的本地日志、埋點(diǎn)、自動(dòng)化埋點(diǎn)、性能監(jiān)控、Crash報(bào)告、診斷日志等模塊,作為一個(gè)個(gè)獨(dú)立的組件來(lái)進(jìn)行輸出。任何一個(gè) App 都可以通過(guò) mPaaS 插件,添加對(duì)應(yīng)的組件,在當(dāng)前應(yīng)用中集成這些功能,只需要這樣簡(jiǎn)單的操作,就可以讓你的應(yīng)用具有和支付寶一樣強(qiáng)大的移動(dòng)端分析監(jiān)控能力。
客戶(hù)端集成了這些移動(dòng)分析相關(guān)的組件后,用戶(hù)在使用APP過(guò)程中會(huì)產(chǎn)生相應(yīng)的日志,經(jīng)過(guò)數(shù)據(jù)采集、數(shù)據(jù)上報(bào)、數(shù)據(jù)計(jì)算等處理后,計(jì)算的結(jié)果會(huì)同步到 mPaaS 移動(dòng)分析的大盤(pán)上展示,包括應(yīng)用的基礎(chǔ)應(yīng)用概況、性能穩(wěn)定數(shù)據(jù)、流量走向等等,方便開(kāi)發(fā)者實(shí)時(shí)監(jiān)控 APP 的概況大盤(pán)和穩(wěn)定性等,實(shí)時(shí)發(fā)現(xiàn)線(xiàn)上問(wèn)題并修復(fù)。
目前,mPaaS 移動(dòng)開(kāi)發(fā)平臺(tái)已經(jīng)服務(wù)了眾多企業(yè),包括螞蟻金服內(nèi)部的香港支付寶、網(wǎng)商銀行、口碑商家等,同時(shí)還有大量的外部螞蟻生態(tài)合作伙伴,包括12306、上海地鐵、廣州地鐵、廣發(fā)銀行等。秉承著「給世界帶來(lái)小而美的變化」的理念,我們通過(guò) mPaaS 幫助 12306 這樣的國(guó)民級(jí) App 重構(gòu)了客戶(hù)端,使得大家可以用上一個(gè)好的體驗(yàn)的 App 進(jìn)行出行購(gòu)票,用 mPaaS 這樣成熟的底層框架搭建一個(gè) 12306 僅需要 2-3 個(gè)月的時(shí)間。
除了 12306 還有 支付寶香港版 , 廣發(fā)銀行手機(jī)銀行 和 發(fā)現(xiàn)精彩 多個(gè)客戶(hù)端,同樣在短短幾個(gè)月的時(shí)間內(nèi)便完成了業(yè)務(wù)重構(gòu)。
螞金服ATEC城市峰會(huì)·上海
2019年1月4日, 一場(chǎng)金融科技的前沿探索之旅——螞蟻金服ATEC科技大會(huì)即將起航 ,你準(zhǔn)備好了嗎?小螞蟻為大家準(zhǔn)備了滿(mǎn)滿(mǎn)了攻略福利,等你來(lái)拿!了解螞蟻金服ATEC科技大會(huì)更多信息,記得持續(xù)關(guān)注小螞蟻( 官微: 螞 蟻金服科技 )~~
螞蟻金服金融科技官網(wǎng):
https://tech.antfin.com/articles/activity/atecshanghai
ATEC科技大會(huì):
螞蟻金服ATEC(Ant Technology Exploration Conference)科技大會(huì)是螞蟻金服在中國(guó)舉辦的大的技術(shù)盛會(huì),旨在向遍布全球的合作伙伴與技術(shù)專(zhuān)業(yè)人群 分享新技術(shù)的發(fā)展趨勢(shì)與落地實(shí)踐, 通過(guò)對(duì)先進(jìn)的前沿技術(shù)探索與討論,為世界帶來(lái)平等的機(jī)會(huì)。ATEC大會(huì)一直在路上。過(guò)去一年,螞蟻金服ATEC科技大會(huì)走過(guò)杭州、硅谷、新加坡、倫敦 等全球金融科技中心城市,之后 將會(huì)造訪(fǎng)國(guó)內(nèi)各個(gè)金融科技中心城市, 與當(dāng)?shù)厥鼙姺窒砦浵伣鸱?duì)金融科技最前沿的洞察。
ATEC科技大會(huì)報(bào)名方式 & 福利:
本次大會(huì)門(mén)票采用審核制。嘉賓填寫(xiě)個(gè)人信息進(jìn)行報(bào)名,報(bào)名后3天之內(nèi)收到 報(bào)名審核成功 的短信,即為報(bào)名成功。大會(huì)報(bào)名截止日期為 2018年12月31日24時(shí) ,額滿(mǎn)即止。
前50位報(bào)名嘉賓 將會(huì)優(yōu)先審核通過(guò),先到先得哦~
小螞蟻還為大家準(zhǔn)備了本賬號(hào)讀者的專(zhuān)屬福利邀請(qǐng)碼: SF2B3A
還等什么,趕緊 點(diǎn)擊下方 報(bào)名鏈接 或 閱讀原文 或 掃描二維碼 ,小螞蟻期待你的到來(lái)~~
ATEC報(bào)名鏈接:
https://alipaytech.mikecrm.com/l6YPW6V
ATEC報(bào)名二維碼:
網(wǎng)頁(yè)標(biāo)題:支付寶客戶(hù)端架構(gòu)分析:自動(dòng)化日志收集及分析-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://vcdvsql.cn/article16/ddgpdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、云服務(wù)器、網(wǎng)站收錄、網(wǎng)頁(yè)設(shè)計(jì)公司、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容