站在巨人的肩膀上搭建APP功能異常數(shù)據(jù)收集系統(tǒng)-天梭

本文主要講述一種系統(tǒng)思路救赐,對于很多公司沒有足夠的技術(shù)人員來搭建一套完整的全鏈路日志系統(tǒng)情況下可以參考袖牙,對于細(xì)節(jié)實(shí)現(xiàn)方面牺蹄,大家可以根據(jù)自己產(chǎn)品的特性來設(shè)計(jì)粮宛,如果還有疑問滞时,可以發(fā)郵件到我的郵箱ufolca@163.com或者加我微信號【the51alien】備注一下“天梭”叁幢,第一次發(fā)文,如有不妥之處坪稽,還請指正


痛點(diǎn)

|任何一項(xiàng)技術(shù)的實(shí)施曼玩,如果不能解決某些或某個(gè)問題,那么它將沒有任何價(jià)值

相信很多移動(dòng)端開發(fā)人員會(huì)遇到一個(gè)問題窒百,客服收到用戶反饋黍判,APP的某個(gè)頁面打不開了,或者某個(gè)按鈕點(diǎn)不了等等非崩潰性質(zhì)的功能異常篙梢,在沒有該用戶全鏈路日志的情況下顷帖,我們一般會(huì)采取以下幾種處理方式

1. 根據(jù)經(jīng)驗(yàn)去代碼中檢查邏輯,看是否有邊界情況沒考慮到

2. 根據(jù)用戶的場景描述渤滞,在測試環(huán)境模擬一份相同的數(shù)據(jù)看能否復(fù)現(xiàn)

3. 獲取用戶授權(quán)贬墩,使用登錄令牌進(jìn)入問題場景看能否復(fù)現(xiàn)(沒有辦法的辦法,大部分用戶都會(huì)拒絕)

如果上述幾步都無法解決妄呕,相信很多人會(huì)是下面表情


那么有沒有一種比較快速直接的方法來幫助勤勞善良的程序猿(媛)來解決這些問題陶舞,答案是有-利用巨人的肩膀


天梭系統(tǒng)流程圖


大家會(huì)發(fā)現(xiàn)里面有三個(gè)巨人來支撐整個(gè)系統(tǒng)


巨人? ? ? ? ? ? ? ? ? ? | 職責(zé)?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 要求?


云推送平臺(tái)? ? ? ? ?| 對目標(biāo)用戶下發(fā)日志收集指令? ? ? ? | 到達(dá)率高,有聯(lián)合喚醒功能


云資源存儲(chǔ)平臺(tái)? | 存儲(chǔ)出現(xiàn)異常的某天APP鏈路日志 | 容量大绪励,安全性高


熱補(bǔ)丁分發(fā)平臺(tái)? | 下發(fā)補(bǔ)丁? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 成功率高肿孵,實(shí)時(shí)性高,兼容性高


接下來我來一一介紹每個(gè)系統(tǒng)的任務(wù)和機(jī)制

●藍(lán)線部分-客戶端每天將用戶的操作和網(wǎng)絡(luò)日志有序,壓縮,加密,追加的方式寫入本地文件疏魏,可以手動(dòng)埋點(diǎn)或者AOP自動(dòng)化埋點(diǎn)停做,網(wǎng)絡(luò)日志相信很多人都在使用okhttp,可以在攔截器里進(jìn)行日志的寫入,所有操作一定要在子線程里執(zhí)行大莫,文件名以["."+app名+"-"+用戶id+"-"+日期(yyyy-MM-dd)]的隱藏方式,后綴采用jpg來偽裝成破損圖片

●黃線部分-從客戶端開始蛉腌,相信到技術(shù)人員這個(gè)節(jié)點(diǎn)都通俗易懂,最后到推送平臺(tái)我采用的是推送tag,而不是推送id作為參數(shù)眉抬,也是考慮的市面上普遍存在的多客戶端登陸情況贯吓,推送tag-推送id是一種一對多的映射關(guān)系,每個(gè)用戶登錄一臺(tái)設(shè)備都會(huì)手動(dòng)將該設(shè)備的推送id打上tag蜀变,我這里的tag就用的是用戶id

