揭秘友盟+全域数据统计分析平台技术架构演进

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 如何搭建一个高可用、高安全、高性能、高稳定的全域数据统计分析数据平台架构,成为技术人首先需要考虑的问题。

截止到2019年6月,友盟+已累计为180万移动应用和815万家网站提供10年的专业稳定数据服务;当前友盟+每天接收日志量达万亿级别,实现每秒处理2亿次事件的能力,相当于每眨眼一次,就有2亿数据被刷新了!友盟+数据存量高达50PB,相当于A4纸正反面写满数字并装满15万辆卡车;且还在持续快速增涨,如何搭建一个高可用、高安全、高性能、高稳定的友盟+全域数据统计分析数据平台架构,成为友盟+技术人首先需要考虑的问题。

把时间轴拉回到2016年初,当时友盟+的业务处于快速成长期,友盟+的数据统计分析服务都搭建在一系列的开源软件之上,业务前端是Nginx采集层,后端离线计算是的Hadoop集群,后端实时计算是用的Storm集群;而当业务快速增长,用户各类个性化统计需求层出不穷,之前开源集群上一些小bug会被放大,导致业务出现波动,稳定性无法保障,而且在使用场景上也无法根据自己业务特点来进行调整。为保障平台业务稳定性,满足用户在统计方面提出的各种新的统计需求,在2016年中旬我们制定了把友盟+全域数据统计分析平台升级计划:

友盟+新统计分析数据平台简述

友盟+数据平台技术架构主要包含数据采集&接入、数据清洗&传输、数据建模&存储、计算&分析、查询&可视化,其SaaS服务部分基本架构参考下图。
image001.jpg
image002.png

这是一个非常概要的架构图,这个架构被称为lambda+架构。尽管近几年有一些新的架构提法,比如Kappa之类,但lambda仍然是经典架构。友盟+统计分析产品无论是移动分析U-App还是网站分析U-Web,都为用户预置了功能丰富的报表,这些报表是在多年服务客户的过程中积累的需求。对于预定义报表,lambda架构进行预计算非常适合,客户只需要集成基本的SDK,就能得到这些丰富的报表。因为结果都是预计算好的,直接查询结果,报表响应很快。

那为什么叫lambda+架构呢,加的部分主要是指adhoc分析,adhoc分析对数据化运营真正进行了赋能。友盟+新的统计分析服务允许客户进行adhoc细分、漏斗、留存、分群等,并对一些常规的分析则可以设置为例行计算。但adhoc分析从时效上可以有两种服务,一种是慢分析,一种是交互式分析。前者能提供精确的全量分析,后者侧重分析探索效率,这种分级方式是我们对成本和效率的折中。

在友盟+新的统计分析平台中,最主要的能力集中于海量数据的实时计算能力和离线计算能力和交互式分析能力,以及这些能力提供出来的数据分析能力。

友盟+实时计算使用blink(flink),blink功能非常完整,有高效状态存储及checkpoint机制,支持数据幂等计算。实际上友盟+实时计算引擎进行数次更换(storm->galaxy->blink),以后还可能再换或引入别的引擎(比如私有化),所以我们开发了一套与引擎无关的实时计算框架,该框架整体上分为两层:core层和适配层。core层定义了一些基本的对象、接口、算子,以及一些通用的辅助对象和业务flow。这些基本对象、接口、业务flow与前面提到的lambda通用计算框架是一致的。适配层的目的是适配不同的计算引擎,比如blink、beam、spark streaming,这一层实现较薄,其关注点不再是业务逻辑,而是如何选择作业参数、如何配置资源、是否做作业拆分这些问题。

实时计算的挑战主要有以下这些:

· 数据倾斜问题:个别客户数据量巨大,用户数巨多,站点及应用级别的统计数据倾斜十分严重;某些统计粒度太小(比如按受访页面或来路页面),对细粒度统计进行排序甩尾的节点压力会比较大。数据倾斜的普通解法是通过数据加salt打散局部聚合再汇总的方式,但这种方式需要多加一个处理层,资源消耗较大。我们采取的方式将实时计算变为小批量,然后在map层进行local reduce(类似于hadoop map层的local combine)。这种简单处理系统性地既解决了数据倾斜的问题,又减少了聚合计算map层和reduce层传输的数据量,提升了性能。

· 巨量groupby key和状态存储:以web统计为例,需要对来路页面、受访页面级别进行pv、uv统计。个别大客户单天key的数量就超过2亿,总key的数量是百亿级。解决办法包括:短key替换长key、长尾key过滤、自动采样还原等。

· 高tps输出:以web统计为例,因为几乎所有指标都进行实时计算,高峰期每秒更新的统计结果超过300W。我们一方面通过异步buffer刷新方式牺牲一定时效性(秒级延时->分钟级延时),降低实际数据输出tps;另一方面没有使用通常的hbase等系统存储实时计算结果,而是使用自研的一套系统,该系统不但支持很高的刷写性能,而且还支持不同列的topN索引功能。

