mPaaS 是源自於支付寶客戶端 App 的移動開發平臺,爲企業提供了移動開發、測試、運營及運維提供雲到端的一站式解決方案,mPaaS 能有效下降技術門檻、減小研發成本、提高開發效率,協助企業快速搭建穩定高質量的移動客戶端 App。算法
通過《mPaaS 客戶端架構解析》系列,咱們已經對 mPaaS 的產品矩陣與具體定位有了初步認識。由本章節開始,咱們將針對 mPaaS 服務端核心組件體系展開梳理和討論,帶領你們進一步認識瞭解 mPaaS 在服務端組件體系搭建過程當中踩過的坑與相應的實踐經驗。數據庫
mPaaS 針對端上提供了 3 大研發框架:Native 開發框架、H5 開發框架和小程序開發框架,包含了 20 多個功能性組件,100 多個 UI 控件。既然定義爲移動研發平臺,天然須要堅實的中臺能力來支撐期整個客戶端生產運營過程,本文旨在介紹 mPaaS 平臺後端各組件的核心架構體系;。首先咱們先來看一下 mPaaS 後端的總體架構圖:小程序
如圖所示,mPaaS的定位爲移動端的 PaaS 平臺,在他之下是螞蟻金融雲底座,該底座中包含了穩定的硬件環境,可快速的部署網絡、存儲、數據庫等服務,在此環境之上金融雲目前配備了分佈式的金融級數據庫、文件存儲、緩存服務、註冊中心、配置中心、消息中心、調度中心、監控中心、大數據平臺等基礎服務,同時還部署了平常運維所需的用戶、權限、發佈等中樞服務。 mPaaS 則專一於提供移動端所需功能組件,其最核心的爲 mAppCenter 控制檯和 5 大功能組件:後端
MGS 是鏈接客戶端與服務端 RPC 接口的組件產品,他簡化了 RPC 接口的數據協議和通信協議,可以顯著提高開發效率和網絡通信效率。緩存
MGS 是符合開閉原則的框架化網關,支持多種客戶端通信協議:http/https/http2/spdy/mmtp(螞蟻移動通信協議),能輕鬆適配多種終端應用,支持多種數據序列化方式:Json、Protobuf。而且擁有統一標準的API接口管控平臺,規範的 DevOps 能力:安全
在管控平臺是上可方便快捷的進行 RPC 接口管理(增、刪、改、上下線),配置完成後可實時的進行 APITest,驗證接口是否可按預期完成運行,隨後便可快速生成客戶端的模型代碼,支持 Android、iOS、JS 等多種語言代碼生成。針對 RPC 接口 MGS 可對客戶端到移動網關的請求進行驗籤,以驗證調用者身份保證安全;服務器
MGS 有足夠的自信來支持各類企業級所需的網關平臺:網絡
MPS 提供了專業的移動消息推送方案,針對不一樣的場景推出多種推送類型,知足用戶的個性化推送需求,並集成了蘋果、華爲、小米、FCM 等廠商渠道的推送功能,在提供控制檯快速推送能力的同時,也提供了服務端接入方案,方便用戶快速集成移動終端推送功能,與用戶保持互動,從而有效地提升用戶留存率,提高用戶體驗。架構
MPS 組件的幾大核心功能爲:併發
經過一個安全的數據通道 TCP+SSL,及時、準確、有序地將服務器端的業務數據,主動的同步(SYNC)到客戶端App,是一個客戶端與服務端之間的消息中間件。
MSS 用以解決的問題爲:
MSS 經過學習 MySQL 數據庫的 binlog 原理定義了一個 oplog 概念,服務器和客戶端 SDK 之間傳遞的最小數據單元被稱爲一個 oplog,每當業務須要同步一個數據變動到指定的用戶/設備的時候,業務調用 MSS 服務端的 syndData 接口,MSS 會將業務須要同步的數據變動包裝爲一個 oplog 持久化到數據庫,而後在客戶端在線的時候把oplog推送給客戶端,若是當前則當即觸發推送。每一個 oplog 擁有一個惟一的 oplog id,oplog id 在肯定的用戶、肯定的業務範圍內保證惟一而且單調遞增(按調用順序)。 MSS 按照 oplog id 從小到大的順序把每一條 oplog 都推送到客戶端。經過 ACK 機制服務端和客戶端均會記錄客戶端已同步數據的最大 oplog id(亦可理解爲數據版本),後續產生新數據時進行差量計算和差量同步。
MSS 具有多種推送特性可供選擇:
一、指定或全局
二、用戶或設備
三、單設備或多設備 假設一個用戶有兩臺設備 A 和 B,則:
四、持久化或非持久化
MSS 在螞蟻內部已經覆蓋了全部的客戶 App,近 400 個業務場景,天天數百億條數級同步至各類客戶端,一樣支撐了多年的雙11、雙十 2、春節紅包大促等活動,持續保持着 99.9999+% 的可用率,每一個數據包同步至客戶端耗時盡僅在毫秒級別,已然是目前超級 App 不可或缺的一個高級組件。
MDS 提供了客戶端版本升級包、熱修復包、H5離線包、小程序安裝包、以及各類資源包、配置項管理和發佈的服務。
MDS 發佈服務可支持經過白名單配置管理進行指定用戶羣進行灰度發佈,也可使用高級過濾規則,好比指定機型、網絡、地域、灰度量來進行更多維度的灰度發佈,發佈過程也可設定時間窗口;發佈過程已可隨時終止和回滾至上一穩定版本;爲減小數據冗餘及設備帶寬,MDS 提供了增量差分離線包更新能力,甚至能夠在移動端網絡條件不穩定場景下依然可提供高效的升級服務;於此同時,爲保障安全性,熱修復包有自定義的驗籤流程,可保證腳原本源的正確性,mPaaS 的 IDE 開發插件中也提供生成熱修復資源包並對包進行加簽的功能。 除此以外,MDS 也具有基於 mPaaS 框架的客戶端安裝包的編譯構建打包能力,用戶能夠將客戶端代碼託管在金融科技的 GitLab 上,完成代碼管理,而後經過證書管理,構建打包,實時發佈等一整套開發發佈流程完成最總上線。
MAS 經過對移動客戶端、H五、小程序等多端埋點數據的採集與分析,從終端類型、終端版本、地域、網絡類型、廠商機型等多個維度展示和分析移動應用數據實現產品核心指標監控,可幫助企業更好地完成業務監控、用戶洞察與行爲分析,指導產品迭代,精細化產品運營,輔助營銷決策,加速業務商業化。 MAS 主要功能包括:
1.基礎分析:
關注於 App 的通用分析,包括每日登陸用戶、新增用戶、使用時長、用戶留存、頁面分析、訪問路徑等基礎分析。
2.高階分析:
用於 App 專一業務的特定分析需求,提供一種靈活的多維分析能力;提供熱修復報告,幫助您瞭解 RPC、修復、回滾相關信息等。
3.性能分析:
提供閃退、卡死、卡頓的統計功能。當客戶端發生性能問題後,移動分析服務提供實時查看性能分析的統計數據。
4.日誌管理:
支持按關鍵字實時搜索查詢日誌;經過與 MPS/MSS 等組件功能結合,動態推送指令讓客戶端實時上傳完整日誌文件包,用於分析和定位客戶端運行情況;此外還可經過服務端開關實時控制客戶端日誌上報邏輯。
數據鏈路上(見下圖):
在客戶端日誌模塊 SDK 採集到日誌文件後,經過 mPaaS 日誌網關(mdap)將日誌內容輸出到服務器日誌文件中,隨後使用服務端日誌讀取工具和消息中間件將日誌數據按條分別投遞到 2 個數據平臺(實時計算平臺和離線大數據平臺)。
實時計算平臺核型組件爲 Jstorm,JStorm 是一個由阿里雲研發的相似 HadoopMapReduce 的系統,開發者經過編寫 JStorm 的計算 topology,可將日誌文件作不通的計算處理,他具有超強的計算能力,客戶端日誌數據可在分鐘級別內完成數據計算、存儲與展現,目前 MAS 中的基礎大盤、自定義分析、日誌回放等功能數據均由 JStorm 計算產出;
離線大數據平臺:
目前主要使用阿里雲的 odps 或 spark 來完成(根據實際部署環境來選擇),開發這經過編寫 SQL 腳本和配置定時調度任務,可完成對超大量級的數據計算,MAS 中的用戶行爲分析、流存分析、頁面漏斗分析等功能則由該平臺計算產出。
企業在數據應用的基礎上,能夠與大數據、營銷平臺及推送平臺結合,根據移動分析獲得的埋點數據,經過大數據平臺進行打標、圈人、用戶畫像及建模後,能夠在營銷平臺上發起一次營銷活動,指定活動的類型,活動算法,參與人羣及活動獎品,經過消息推送、數據同步,動態發佈等形式,觸達到客戶端,實現客戶端拉新促活、活動推廣及操做引導的目的。同時結合運營活動的場景需求,造成了一套完整的數字化運營體系,監控一次運營活動的參與人數、活動發放率、覈銷率等,觀察活動的有效性
此前麥肯錫發佈了報告稱,在互聯網時代,隨着中國經濟增加進入新常態,傳統企業的經營環境日益嚴峻,大量金融科技公司正在各細分領域威脅傳統金融企業的核心業務。傳統金融企業面臨着史無前例的機遇和挑戰,數字化轉型迫在眉睫。那麼在這樣的大背景下,螞蟻金服 mPaaS 正是各個組織機構作好本身的數字化轉型的正確打開方式。
經過本節內容,咱們初步瞭解了支付寶在服務端如何構建組件體系,並在這過程當中逐步提煉、沉澱相應的能力對外輸出。後續咱們將針對具體的組件設計與優化,展開細化的探討。
相應的技術內核,咱們一樣應用在了 mPaaS 並對外輸出,歡迎你們上手體驗: t.cn/ELBlvEr
關於服務端組件設計的具體思路和實踐,一樣期待大家的反饋,歡迎一塊兒探討交流。
往期閱讀
《支付寶 App 構建優化解析:經過安裝包重排布優化 Android 端啓動性能》