内容简介:本章节,我们将对移动分析服务 MAS 背后的架构能力做进一步的解析。1
承接《 开篇 | mPaaS 服务端核心组件体系概述 》已经介绍移动分析服务 MAS 的主要功能和数据链路情况,包括“ 基础分析,自定义分析,性能分析,日志管理 ”。
本章节,我们将对移动分析服务 MAS 背后的架构能力做进一步的解析。
1
MAS 移动分析核心能力:
-
通过实时计算多维数据,全方位展现移动应用的表现力;
-
通过离线分析用户属性和行为,促进服务产品优化与运营推广;
-
通过自动采集流程日志,提升排查效率,快速解决研发问题。
由核心能力延伸出来的功能包括:
-
用户行为分析: 提供应用使用分析,包括用户报活、用户登录、新增用户等多种指标的统计功能,并支持按照平台、版本、地域、时间的多维度分析对比,方便用户更快速、便捷的了解自身 App 的使用情况。
-
稳定性分析: 提供应用稳定性分析,包括闪退监控、异常监控、性能监控及用户诊断功能,帮助开发人员及时发现、定位问题。
-
诊断分析: 提供应用日志诊断,包括个人用户诊断和诊断日志采集两部分。其中个人用户诊断用户实时获取用户客户端行为,诊断日志采集通过 Push 方式下发指令到客户端传回客户端本地日志。
由此可见,MAS移动分析对移动客户端研发及企业其他方面的作用为:采集海量移动端产生的日志数据,并通过实时或离线计算,输出特定的分析结果和报表,并通过 MAS 数据分析能力来赋能企业,协助企业建立一个互利共生的移动端服务生态,帮助企业监控终端、洞察用户行为和行业变迁来辅助企业的进行战略布局和决策支持。
2
MAS 移动分析架构解析
首先看一下数据链路图:
从数据链路图中我们可以得知:数据的最前端源于客户端的 SDK,目前 mPaaS 框架中提供的日志埋点 SDK 主要由 4 部分功能:
-
从服务端拉取日志采集及上报规则,如“ 是否上报、上报网络条件、上报频率、包大小、日志存放时间 ”等等;
-
自动监控客户端基础行为,并记录埋点日志,如:报活、跳转、网络、耗时、Crash 等;
-
提供相应的接口 API,供业务模块调用,并封装基础参数(业务只需关注业务日志数据)后输出至客户端日志文件;
-
根据采集与上报规则,将客户端日志上报至服务端日志网关(MDAP)。
而后,当所需日志均上报至 MDAP 日志网关后,MDAP 会以服务端日志输出至服务器日志文件中,在服务器中部署的 logtail/flume 等采集 工具 将日志采集并传输至 SLS/Kafka 等消息中间件,再由不同的平台接收,并根据各自的规则和调度计划进行计算。
目前 MAS 同时支持了实时、离线 2 种计算形式:
a. 实时计算
依托于 Kepler 或 JStorm 的计算引擎来提供支持,其中:Kepler 为蚂蚁实时计算平台,包括底层的计算引擎 Kepler 和对应的开发平台 Kepler-UI,支持 exactly once语义,并提供了 Transaction 等支持。
Kepler 为提供了 SQL 和高阶算子两种编程范式:
-
Kepler SQL: 兼容了大部分的 Streaming SQL 的语义,并支持 Window、Trigger 等 Apache Beam 的概念。SQL 由于易上手易维护的特点,是目前 Kepler 用户使用方式的主流。
-
高阶算子: 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 小时调度起来。核心原理如下图:
-
JStorm 提交运行的程序称为 Topology。
-
Topology 处理的最小的消息单位是一个 Tuple,也就是一个任意对象的数组。
-
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,或蚂蚁金融云-数据智能研发平台来支撑。
-
DataWorks:是阿里云提供的离线数据平台,在国内有非常良好的应用。
-
Hadoop/Spark:开源事实标准型的数据平台,是自建大数据平台的不二选择。
-
数据智能研发平台(彩云间):是在蚂蚁金融云中搭载的数据研发平台,已经在很多大型机构中得的应用和实践
上述的离线计算平台均提供了 MAS 所需的核心能力为:数据集成、数据开发、数据管理、数据治理,可对数据进行传输、转换、集成的操作,从不同的数据源引入数据,对数据进行转化和开发,最后将数据输送到其他数据系统。
此外在离线计算中最核心的概念为 ETL 任务:ETL 是对大数据的,清洗,加工,加载,它实现了对日志数据的格式化,验证,补充等处理,经过一系列统计分析,并加载到在线系统中。而无论上述 3 个平台怎么支撑,MAS离线分析始终围绕ETL来建设和管理,在当前这套 MAS 中通过长时间提炼出来常用,通用的计算方法和逻辑, MAS 预置了上百个任务,并按照任务功能主要分为:ODS,CDM,ADS 三层,分别是数据接入层,数据公共层,数据应用层。数据模型则采用了星型模型,能够满足快速理解,快速开发等特点。
-
任务关系:
-
任务树 Demo:
离线计算目前主要支撑了 MAS 的:设备分析、留存分析、页面分析、漏斗分析、 mPaaS 组件分析等多个模块。
3
MAS 核心竞争力与优势
-
多样性: MAS 除行为分析、活跃分布、参与度分析、漏斗分析、留存分析、设备分析、页面分析、事件分析、自定义分析提等基于用户为的数据分析外,还提供供了启动分析、Crash 分析、卡顿卡死分析、渠道分析、地域分析等多种维度的分析能力,已可满足常规 App 绝大部分的分析需求。
-
兼容性: MAS 提供支持主流的开源解决方案和基于蚂蚁金融云、阿里云解决方案的能力,提供更加符合不同资源环境的解决方案。
-
扩展性: MAS 架构经历了海量数据的压力的检验,具有极强的横向扩展能力。即使在初期是搭建最小单元,随着用户量的增长,可以即时扩容,水平提升服务能力,以满足企业对未来的规划需求。
-
适应性: MAS 的客户已包含银行、证券等金融企业,也有出行、地铁等非金融行业,同时可支持企业根据自身的特性定制特定的业务报表。
通过本节内容,希望给大家介绍一下大数据的基本技术,mPaaS MAS的相关技术,希望有机会针对全文索引,分析数仓系统,实时流计算,离线开发等等各个维度上的技术进行交流。
| 欢迎加入 mPaaS 技术交流群:
-
微信群: 点击公众号底部菜单「关于我们」-「加入我们」,添加“微信小助手”统一拉群;
-
钉钉群: 通过钉钉搜索群号“23124039”。
期待你的加入。
往期阅读
以上所述就是小编给大家介绍的《mPaaS 服务端核心组件:移动分析服务 MAS 架构解析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 单体架构与微服务架构对比,为什么采用微服务架构
- Java架构书籍:微服务架构必读书单(附微服务架构模式进阶导图)
- 「微服务架构」微服务架构中的数据一致性
- 架构演进之「微服务架构」
- 微服务架构 VS 单体架构
- 从单体架构到微服务架构
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTML Dog
Patrick Griffiths / New Riders Press / 2006-11-22 / USD 49.99
For readers who want to design Web pages that load quickly, are easy to update, accessible to all, work on all browsers and can be quickly adapted to different media, this comprehensive guide represen......一起来看看 《HTML Dog》 这本书的介绍吧!