mPaaS 服務端核心組件:移動分析服務 MAS 架構解析

承接《開篇 | mPaaS 服務端核心組件體系概述》已經介紹移動分析服務 MAS 的主要功能和數據鏈路狀況,包括「基礎分析,自定義分析,性能分析,日誌管理」。 本章節,咱們將對移動分析服務 MAS 背後的架構能力作進一步的解析。html

1. MAS 移動分析核心能力:

  1. 經過實時計算多維數據,全方位展示移動應用的表現力;
  2. 經過離線分析用戶屬性和行爲,促進服務產品優化與運營推廣;
  3. 經過自動採集流程日誌,提高排查效率,快速解決研發問題。

由核心能力延伸出來的功能包括:前端

  1. 用戶行爲分析:提供應用使用分析,包括用戶報活、用戶登陸、新增用戶等多種指標的統計功能,並支持按照平臺、版本、地域、時間的多維度分析對比,方便用戶更快速、便捷的瞭解自身 App 的使用狀況。
  2. 穩定性分析:提供應用穩定性分析,包括閃退監控、異常監控、性能監控及用戶診斷功能,幫助開發人員及時發現、定位問題。
  3. 診斷分析:提供應用日誌診斷,包括我的用戶診斷和診斷日誌採集兩部分。其中我的用戶診斷用戶實時獲取用戶客戶端行爲,診斷日誌採集經過 Push 方式下發指令到客戶端傳回客戶端本地日誌。

因而可知,MAS移動分析對移動客戶端研發及企業其餘方面的做用爲:採集海量移動端產生的日誌數據,並經過實時或離線計算,輸出特定的分析結果和報表,並經過 MAS 數據分析能力來賦能企業,協助企業創建一個互利共生的移動端服務生態,幫助企業監控終端、洞察用戶行爲和行業變遷來輔助企業的進行戰略佈局和決策支持。mysql

2. MAS 移動分析架構解析

首先看一下數據鏈路圖:算法

從數據鏈路圖中咱們能夠得知:數據的最前端源於客戶端的 SDK,目前 mPaaS 框架中提供的日誌埋點 SDK 主要由 4 部分功能:sql

  1. 從服務端拉取日誌採集及上報規則,如「是否上報、上報網絡條件、上報頻率、包大小、日誌存放時間」等等;
  2. 自動監控客戶端基礎行爲,並記錄埋點日誌,如:報活、跳轉、網絡、耗時、Crash 等;
  3. 提供相應的接口 API,供業務模塊調用,並封裝基礎參數(業務只需關注業務日誌數據)後輸出至客戶端日誌文件;
  4. 根據採集與上報規則,將客戶端日誌上報至服務端日誌網關(MDAP)。

然後,當所需日誌均上報至 MDAP 日誌網關後,MDAP 會以服務端日誌輸出至服務器日誌文件中,在服務器中部署的 logtail/flume 等採集工具將日誌採集並傳輸至 SLS/Kafka 等消息中間件,再由不一樣的平臺接收,並根據各自的規則和調度計劃進行計算。數據庫

目前 MAS 同時支持了實時、離線 2 種計算形式:編程

a. 實時計算

依託於 Kepler 或 JStorm 的計算引擎來提供支持,其中:Kepler 爲螞蟻實時計算平臺,包括底層的計算引擎 Kepler 和對應的開發平臺 Kepler-UI,支持 exactly once語義,並提供了 Transaction 等支持。數組

Kepler 爲提供了 SQL 和高階算子兩種編程範式:服務器

  1. Kepler SQL:兼容了大部分的 Streaming SQL 的語義,並支持 Window、Trigger 等 Apache Beam 的概念。SQL 因爲易上手易維護的特色,是目前 Kepler 用戶使用方式的主流。
  2. 高階算子:Kepler 內置了完備的實時計算算子,包括:過濾(Filter)、轉換(UDF、UDTF)、聚合(UDAF)、多流 Join、Union、Split 等類型,在 Spark 、Flink 高階 API 裏你能看到相同的概念,經過組裝這些算子,用戶能夠輕鬆實現一個自定義邏輯的 DataStream。經過高階 API,用戶能夠更細粒度地去描述計算自己,而由於高階算子封裝了 State、Retract 等能力,又爲用戶省去了繁瑣的存儲和出錯回滾細節。

