支付寶錢包流量電量優化實踐
劉富康:阿里巴巴支付寶錢包開發工程師,經歷并參與了支付寶錢包客戶端框架1.0到3.0的演進,對客戶端框架和動態加載技術有深刻理解。目前正在負責支付寶錢包監控體系搭建工作。
重點介紹支付寶錢包客戶端基于客戶端監控體系上,針對流量電量進行專項優化的實踐經驗。涉及監控日志采集、關鍵場景分析,流量熔斷等內容。以下來分享精彩內容。
平臺型移動客戶端之痛
平臺型移動客戶端資源有限,包括它的cpu,它的內存,它的流量,它的電量等,在這樣一個資源受限的設備上運行應用時環境是非常復雜的。
對于andriod來說,不能的版本,不同的廠商,兼容性處理也很棘手。
全民移動化,很多業務都在移動設備中開采,誕生了很多超級APP(微信,淘寶),戰略的發展都在往平臺化去發展,在這個平臺上就運行了大量的業務。那這個平臺就提供了溝通的服務等,監控也是平臺的一部分。
客戶端監控跟后端數據監控不一樣,客戶端要解決本身的問題,客戶端在用戶手里不可觸達,環境復雜;客戶端出現問題不可逆,需要在問題發生之前解決問題。
客戶端全面監控體系
客戶端全面監控體系由全面診斷,快速診斷,動態升級三個部分構成。
全面監控及時發現問題:監控指標來源于客戶端,客戶端監控日志上報給服務端;實時報警系統,數據采集上來后分析,分析出問題就要報警出來;多維度監控,上報體系靈活。
整個的監控在獨立的進程中上傳,為了不耗流量電量,采用一個靈活的采集策略配置,實時監控的依據是縱向橫向的對比,數據的采集包括流量、電量、H5加載速度、RPC調用、啟動速度等,它們的采集方式也不一樣。
快速診斷,準確分析問題:面向切面編程,自動化用戶行為錄制,診斷日志記錄和保存,實時推送診斷任務。
診斷日志越詳細越好,采取編譯期靜態服務的方式織入,安全可靠,不依賴語言,不依賴平臺,不依賴容器,在編譯期覆蓋第三方JAR包。圖1為是否用AOP變成的一個對比,用AOP技術的在編譯期就會把一些邏輯織入進去。
圖1
對于用戶行為的錄制,支付寶錢包現在可以做到自動的錄制用戶的點擊控件的操作,瀏覽頁面的操作。由于日志量非常的大,放在自己的目錄上是不合適的,通常放在SDK上進行加密保存,以保證數據安全。按需上傳,通過長鏈接通道推送下去,需要分析的日志輝傳上來。系統輸出的一些日志在logcat里面,有一種方式可以把logcat帶上來,甚至可以把當前日志的內存下載下來。
動態升級,無痛解決問題。動態升級是部分,不是全部,因此需要模塊化。插件化,可以不通過客戶端單獨加載模塊,允許某些模塊通過后面增量的方式升級上來,在用戶不重啟的情況下能把模塊單獨加載起來。
電量流量專項治理
耗電大戶,流量熔斷,流量清單。
電量很難量化,流量很難控制。
電量與CPU喚醒有關,當系統搜到AlarmManager提醒時,會自動幫你申請wakelock,這是非常重要的一個監控點,通過AOP的方法,能夠廣播接收器被觸發了。此外還有LocationManager,sensorManager等監控管理。WifiLock讓wifi模塊一直處于活躍狀態,wakeLock直接喚醒CPU。通過AOP的方法解決了很多問題。
PPT下載地址:http://club.alibabatech.org/resource_detail.htm?topicId=164