揭秘万亿级别的全域数据统计分析平台技术架构演进
友盟+数据平台技术架构主要包含数据采集&接入、数据清洗&传输、数据建模&存储、计算&分析、查询&可视化 , 其SaaS服务部分基本架构参考下图 。

文章图片

文章图片
这是一个非常概要的架构图 , 这个架构被称为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、sparkstreaming , 这一层实现较薄 , 其关注点不再是业务逻辑 , 而是如何选择作业参数、如何配置资源、是否做作业拆分这些问题 。
实时计算的挑战主要有以下这些:
数据倾斜问题:个别客户数据量巨大 , 用户数巨多 , 站点及应用级别的统计数据倾斜十分严重;某些统计粒度太小(比如按受访页面或来路页面) , 对细粒度统计进行排序甩尾的节点压力会比较大 。 数据倾斜的普通解法是通过数据加salt打散局部聚合再汇总的方式 , 但这种方式需要多加一个处理层 , 资源消耗较大 。 我们采取的方式将实时计算变为小批量 , 然后在map层进行localreduce(类似于hadoopmap层的localcombine) 。 这种简单处理系统性地既解决了数据倾斜的问题 , 又减少了聚合计算map层和reduce层传输的数据量 , 提升了性能 。
巨量groupbykey和状态存储:以web统计为例 , 需要对来路页面、受访页面级别进行pv、uv统计 。 个别大客户单天key的数量就超过2亿 , 总key的数量是百亿级 。 解决办法包括:短key替换长key、长尾key过滤、自动采样还原等 。
高tps输出:以web统计为例 , 因为几乎所有指标都进行实时计算 , 高峰期每秒更新的统计结果超过300W 。 我们一方面通过异步buffer刷新方式牺牲一定时效性(秒级延时->分钟级延时) , 降低实际数据输出tps;另一方面没有使用通常的hbase等系统存储实时计算结果 , 而是使用自研的一套系统 , 该系统不但支持很高的刷写性能 , 而且还支持不同列的topN索引功能 。
distinct计算优化 。 我们的优化手段:再etl阶段打标 , 将countdistinct转化为count , 比如新增用户首次出现时增加一个新增标记;使用自适应基数估计算子(比如hyperloglog) , 当基数低于一定阈值时使用set , 超过后自动转为基数估计数据结构 , 还可以进一步结合bitmap压缩算法;基于bloomfilter将countdistinct转换为count 。
在友盟+新的统计分析平台中 , 离线计算与实时计算类似 , 其实现方式与前面提到的lambda通用计算框架一致 , 单个作业即支持不同用户不同的计算需求 。 与实时计算的差别在于distinct计算不需要使用基数估计 , 更加精确 。
离线计算使用MaxCompute , 例行计算使用MaxCompute的SQL+UDX通过类似ApacheTez的DAG计算完成工作 , 对速度要求较高的adhoc分析使用MaxCompute集成的Spark进行计算 。
在友盟+新的统计分析平台中交互式分析使用的是俄罗斯Yandex开源的Clickhouse 。 Clickhouse不是一个通用型分析数据库 , 但针对基于明细数据的多维分析做了深度优化 , 在成本和性能上表现很好 , 同时支持数据的准实时写入 。 Clickhouse除了一般多维分析 , 内置算子也十分丰富 , 同时允许用户自定义聚合函数做复杂行为分析 。 Clickhouse的存储设计同样遵循我们前面讨论的一些原则 。 Clickhouse对纯的基于Event的分析支持很好 , 但如果引入User表进行交叉分析则不是很方便 , 所以我们也在深入研究Event+User模型 , 尝试为其设计开发特定的存储引擎 。
新的统计分析平台中数据分析系统主要解决产品研发及运营效率问题 , 比如通过精准推广降低拉新、留活成本 , 比如基于数据(a/btest)优化产品流程减少试错成本、加快迭代速度 。 分析的主要数据基础就是用户对产品功能、推广活动等的行为反馈 , 这些数据本质上是运营样本数据 。 通过这些样本数据做一些假设 , 指导运营活动和产品设计 。
广义的用户行为分析包括用户自定义分群、留存分析、漏斗分析、流失分析、路径分析等等 。 目的是根据用户的历史行为以及用户profile信息 , 了解不同人群的特征 , 从而差异化的进行运营 , 以满足更精准的营销 。 其中历史行为是基于时间的纵向信息 , 该信息往往有时效性 , 也即越靠近分析时间点 , 越有价值 。 但并不是说旧的历史行为就完全没有价值 , 很久以前发生的行为虽然单个事件价值低(且直接使用成本也比较高) , 但通过数据挖掘可沉淀出用户标签 , 将具体行为变为抽象描述 。 相对于用户历史行为 , 用户profile是横向信息 , 其中有一些属性是完全静态的 , 比如性别;另外一些会保持稳定一段时间 , 比如标签;还有一些是adhoc即时生成(比如临时根据某种条件筛选一个用户分组) 。
用户行为分析的基本计算过程是:过滤、分组、按人建立事件行为拉链、时间序列算法(不同的分析目标有不同的时间序列算法)、汇总统计 。 友盟+对常用用户行为分析模型进行了统一的计算抽象 。 使用者只需要在页面配置相关参数 , 即可通过数据平台提供的标准计算作业完成分析 。 用户行为分析也支持例行、adhoc(单次)两种执行方式 。 其中adhoc支持离线和交互式分析两种 , 但需要在数据量和计算时效上折中 , 也即:对较短时间内数据(比如一个月)提供即席分析 , 而对更大时间跨度或更老的数据进行分析 , 使用离线的adhoc分析 。 离线分析使用MaxComputeSQL或者SPARK 。
同时为保证友盟+新的统计分析平台的安全和合规 , 我们在安全方面实施了一系列部署(全站https、网络层ddos攻防演练和策略实施) , 来提升安全性 , 保障业务稳定性 。
【揭秘万亿级别的全域数据统计分析平台技术架构演进】友盟+获得了ISO/IEC27001:2013信息安全管理体系认证、ISO/IEC27018:2019公有云个人信息保护管理体系认证 , 成为国内首批获得此高标准公有云个人信息保护证书的大数据服务商 。 友盟+同时拥有公安部颁发的信息系统安全三级等保证书 。
推荐阅读
- 女生的夏日裙装look,方领连衣裙复古高级,气质满满美翻天
- 30年前的张曼玉有多美?西装白衬衫,一张懵懂不经事的高级脸
- 又一中级卖“白菜价”!上市售价16万,现跌至12.3万,谁还看思域
- 价格亲民,国内入门级复古,油耗经济省油,满油行驶800公里
- 入门级旅游一定要去的八座国内城市,你打卡过吗?
- 杨幂“广告未修图”流出,失去十级PS后,终于相信她已34岁了
- 梦幻西游:单凭攻击问鼎神威顶级宠,12个技能,属性真是太炸了!
- 牛肉这么炒,鲜嫩不柴超级下饭,让你体会一次上桌秒光盘的感觉
- 刘志刚检察长应邀列席市中级法院审委会
- 解读预算报告:2020年预计为企业新增减负超2.5万亿元