在 Kepler 計算引擎層,則專一調度和執行數據流,而執行引擎對於算子層是可插拔的,目前 Kepler 支持了默認的執行引擎和螞蟻的分佈式計算框架 Raya。網絡

Raya 是螞蟻版本的 Ray,Ray學習可參考: https://ray.readthedocs.io/en/latest/index.html

在 IO 層,Kepler 計劃支持了全部的存儲組件,包括但不限於 SLS、AntQ、DRC、HBase、MySQL、Kudu、Pangu、Explorer 等等,而且這些存儲類型都有對應的內置 IO 組件,使用者不須要寫任何 IO 相關的一行代碼,就能輕鬆完成數據讀取和存儲。

此外,MAS 爲適應不一樣部署環境,也支持了 JStorm 實時計算平臺,經過在 JStorm 中提交計算拓撲完成數據分析。

JStorm 是一個分佈式實時計算引擎,相似 Hadoop MapReduce,用戶按照規定的編程規範實現一個任務,將任務提交到 JStorm 上,JStorm 便可將任務 7*24 小時調度起來。核心原理以下圖:

  1. JStorm 提交運行的程序稱爲 Topology。
  2. Topology 處理的最小的消息單位是一個 Tuple,也就是一個任意對象的數組。
  3. Topology 由 Spout 和 Bolt 構成。Spout 是發出 Tuple 的結點。Bolt 能夠隨意訂閱某個 Spout 或者 Bolt 發出的 Tuple。Spout 和 Bolt 都統稱爲 Component。

MAS 埋點數據經過 SLS/Kafka,等消息中間件流入計算拓撲。拓撲中會根據預先配置的日誌切分、聚合規則,對數據進行屢次的處理,並最終流出至持久層,持久層 MAS主要用到了 MESDB(基於 ElasticSearch)、OTS(HBase) 和 Explorer:

  • 鑑於 ElasticSearch 全文檢索能力以及強大的寫入和查詢性能,MESDB 主要用來存放基礎行爲數據,例如,活躍用戶、新增用戶、累計用戶以及日誌回放數據。

  • OTS(HBase),則主要存放了部分結果,與計算中間態數據,而 Explorer 則用來作用戶自定義分析的數據存儲。

  • Explorer 是螞蟻分佈式低延時的 PB 級實時分析型列式數據庫:

    首先,列式設計可最大限度地減小 I/O 爭用,後者是致使分析處理髮生延遲的主要緣由。列式設計還可提供極高的壓縮率,相比於行式數據庫,一般可將壓縮率提升四倍或五倍。MPP 數據倉庫一般按比例線性擴展,這意味着若是您將雙節點 MPP 倉庫的空間翻倍,那麼可有效將其性能提升一倍。

    其次,Explorer 協議層提供 MySQL 協議的接口,經過 mysql-jdbc-driver,能夠向 Explorer 發起 insert,select 請求。而計算層基於 Drill,支持多種類型的存儲,集羣線性擴展,執行計劃可定製,存儲層則基於 Druid,擁有針對 OLAP 特有的存儲格式和計算能力,Explorer 總體架構以下圖:

對於 MAS 自定義分析中,因沒法預先肯定用戶自定義聚合規則,以及屬性維度,所以選擇了 Explorer,並利用其強大的預聚合能力來支撐。在 Kepler/JStorm 實時計算拓撲中,僅需根據用戶自定義的屬性維度,切分後實時插入 Explorer 便可完成聚合。

此外,即時查詢能力強與弱的核心的標準:返回時間。

