開篇 | 螞蟻金服 mPaaS 服務端核心元件體系概述

螞蟻金服移動開發平臺mPaaS發表於2018-12-06

mPaaS 是源自於支付寶客戶端 App 的移動開發平臺,為企業提供了移動開發、測試、運營及運維提供雲到端的一站式解決方案,mPaaS 能有效降低技術門檻、減少研發成本、提升開發效率,協助企業快速搭建穩定高質量的移動客戶端 App。

經過《mPaaS 客戶端架構解析》系列,我們已經對 mPaaS 的產品矩陣與具體定位有了初步認識。由本章節開始,我們將針對 mPaaS 服務端核心元件體系展開梳理和討論,帶領大家進一步認識瞭解 mPaaS 在服務端元件體系搭建過程中踩過的坑與相應的實踐經驗。

mPaaS 針對端上提供了 3 大研發框架:Native 開發框架、H5 開發框架和小程式開發框架,包含了 20 多個功能性元件,100 多個 UI 控制元件。既然定義為移動研發平臺,自然需要堅實的中臺能力來支撐期整個客戶端生產運營過程,本文旨在介紹 mPaaS 平臺後端各元件的核心架構體系;。首先我們先來看一下 mPaaS 後端的整體架構圖:

image.png | left

如圖所示,mPaaS的定位為移動端的 PaaS 平臺,在他之下是螞蟻金融雲底座,該底座中包含了穩定的硬體環境,可快速的部署網路、儲存、資料庫等服務,在此環境之上金融雲目前配備了分散式的金融級資料庫、檔案儲存、快取服務、註冊中心、配置中心、訊息中心、排程中心、監控中心、大資料平臺等基礎服務,同時還部署了日常運維所需的使用者、許可權、釋出等中樞服務。 mPaaS 則專注於提供移動端所需功能元件,其最核心的為 mAppCenter 控制檯和 5 大功能元件:

image.png | left

一.移動閘道器(MGS):

MGS 是連線客戶端與服務端 RPC 介面的元件產品,他簡化了 RPC 介面的資料協議和通訊協議,能夠顯著提升開發效率和網路通訊效率。

image.png | left

MGS 是符合開閉原則的框架化閘道器,支援多種客戶端通訊協議:http/https/http2/spdy/mmtp(螞蟻移動通訊協議),能輕鬆適配多種終端應用,支援多種資料序列化方式:Json、Protobuf。並且擁有統一標準的API介面管控平臺,規範的 DevOps 能力:

image.png | left

在管控平臺是上可方便快捷的進行 RPC 介面管理(增、刪、改、上下線),配置完成後可實時的進行 APITest,驗證介面是否可按預期完成執行,隨後即可快速生成客戶端的模型程式碼,支援 Android、iOS、JS 等多種語言程式碼生成。針對 RPC 介面 MGS 可對客戶端到移動閘道器的請求進行驗籤,以驗證呼叫者身份保證安全;

MGS 有足夠的自信來支援各種企業級所需的閘道器平臺:

  1. 核心功能和架構與支付寶客戶端生產環境閘道器保持一致,常年保持 99.9999+% 高可用率,具有足夠的穩定性。
  2. 支撐支付寶客戶端、口碑、網商、聚寶、香港版等多個 App,億級日活,經歷了多年雙十一、雙十二、春節紅包活動的海量請求考驗,4c8g 單機 QPS 可支撐 10000+/S,具備超強的單機效能。
  3. 簡單配置即可適配多種終端,可連線異構的後端服務。
  4. 自動生成多端 SDK,實現前後端分離,非常有效的提升開發效率。
  5. 支援移動服務註冊、發現與管控,實現服務聚合與整合,極大的降低了管理成本和安全風險。
  6. 優化後的資料協議與通訊協議,大大提高了網路通訊質量和效率。
  7. 具備路由、流控、安全、ETAG、定製響應等功能。可對 API 的訪問量進行限制,避免高峰期時後臺伺服器被壓垮;可對 API 返回值進行 Mock,以提供特定的響應結果,減少對後端系統的呼叫;可在客戶端請求路由到後端業務系統之前,校驗該次請求的合法性,驗證通過才予以放行;可對客戶端到移動閘道器的請求進行加密,確保資料在傳輸過程中的安全性;目前支援的加密演算法有 ECC、RSA 和國密;並且提供了錯誤碼定製服務,可自定義返回提示內容;

二.訊息推送(MPS):

MPS 提供了專業的移動訊息推送方案,針對不同的場景推出多種推送型別,滿足使用者的個性化推送需求,並整合了蘋果、華為、小米、FCM 等廠商渠道的推送功能,在提供控制檯快速推送能力的同時,也提供了服務端接入方案,方便使用者快速整合移動終端推送功能,與使用者保持互動,從而有效地提高使用者留存率,提升使用者體驗。

image.png | left