· distinct计算优化。我们的优化手段:再etl阶段打标,将count distinct转化为count,比如新增用户首次出现时增加一个新增标记;使用自适应基数估计算子(比如hyperloglog),当基数低于一定阈值时使用set,超过后自动转为基数估计数据结构,还可以进一步结合bitmap压缩算法;基于bloomfilter将count distinct转换为count。

在友盟+新的统计分析平台中,离线计算与实时计算类似,其实现方式与前面提到的lambda通用计算框架一致,单个作业即支持不同用户不同的计算需求。与实时计算的差别在于distinct计算不需要使用基数估计,更加精确。

离线计算使用阿里云MaxCompute,例行计算使用MaxCompute的SQL+UDX通过类似Apache Tez的DAG计算完成工作,对速度要求较高的adhoc分析使用MaxCompute集成的Spark进行计算。

在友盟+新的统计分析平台中交互式分析使用的是俄罗斯Yandex开源的Clickhouse。Clickhouse不是一个通用型分析数据库,但针对基于明细数据的多维分析做了深度优化,在成本和性能上表现很好,同时支持数据的准实时写入。Clickhouse除了一般多维分析,内置算子也十分丰富,同时允许用户自定义聚合函数做复杂行为分析。Clickhouse的存储设计同样遵循我们前面讨论的一些原则。Clickhouse对纯的基于Event的分析支持很好,但如果引入User表进行交叉分析则不是很方便,所以我们也在深入研究Event + User 模型,尝试为其设计开发特定的存储引擎。

新的统计分析平台中数据分析系统主要解决产品研发及运营效率问题,比如通过精准推广降低拉新、留活成本,比如基于数据(a/b test)优化产品流程减少试错成本、加快迭代速度。分析的主要数据基础就是用户对产品功能、推广活动等的行为反馈,这些数据本质上是运营样本数据。通过这些样本数据做一些假设,指导运营活动和产品设计。

广义的用户行为分析包括用户自定义分群、留存分析、漏斗分析、流失分析、路径分析等等。目的是根据用户的历史行为以及用户profile信息,了解不同人群的特征,从而差异化的进行运营,以满足更精准的营销。其中历史行为是基于时间的纵向信息,该信息往往有时效性,也即越靠近分析时间点,越有价值。但并不是说旧的历史行为就完全没有价值,很久以前发生的行为虽然单个事件价值低(且直接使用成本也比较高),但通过数据挖掘可沉淀出用户标签,将具体行为变为抽象描述。相对于用户历史行为,用户profile是横向信息,其中有一些属性是完全静态的,比如性别;另外一些会保持稳定一段时间,比如标签;还有一些是adhoc即时生成(比如临时根据某种条件筛选一个用户分组)。

用户行为分析的基本计算过程是:过滤、分组、按人建立事件行为拉链、时间序列算法(不同的分析目标有不同的时间序列算法)、汇总统计。【友盟+】对常用用户行为分析模型进行了统一的计算抽象。使用者只需要在页面配置相关参数,即可通过数据平台提供的标准计算作业完成分析。用户行为分析也支持例行、adhoc(单次)两种执行方式。其中adhoc支持离线和交互式分析两种,但需要在数据量和计算时效上折中,也即:对较短时间内数据(比如一个月)提供即席分析,而对更大时间跨度或更老的数据进行分析,使用离线的adhoc分析。离线分析使用MaxCompute SQL或者SPARK。

同时为保证友盟+新的统计分析平台的安全和合规,我们在安全方面实施了一系列部署(全站https、网络层ddos攻防演练和策略实施),来提升安全性,保障业务稳定性。

友盟+获得了ISO/IEC 27001:2013 信息安全管理体系认证、ISO/IEC 27018:2019 公有云个人信息保护管理体系认证,成为国内首批获得此高标准公有云个人信息保护证书的大数据服务商。友盟+同时拥有公安部颁发的信息系统安全三级等保证书。

为保障友盟+新的统计分析平台整体的稳定性和高效性,在效能方面,我们统一了开发语言,提高了代码的可维护性;建立了统一的采集平台,把原来多业务的多套采集服务归一化,在提供代码可维护性的同时,也把原来多个小的资源池转变为一个大的资源池,增加了业务异常增量的可控性,保证了业务的稳定性,同时推动业务无状态和容器化,当前95%的应用已完成无状态改造,并跑在容器上,通过平台的快速扩容能力,可以应对90%的客户业务量突增情况。

在稳定性方面,友盟+开始规划和部署采集服务双机房异常部署,同时参加机房容灾演练,从架构上保证业务稳定性;同时在接入层推动对IPv6的支持,保障各种网络场景下采集数据的完整性;在业务层,我们推行核心业务稳定性分策略,通过发布控制,代码强制review控制,灰度时常控制,应急策略控制等等来进一步增加业务的稳定性。