●紅線部分-APP會(huì)收到一條特殊json格式的推送悄谐,例如{"data":{"type":1024,"date":"2018-06-05"}},客戶端的推送系統(tǒng)捕獲到這條指令后調(diào)用日志系統(tǒng)的上傳方法库北,選擇對應(yīng)日期的日志上傳的云存儲(chǔ)平臺(tái)爬舰,這樣技術(shù)人員能夠拿到這個(gè)日志,通過本地的工具寒瓦,將文件內(nèi)容讀取情屹,解密,解壓縮出來杂腰,將問題相關(guān)的功能數(shù)據(jù)mork到APP里復(fù)現(xiàn)

●黑線部分-如圖所示垃你,相信很多人都會(huì)操作,就不過多闡述了


問題

理想是美好的喂很,現(xiàn)實(shí)是殘酷的

1.推送問題惜颇,相信這是android開發(fā)人員最頭痛的問題,如果技術(shù)人員下發(fā)推送指令后十分鐘內(nèi)沒有看到用戶日志少辣,那么也只能通過客服提醒用戶再次打開APP凌摄,一般好的推送平臺(tái)的離線推送會(huì)再觸發(fā)一次

2.補(bǔ)丁問題,補(bǔ)丁修復(fù)的實(shí)時(shí)性和成功率決定了最后一步漓帅,否則只有發(fā)新版本了

3.日志系統(tǒng)建議只保留最近一周的日志锨亏,防止產(chǎn)生大量垃圾文件


后記

茶余飯后的談資

天梭這個(gè)名字來源,是我腦補(bǔ)出的一個(gè)系統(tǒng)場景忙干,像一個(gè)梭子在 用戶手機(jī)+3個(gè)平臺(tái)服務(wù)器的虛擬天網(wǎng)中來回穿梭

目前我采用的幾個(gè)巨人分別是個(gè)推+七牛云+bugly熱補(bǔ)丁分發(fā)平臺(tái)器予,目前這3個(gè)平臺(tái)的免費(fèi)閥值足夠使用了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捐迫,隨后出現(xiàn)的幾起案子乾翔,更是在濱河造成了極大的恐慌,老刑警劉巖弓乙,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件末融,死亡現(xiàn)場離奇詭異钧惧,居然都是意外死亡暇韧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門浓瞪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來懈玻,“玉大人,你說我怎么就攤上這事乾颁⊥课冢” “怎么了艺栈?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長湾盒。 經(jīng)常有香客問我湿右,道長,這世上最難降的妖魔是什么罚勾? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任毅人,我火速辦了婚禮,結(jié)果婚禮上尖殃,老公的妹妹穿的比我還像新娘丈莺。我一直安慰自己,他們只是感情好送丰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布缔俄。 她就那樣靜靜地躺著,像睡著了一般器躏。 火紅的嫁衣襯著肌膚如雪俐载。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天邀桑,我揣著相機(jī)與錄音瞎疼,去河邊找鬼。 笑死壁畸,一個(gè)胖子當(dāng)著我的面吹牛贼急,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捏萍,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼太抓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了令杈?” 一聲冷哼從身側(cè)響起走敌,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逗噩,沒想到半個(gè)月后掉丽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡异雁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年捶障,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纲刀。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡项炼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锭部,我是刑警寧澤暂论,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站拌禾,受9級特大地震影響取胎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜湃窍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一扼菠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坝咐,春花似錦循榆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泽篮,卻和暖如春盗尸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帽撑。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工泼各, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亏拉。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓扣蜻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親及塘。 傳聞我的和親對象是個(gè)殘疾皇子莽使,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,139評論 25 707
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,936評論 2 89
  • 今天參觀一個(gè)企業(yè),在進(jìn)門的展板上笙僚,一塊“聚智群策群力芳肌,匯集創(chuàng)新智慧”,具體包括自己提出肋层、自己完成的改善提案和自己提...
    丘二中閱讀 554評論 0 0
  • 開小灶 今天與同學(xué)一起去超市買食材自己動(dòng)手做飯吃亿笤,非常不錯(cuò)的體驗(yàn)。今天我也親自當(dāng)個(gè)雷主廚栋猖,動(dòng)手做菜净薛。做了一個(gè)韭菜雞...
    雷帥帥閱讀 205評論 0 0
  • 1.JAVA虛擬機(jī)執(zhí)行模型 在JVM執(zhí)行模型里,每個(gè)方法都是在線程中執(zhí)行掂铐,而每個(gè)線程對應(yīng)自己的棧罕拂,每個(gè)棧由幀組成。...