且不說支付寶客戶端這樣的超級 App,mPaaS 公有云服務的廠商天天的日誌都達到數億條,數據存儲TB級別,在這個量級上的查詢要在秒級返回數據,是很是困難的。而 Explorer 採用的 Hyperlog 算法則恰好解決了這個問題,充分的支撐了 MAS 的訴求(若是想要更多瞭解這個算法,請搜索 Cardinality Estimation,能夠對類型的算法有更全面的瞭解)。

b. 離線計算

爲支持不一樣的部署場景,MAS 在離線計算平臺,可按實際須要選擇阿里雲 DataWorks,Hadoop/Spark,或螞蟻金融雲-數據智能研發平臺來支撐。

  1. DataWorks:是阿里雲提供的離線數據平臺,在國內有很是良好的應用。
  2. Hadoop/Spark:開源事實標準型的數據平臺,是自建大數據平臺的不二選擇。
  3. 數據智能研發平臺(彩雲間):是在螞蟻金融雲中搭載的數據研發平臺,已經在不少大型機構中得的應用和實踐

上述的離線計算平臺均提供了 MAS 所需的核心能力爲:數據集成、數據開發、數據管理、數據治理,可對數據進行傳輸、轉換、集成的操做,從不一樣的數據源引入數據,對數據進行轉化和開發,最後將數據輸送到其餘數據系統。

此外在離線計算中最核心的概念爲 ETL 任務:ETL 是對大數據的,清洗,加工,加載,它實現了對日誌數據的格式化,驗證,補充等處理,通過一系列統計分析,並加載到在線系統中。而不管上述 3 個平臺怎麼支撐,MAS離線分析始終圍繞ETL來建設和管理,在當前這套 MAS 中經過長時間提煉出來經常使用,通用的計算方法和邏輯, MAS 預置了上百個任務,並按照任務功能主要分爲:ODS,CDM,ADS 三層,分別是數據接入層,數據公共層,數據應用層。數據模型則採用了星型模型,可以知足快速理解,快速開發等特色。

  • 任務關係

  • 任務樹 Demo

離線計算目前主要支撐了 MAS 的:設備分析、留存分析、頁面分析、漏斗分析、 mPaaS 組件分析等多個模塊。

3. MAS 核心競爭力與優點

  1. 多樣性:MAS 除行爲分析、活躍分佈、參與度分析、漏斗分析、留存分析、設備分析、頁面分析、事件分析、自定義分析提等基於用戶爲的數據分析外,還提供供了啓動分析、Crash 分析、卡頓卡死分析、渠道分析、地域分析等多種維度的分析能力,已可知足常規 App 絕大部分的分析需求。
  2. 兼容性:MAS 提供支持主流的開源解決方案和基於螞蟻金融雲、阿里雲解決方案的能力,提供更加符合不一樣資源環境的解決方案。
  3. 擴展性:MAS 架構經歷了海量數據的壓力的檢驗,具備極強的橫向擴展能力。即便在初期是搭建最小單元,隨着用戶量的增加,能夠即時擴容,水平提高服務能力,以知足企業對將來的規劃需求。
  4. 適應性:MAS 的客戶已包含銀行、證券等金融企業,也有出行、地鐵等非金融行業,同時可支持企業根據自身的特性定製特定的業務報表。

經過本節內容,但願給你們介紹一下大數據的基本技術,mPaaS MAS的相關技術,但願有機會針對全文索引,分析數倉系統,實時流計算,離線開發等等各個維度上的技術進行交流。

歡迎加入 mPaaS 技術交流羣:

  • 釘釘羣:經過釘釘搜索羣號「23124039」。

期待你的加入。

Code Hub 線上直播第一期,邀約臺灣 DevOps 社區陳正瑋和螞蟻金服移動開發平臺 mPaaS 團隊古塘,和你們一同探討《DevOps 前世此生》及《敏捷開發與動態更新在支付寶內的深度實踐》。3 月 13 日,線上直播見!

相關文章
相關標籤/搜索