#研發解決方案#智慧的太空橋管理智慧設備

来源:http://www.cnblogs.com/zhengyun_ustc/archive/2017/11/20/spaceb.html
-Advertisement-
Play Games

你全量發佈了一個新版本應用,怎麼在商戶的大面積投訴之前,率先發現閃退趨勢呢? 如果商戶投訴設備運行緩慢,你怎麼分析性能瓶頸呢?坐高鐵到現場嗎? ...


鄭昀 創建於2017/10/29

關鍵詞:設備,遠程管理,安全桌面,應用商店,遠程式控制制,同屏映射,調用鏈分析,異常上報,卡頓上報


如果你要管理橫跨 80 城的數以萬計台商用設備,你會怎麼做?

怎麼保證設備不被濫用,比如看視頻,打游戲?

怎麼保證應用能快速分發?怎麼做到幾分鐘之內大江南北都打了補丁?

某商戶投訴新版本應用出現閃退,你做了一個測試版本,怎麼投放到指定設備上運行並收集日誌呢?

你全量發佈了一個新版本應用,怎麼在商戶的大面積投訴之前,率先發現閃退趨勢呢?

如果商戶投訴設備運行緩慢,你怎麼分析性能瓶頸呢?坐高鐵到現場嗎?

 

唯一的出路

唯一的出路就是這些設備接受雲端系統的嚴格管控。

太空橋(SpaceBridge) 就是這樣一款設備運維管理平臺。

為什麼叫太空橋?

太空橋是變形金剛里一種連通遙遠區域的瞬時通道,以供塞伯坦人通行其間。這一計劃是以在各個世界間通行為最終目的。

 

智慧設備

太空橋(含太空橋Agent,太空橋移動客戶端)充分體現了我們技術團隊一直以來奉行的哲學:

● Dont make me think:減少無謂的猜測和思索,用不會出錯的機器智能來替代人工;

● 日拱一卒,功不唐捐:構建一套體系就可以一勞永逸,掌管現在和未來所有的設備、數據和客戶。

我們所有未來的設備,都必須是智慧設備。

何謂智慧設備?接受我太空橋統一管理,能做安全桌面,遠程式控制制,應用商店(應用分發),應用黑白名單,增量更新,熱修複,灰度發佈,性能監控,異常和卡頓上報,調用鏈分析等等。如果做不到這些,就不應該拿這種無法遠程管理的設備給我們這些最終兜底的技術團隊挖坑埋雷,因為我們不希望到全國80城出差做技術支持。

 

如何接受太空橋管理呢?

首先需要註冊。

也就是把設備 SN 號和 GUID 號在雲端報備。

可以由人掃碼來報備。設備上會預設安裝我們的太空橋 Agent,它預設界面上會展示一個二維碼。項目實施工程師持太空橋 App 掃碼,則將該設備報備到雲端,與某個商戶下的某個門店綁定。

其次設備連接雲端首次發送心跳,就算是設備激活了。

由於保持了心跳,所以雲端能知道設備是離線、線上還是關機。如下圖所示,我們能準實時觀測到不同管理區有多少台設備,分別處於什麼狀態,查看各項性能指標,如系統可用記憶體,CPU使用率,SD卡大小等。

圖1 首頁-設備監控大圖

 

如何保證設備不被濫用呢?

在下雙屏一體機(就是一臺安卓設備)的初期,收到過設備越來越慢的投訴,調查發現,設備上被安裝了優酷等視頻和游戲 App,難怪速度越來越慢。

所以之後新設備發貨時燒的ROM就是我們定製的ROM,沒有我們簽名的應用是會被自動攔截,無法安裝的。我們還隨系統下發了安全桌面,限定桌面上只出現我們的應用。

圖2 應用商店-太空橋安全桌面

 

應用如何分發呢?

太空橋實現了一個應用商店,管理 App 以及它們的版本,如下圖所示。凡是要部署到智慧設備上的應用,都要通過太空橋應用商店來分發。

應用商店這個概念大家都很熟悉。

創建了應用之後,就要管理版本了。首先上傳包文件,填寫版本描述,選擇支持的設備型號(應用不一定能分發到各種安卓設備上)。其次系統會自動從包文件里讀出版本號。

圖4 版本管理-更新管理

 

有了版本,就要針對版本設置版本策略了。

什麼是版本策略?你是要全量發佈,還是灰度發佈?它倆的區別如下圖所示:

圖5 設置策略

 

目前灰度發佈允許兩種範圍:

  1. 按設備:選擇具體的一批設備;

  2. 按餐飲中心:選擇具體的一批餐飲中心,整個餐飲中心的設備都會更新版本;

 

發佈到設備是最小粒度。這樣就可以做到,某個檔口投訴新版本有閃退,我們給他單獨提供一個測試版本來排查問題。

 

如何對設備遠程式控制制?

目前設備層級的遠程式控制制僅支持重啟和關機,還將支持一些關鍵特性,比如同屏映射,即設備和太空橋頁面操作上的同步顯示,比如設備的目錄瀏覽和文件讀取,日誌文件還是要說拿就拿的。