当前友盟+新的统计分析平台已支持多样性的数据采集、个性化的自定义分析、可实现精细化运营分析;同时提供可视化埋码能力,降低用户使用门槛;扩展多平台的数据采集能力,协助用户打通多域数据,完善数据化运营的闭环。

相关文章
|
4月前
|
人工智能 API 数据安全/隐私保护
Apifox 与 Apipost 的 API 文档引擎对比:底层架构、性能与可扩展性分析
深入探索市场上两大主流API工具——Apifox和Apipost的文档能力时,发现了令人惊讶的差距。这不仅仅是功能多寡的问题,更关乎开发效率与团队协作的质变。
|
18天前
|
Java API 开发工具
灵码产品演示:软件工程架构分析
本演示展示灵码对复杂软件项目的架构分析与文档生成能力。通过Qwen3模型,结合PlantUML,自动生成系统架构图、微服务时序图,并提取API接口文档,实现高效、智能的代码理解与文档输出。
105 5
|
16天前
|
存储 JSON 数据处理
ClkLog埋点与用户行为分析系统:架构升级与性能全面提升
随着越来越多企业在实际业务中使用 ClkLog,数据规模和分析需求也不断提升,部分用户日活已经超过10万,为了顺应这一趋势,ClkLog 秉持 “开放透明、持续演进”的理念,推出了迄今为止最重要的一次性能优化升级。新版本在大规模数据处理与复杂查询场景中,性能表现实现了跨越式提升。经过多轮研发与严格测试,新版本现已正式上线:在原有付费版 1.0 的基础上架构全面升级,并同步发布全新的 2.0 版本。为用户带来更强的性能与更广的适用场景。
|
6月前
|
人工智能 自然语言处理 数据可视化
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
|
3月前
|
Ubuntu 编译器 C语言
在Ubuntu22.04平台上交叉编译针对Rv1126架构的GCC13.2.0编译器的步骤。
遵循上述步骤,您应该能够在Ubuntu 22.04平台上成功交叉编译适用于RISC-V架构RV1126的GCC 13.2.0编译器,允许您为目标硬件构建应用程序和操作系统组件。
159 10
|
2月前
|
存储 前端开发 JavaScript
如何开发设备管理系统中的经验分析报表板块 ?(附架构图+流程图+代码参考)
设备管理系统(EMS)助力企业高效管理设备生命周期,涵盖采购、维护到报废全流程。本文详解经验分析报表模块设计与开发,涵盖动态看板、点检、巡检、维修、保养及库存统计功能,提供代码示例与架构设计建议,提升设备管理效率与决策水平。
|
5月前
|
机器学习/深度学习 人工智能 算法
大型多模态推理模型技术演进综述:从模块化架构到原生推理能力的综合分析
该研究系统梳理了大型多模态推理模型(LMRMs)的技术发展,从早期模块化架构到统一的语言中心框架,提出原生LMRMs(N-LMRMs)的前沿概念。论文划分三个技术演进阶段及一个前瞻性范式,深入探讨关键挑战与评估基准,为构建复杂动态环境中的稳健AI系统提供理论框架。未来方向聚焦全模态泛化、深度推理与智能体行为,推动跨模态融合与自主交互能力的发展。
293 13
大型多模态推理模型技术演进综述:从模块化架构到原生推理能力的综合分析
|
3月前
|
运维 监控 Java
初创代购选单体,千万级平台用微服务:一张表看懂架构选型红线
在跨境电商代购系统年交易额超3.2万亿元的背景下,本文对比微服务与单体架构的技术原理、适用场景及实战案例,结合性能、运维、成本等维度,为企业提供架构选型指南,助力实现高效扩展与稳定运营。
|
4月前
|
运维 监控 数据可视化
一文详解:工业软件“低代码开发平台”技术架构研究与分析
本文围绕工业软件低代码开发平台的机遇与挑战,提出基于自动化引擎的技术架构,由工具链、引擎库、模型库、组件库、工业数据网关和应用门户组成。文章分析了其在快速开发、传统系统升级中的应用模式及价值,如缩短创新周期、降低试错成本、解决资源缺乏和提升创新可复制性,为我国工业软件产业发展提供参考和支持。
|
4月前
|
负载均衡 Java API
基于 Spring Cloud 的微服务架构分析
Spring Cloud 是一个基于 Spring Boot 的微服务框架,提供全套分布式系统解决方案。它整合了 Netflix、Zookeeper 等成熟技术,通过简化配置和开发流程,支持服务发现(Eureka)、负载均衡(Ribbon)、断路器(Hystrix)、API网关(Zuul)、配置管理(Config)等功能。此外,Spring Cloud 还兼容 Nacos、Consul、Etcd 等注册中心,满足不同场景需求。其核心组件如 Feign 和 Stream,进一步增强了服务调用与消息处理能力,为开发者提供了一站式微服务开发工具包。
496 0

热门文章

最新文章