MPS 元件的幾大核心功能為:

  1. 多種推送方式:可精準推送訊息給自定義目標使用者群體,單使用者/裝置,全部使用者等方式。可從控制檯頁面觸發推送,也可通過業務系統呼叫 API 介面推送;
  2. 自定義有效期:初次下發訊息時裝置未線上,在訊息有效期內,裝置建鏈或者發起使用者繫結均可觸發訊息的再次推送,確保訊息的到達率;
  3. 個性化模版:提供模版管理功能,供使用者配置個性化模版,支援使用者的個性化推送需求;
  4. 語音播報:根據業務場景需要可配置語音模版,在客戶端收到通知後可通過語音的方式提使用者,增強使用者感知度和訊息的點選率。
  5. 推送配置:可進行證書配置,可支援使用者開啟華為、小米、魅族、FCM等第三方渠道的推送,並支援配置資訊錄入。
  6. 金鑰配置:提供了金鑰配置介面供使用者配置自己的金鑰,對外介面都需要對請求進行簽名,保證了使用者的安全性,同時提供訊息回執功能,供使用者追蹤訊息的投遞結果。 MPS 同樣也為支付寶、口碑等客戶端的雙十一、雙十二、春節紅包等活動提供有力的支援,在當量規模下可提供秒級億筆推送能力,訊息下發速度快,保證穩定到達客戶端,每天併發支撐上億連線數,並且其接入成本低,能高效的為各種業務場景提供服務。

三.移動同步(MSS):

通過一個安全的資料通道 TCP+SSL,及時、準確、有序地將伺服器端的業務資料,主動的同步(SYNC)到客戶端App,是一個客戶端與服務端之間的訊息中介軟體。

image.png | left

MSS 用以解決的問題為:

  1. 客戶端在功能頁面上需要重複呼叫RPC請求已獲取最新的資料,但實際只有少量的資料發生變化甚至完全無資料變更。
  2. 服務端業務資料發生變更時,客戶端無法及時感知,只能通過定時輪詢 RPC 介面來重新整理資料。
  3. 在不通的業務場景客戶端需要分別呼叫不同 RPC 請求來完成不同業務的資料更新。

image.png | left

MSS 通過學習 MySQL 資料庫的 binlog 原理定義了一個 oplog 概念,伺服器和客戶端 SDK 之間傳遞的最小資料單元被稱為一個 oplog,每當業務需要同步一個資料變更到指定的使用者/裝置的時候,業務呼叫 MSS 服務端的 syndData 介面,MSS 會將業務需要同步的資料變更包裝為一個 oplog 持久化到資料庫,然後在客戶端線上的時候把oplog推送給客戶端,如果當前則立即觸發推送。每個 oplog 擁有一個唯一的 oplog id,oplog id 在確定的使用者、確定的業務範圍內保證唯一併且單調遞增(按呼叫順序)。 MSS 按照 oplog id 從小到大的順序把每一條 oplog 都推送到客戶端。通過 ACK 機制服務端和客戶端均會記錄客戶端已同步資料的最大 oplog id(亦可理解為資料版本),後續產生新資料時進行差量計算和差量同步。

image.png | left

MSS 具備多種推送特性可供選擇:

1、指定或全域性

  • 指定:對特定的使用者(或裝置)進行推送;
  • 全域性:給所有的使用者(或裝置)推送資料;

2、使用者或裝置

  • 使用者:對應一個登陸客戶端的賬戶,通過UserID同步;
  • 裝置戶:對應一個客戶端終端裝置,通過Utdid(由客戶端SDK生成)同步;

3、單裝置或多裝置 假設一個使用者有兩臺裝置 A 和 B,則:

  • 單裝置同步:如果一條資料已經同步給了裝置 A,則裝置B不會再收到該資料;
  • 多裝置同步:即使一條資料已經同步給了裝置 A,同樣會被同步給裝置 B。

4、持久化或非持久化

  • 持久化:無序,資料不落資料庫,業務觸發呼叫時,如果當前客戶端線上則立即同步,如果不線上則拋棄。
  • 非持久化:資料落庫存表,保證已資料庫序列同步至客戶端,如果當前線上立即觸發差量計算與差量同步,如果當前不線上,後續客戶端上線後再行觸發同步。

MSS 在螞蟻內部已經覆蓋了所有的客戶 App,近 400 個業務場景,每天數百億條數級同步至各種客戶端,同樣支撐了多年的雙十一、雙十 二、春節紅包大促等活動,持續保持著 99.9999+% 的可用率,每個資料包同步至客戶端耗時盡僅在毫秒級別,已然是目前超級 App 不可或缺的一個高階元件。

四.移動釋出(MDS):

MDS 提供了客戶端版本升級包、熱修復包、H5離線包、小程式安裝包、以及各種資源包、配置項管理和釋出的服務。

image.png | left