設備上的應用層級則支持卸載、打開和關閉。當然 agent 和安全桌面是禁止卸載的。

 

如何發現異常呢?

餐飲中心如果投訴“檔口 A 剛纔從點餐界面切到已售情況會卡一下,最近偶爾會遇到幾次”、“檔口 B 反饋點菜單切換卡了五六秒”、“檔口 C反饋點擊列印餐櫃密碼,App 退出了”。

這種投訴遠程協助的話,跟進很難。第一,它可能不易重現,比如與當時的網路環境卡有關。第二,不定是哪兒出的問題,日誌不一定打點了。

這時候就需要所有的應用都引入我們的性能 SDK,主動上報卡頓(對於安卓來說就是ANR(Application Not Response)了)、異常、崩潰了。

圖9 異常上報-崩潰分析

 

我們可以看一下上圖中的空指針異常,能看到這種異常分佈在哪幾個版本里,影響了多少個客戶。

圖10 崩潰分析-異常詳情1

所有上報的設備的信息也能看到:

圖11 崩潰分析-異常詳情2

當然必不可少的是堆棧信息:

圖12 崩潰分析-異常詳情3

甚至可以看到崩潰那一刻的記憶體大小、存儲空間大小、安卓系統版本號:

圖13 崩潰分析-異常詳情4

 

總的來說還是非常便於發現問題和排查問題的。

 

如何主動診斷異常呢?

現在正在做的是:

網路請求分析。主要是圍繞著設備上應用的 HTTP 請求做分析,DNS 解析時間,遠端響應時間,數據傳輸時間等等。別人說應用慢,你好歹讓 ISV 知道慢在哪一段。

調用鏈分析。當系統出現問題時,我們可以迅速切入設備,調用鏈可視化,從而便於排查問題出在網路操作、文件讀寫還是什麼函數上,指導 ISV 解決問題。

 

總結

總的來說,太空橋是一個非常優秀的設備運維管理平臺,已經能很好地管控智慧設備了,太空橋的開發者們都非常厲害,在非常短的時間內攻剋了一個又一個技術難點,大踏步挺進這個我們以往未曾涉足過的領域。

 

-EOF-

 

語錄1枚:

公司大了,久攻不下的堡壘,確實需要來一次三板斧共創,跨團隊組成戰隊,互相PK,高壓態勢下激蕩心力腦力體力,最終逼出落地方案。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • IJKPlayer拖動播放進度會導致重新請求數據,未使用已經緩衝好的數據,所以應該儘量控制緩衝區大小,減少不必要的數據損失。 mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-buffer-size", 100 * 102 ...
  • 一. 基本函數 1. 根據 sel 得到 class 的實例方法 2. 根據 sel 得到 class 的函數指針 3. 給 class 添加方法 4. 替換 class 的 sel 對應的函數指針,返回值為 sel 對應的原函數指針 5. 交換兩個 method 6. 直接替換 method 的函 ...
  • 一、Objective C 中的基本類型 首先看下 Objective C 的對象模型,每個 Objective C 對象都是一個指向 Class 的指針。Class 的結構如下: struct objc_class { Class _Nonnull isa OBJC_ISA_AVAILABILIT ...
  • 首先這是我自己第一篇博客,如果有什麼不對的,大家指出,積極修改。 cordova是大家做混合開發最經常使用的一款使用HTML, CSS & JS進行移動App開發多平臺共用一套代碼,中文官方網站(http://cordova.axuer.com/),號外一下最近好多國外網站被牆的太嚴重,回歸正題,下 ...
  • strong和copy是常用到的修飾符,那麼什麼時候用strong,什麼時候用copy,先上一段代碼再說(以下代碼直接在ViewController中寫); 先定義兩個數組 viewDidLoad方法 列印結果 可以看到arraystrong隨著arrayMut的改變而改變了,而arraycopy沒 ...
  • Android 如何將手機屏幕投影到 PC 屏幕上或者投影儀上做演示? 公司開發款APP,要給領導演示,總不能用手機面對面演示吧。所以找了好久,找到一款體驗超好的: Total Control-幫助你使用電控制手機(自行下載,精簡版免費)。 其實這個軟體主要是用來用電腦來操控手機屏幕的,功能強大,也 ...
  • 隨著二手車交易市場呈爆髮式增長,二手車估值需要詳細瞭解車輛的狀況和維修歷史,車架號/vin碼是車輛唯一的身份標識,也是瞭解二手車車況的入口。手機掃描vin碼識別技術給車輛估值平臺提供了便捷的查詢入口,通過構建車況自動化查詢平臺,滿足車商隨時隨地查詢車況的需求。技術交流:187 016 868 57 ...
  • 效果如圖,很常見的一種佈局方式,只是沒有採用radiobutton,方法都很多,很多人都自定義寫在一個view裡面,不過代碼量偏大,所以還是xml寫吧 這樣寫下來感覺代碼量還是挺少的,而且很好擴展,然後在點擊的時候加了個回彈動畫,頓時體驗好多了 public class MainActivity e ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...