MDS 釋出服務可支援通過白名單配置管理進行指定使用者群進行灰度釋出,也可以使用高階過濾規則,比如指定機型、網路、地域、灰度量來進行更多維度的灰度釋出,釋出過程也可設定時間視窗;釋出過程已可隨時終止和回滾至上一穩定版本;為減少資料冗餘及裝置頻寬,MDS 提供了增量差分離線包更新能力,甚至可以在移動端網路條件不穩定場景下依然可提供高效的升級服務;於此同時,為保障安全性,熱修復包有自定義的驗籤流程,可保證指令碼來源的正確性,mPaaS 的 IDE 開發外掛中也提供生成熱修復資源包並對包進行加簽的功能。 除此之外,MDS 也具備基於 mPaaS 框架的客戶端安裝包的編譯構建打包能力,使用者可以將客戶端程式碼託管在金融科技的 GitLab 上,完成程式碼管理,然後通過證書管理,構建打包,實時釋出等一整套開發釋出流程完成最總上線。

image.png | left

五.移動分析(MAS):

MAS 通過對移動客戶端、H5、小程式等多端埋點資料的採集與分析,從終端型別、終端版本、地域、網路型別、廠商機型等多個維度展現和分析移動應用資料實現產品核心指標監控,可幫助企業更好地完成業務監控、使用者洞察與行為分析,指導產品迭代,精細化產品運營,輔助營銷決策,加速業務商業化。 MAS 主要功能包括:

1.基礎分析:

關注於 App 的通用分析,包括每日登入使用者、新增使用者、使用時長、使用者留存、頁面分析、訪問路徑等基礎分析。

2.高階分析:

用於 App 專注業務的特定分析需求,提供一種靈活的多維分析能力;提供熱修復報告,幫助您瞭解 RPC、修復、回滾相關資訊等。

3.效能分析:

提供閃退、卡死、卡頓的統計功能。當客戶端發生效能問題後,移動分析服務提供實時檢視效能分析的統計資料。

4.日誌管理:

支援按關鍵字實時搜尋查詢日誌;通過與 MPS/MSS 等元件功能結合,動態推送指令讓客戶端實時上傳完整日誌檔案包,用於分析和定位客戶端執行狀況;此外還可通過服務端開關實時控制客戶端日誌上報邏輯。

image.png | left

資料鏈路上(見下圖):

在客戶端日誌模組 SDK 採集到日誌檔案後,通過 mPaaS 日誌閘道器(mdap)將日誌內容輸出到伺服器日誌檔案中,隨後使用服務端日誌讀取工具和訊息中介軟體將日誌資料按條分別投遞到 2 個資料平臺(實時計算平臺和離線大資料平臺)。

實時計算平臺核型元件為 Jstorm,JStorm 是一個由阿里雲研發的類似 HadoopMapReduce 的系統,開發者通過編寫 JStorm 的計算 topology,可將日誌檔案做不通的計算處理,他具備超強的計算能力,客戶端日誌資料可在分鐘級別內完成資料計算、儲存與展示,目前 MAS 中的基礎大盤、自定義分析、日誌回放等功能資料均由 JStorm 計算產出;

離線大資料平臺:

目前主要使用阿里雲的 odps 或 spark 來完成(根據實際部署環境來選擇),開發這通過編寫 SQL 指令碼和配置定時排程任務,可完成對超大量級的資料計算,MAS 中的使用者行為分析、流存分析、頁面漏斗分析等功能則由該平臺計算產出。

image.png | left

企業在資料應用的基礎上,可以與大資料、營銷平臺及推送平臺結合,根據移動分析得到的埋點資料,通過大資料平臺進行打標、圈人、使用者畫像及建模後,可以在營銷平臺上發起一次營銷活動,指定活動的型別,活動演算法,參與人群及活動獎品,通過訊息推送、資料同步,動態釋出等形式,觸達到客戶端,實現客戶端拉新促活、活動推廣及操作引導的目的。同時結合運營活動的場景需求,形成了一套完整的數字化運營體系,監控一次運營活動的參與人數、活動發放率、核銷率等,觀察活動的有效性

此前麥肯錫釋出了報告稱,在網際網路時代,隨著中國經濟增長進入新常態,傳統企業的經營環境日益嚴峻,大量金融科技公司正在各細分領域威脅傳統金融企業的核心業務。傳統金融企業面臨著前所未有的機遇和挑戰,數字化轉型迫在眉睫。那麼在這樣的大背景下,螞蟻金服 mPaaS 正是各個組織機構做好自己的數字化轉型的正確開啟方式。

通過本節內容,我們初步瞭解了支付寶在服務端如何構建元件體系,並在這過程中逐步提煉、沉澱相應的能力對外輸出。後續我們將針對具體的元件設計與優化,展開細化的探討。

相應的技術核心,我們同樣應用在了 mPaaS 並對外輸出,歡迎大家上手體驗: t.cn/ELBlvEr

關於服務端元件設計的具體思路和實踐,同樣期待你們的反饋,歡迎一起探討交流。

往期閱讀

《支付寶 App 構建優化解析:通過安裝包重排布優化 Android 端啟動效能》

《支付寶 App 構建優化解析:Android 包大小極致壓縮》

《支付寶小程式框架淺析及如何在 mPaaS 內深度整合》

關注我們公眾號,獲得第一手 mPaaS 技術實踐乾貨

QRCode

相關文章