雪球数据中台建设

avatar
@雪球财经

背景介绍

雪球是中国最大的股票投资社区,其使命是“连接投资的一切”,愿景是成为“全球最大的投资交流交易平台”。雪球的核心目标是为股票、基金投资者提供优质的信息获取、投资交流和行情交易体验。

在雪球内部,为了达到"连接投资的一切"专门成立了大数据部门,背负起建设雪球数据中台的责任以及"连接雪球数据的一切"的使命,有来自各部门的数据,来自各APP的数据,来自各种微服务的数据,如何能快速的将数据进行整合治理,快速达成业务需要的数据报表,以完成数据分析乃至数据决策,成为掣肘雪球各业务发展的一个突出问题,如何解决呢?

数据中台AIBO—连接数据的一切

想要快速集成各种数据,必须做到存储和计算的分离,想要数据分析和决策,必须提供便捷的数据分析工具,想要各业务线集成打通,必须拥有权限和数据目录管理,想要快速响应业务,必须提供数据API, 做好服务快速构建和治理,基于对诸多问题的拆解,我们发现想要解决所有数据问题,就必须拥有一个雪球专属的数据中台,没有任何一家企业能够通过购买通用的服务来解决所有业务问题,数据中台也并非万能,需要与业务紧密结合,快速提供业务对数据的获取能力,整合分析能力,报表能力等。

既然目标确定,我们可以看一下建设一个企业的数据中台,必须要有哪些能力(目前并没有一个统一的认知,融合雪球的现状:

  • 数据集成:需要能快速的对各种结构化以及非结构化的数据做集成

  • 数据目录:需要理清公司重要的数据资产,建设统一的数据目录

  • 数据标签和打通: 需要打通各业务的数据,同时梳理出数据标签(如用户标签,股票标签,帖子标签,广告标签等)

  • 数据分析:对业务价值的探索和分析,离不开高效的数据分析工具支持,需要提供统一且灵活的数据分析工具

  • 数据权限: 需要对各类数据做好权限管理,防止数据泄露的同时做好数据分享和协作

  • 数据服务:需要对业务提供数据支撑,快速开发数据服务,以微服务思想驱动业务, 同时需要做好服务治理,用数据分析来更新迭代数据服务(不用的数据服务下线,核心的数据服务保证高可用和稳定性)

从数据流和数据应用角度来看,整个AIBO架构如下: 

图片

数据集成

雪球数据中台,采用的是存储与计算分离的架构设计,数据集成是对数据做ETL和整合,集成后存储到hive数据仓库里,主要有来自如下几方面的数据:

  • Kafka topic数据: 通过flume同步落地到hive,flume集群添加配置即可,后续也会完善成标准的数据接入接口,以配置驱动完成消息队列数据的快速接入

  • mysql业务数据库数据: 通过sqoop导表到hive,AIBO开发了专门的接口,来快速做到数据库表的集合,标准化的完成mysql数据的整合

  • 数据ETL工作: 需要对底层数据源,做一定的ETL工作,以满足业务需求,此点是灵活多变,根据业务需要来完成的,通过SQL,python,shell等方式来完成,视具体情况而定

  • 数据依赖调度: 采用DolphinScheduler,图形化的处理数据依赖

数据目录--User+Event

数据目录,也即数据管理中心,需要集成尽可能多的有价值的数据资产,也需要提供各种数据的数据定义, 雪球是一款ToC的产品,面向大众用户,所以很自然的,AIBO的底层数据均是和用户相关,描述谁,在什么时间,做了什么事,这件事有什么特殊的属性等,所以抽象来看就是 User+Event的数据模型,数据目录也就是常用的用户分析系统里的事件定义。

图片

数据标签和打通--USER+EVENT+Item

Item即为数据物料,数据标签的意义,在一个用户完成某个事件时,我们知道这个用户是谁,就自然想知道这个用户有哪些标签属性,如年龄,性别,粉丝数,关注大V数,收藏帖子数,发帖频次等从各业务线来描述的用户数据标签,再拓展一下, 当某个人在雪球看了某个股票行情,我们也可能想知道这个人在看股票行情时,都喜欢看哪一类股票的行情,由此也需要股票的标签,如股票所属行业,股票市盈率,市净率,将利率等信息, 同样用户在雪球点击某个广告时,我们也想要知道用户爱点哪类的广告,从而需要知道广告的物料信息,从技术上来讲,也很好理解,就是Event的某个属性里,存在一个Item物料数据的ID外键,我们可以通过此外键来打通物料数据,如event里的uid可以打通user_info用户标签,adid可以打通广告标签,stock_code打通股票标签等。

Item的标签可以是任意物料信息,如电商里的订单信息,产品信息,物流信息等,在雪球里也有很多各业务的物料信息以及全雪球用户标签数据。

Item的标签是可以灵活添加和维护的,通过数据集成和自定义ETL来完成,通过DolphinScheduler完成依赖管理。

图片

数据分析—通用模型分析能力

成功的数据应用,离不开数据分析和探索,从而用数据来影响业务,打造数据应用的闭环,数据分析工具是数据中台中重要的一环,分析数据,创造价值不可或缺的一步,需要提供足够便利的数据分析,AIBO目前提供以下数据分析能力:

  • 事件分析

  • 留存分析

  • 漏斗分析

  • 自定义数据看板

  • 分群对比

  • ABTest

事件分析

用户在APP/网页等平台上产生的行为可称之为事件。如启动APP、注册、登陆、浏览帖子、入金等都是事件的一种。事件分析可实现指定细分维度下(应用版本、设备品牌、操作系统等)的指标(APP启动用户数、注册用户数、入金用户数等)计算与展示,帮助快速、高效解决日常运营分析中遇到的问题。

图片

功能:支持自定义维度,自定义指标,支持分群对比功能,支持更多图表展示,以及数据download。

留存分析

留存分析是一种用来分析用户参与情况/活跃程度的分析模型,考察进行初始行为后的用户中,有多少人会进行后续行为。这是衡量产品对用户价值高低的重要指标。

图片

功能: 可自定义初始行为和后续行为,可按初始行为或后续行为的任意维度进行维度分组剖析, 可做用户分群对比, 可多种图表查看数据。

漏斗分析

漏斗模型主要用于分析一个多步骤过程中每一步的转化与流失情况。可以用于验证用户是否按照产品设计的路径达成最终目的,也可来分析用户完成核心转化步骤的情况。通过分析每一步之间的转化与流失情况,发现潜在问题,定位流失用户。

图片

功能: 自由定义漏斗事件步骤,自由为每步事件添加过滤条件,分群对比,多图表展示漏斗。

自定义数据看板

根据自身对数据的跟踪需要将分析过程中保存的指标和图表添加到看板中,构成自定义看板,并可通过分享看板给指定人员,方便日常数据监控

图片

功能: 在事件分析,留存,漏斗等分析页面,可快速保存图表,并自由定义数据看板。

分群对比

AIBO的所有灵活模型,均支持用户分群对比,用户分群可以通过任意事件,或者任意模型的剖析过滤条件来进行保存,同时也支持静态的基于文件上传的用户分群配置,也支持动态的(条件定制,随着时间的改变分群的用户集也随之改变)。

图片

功能: 快速的对比两个或多个用户分群,在各个模型上的数据表现情况。

ABTest

辅助产品进行升级,支持AB实验的定制,和雪球大前端团队共同协作,在底层APP上进行ABTest实验分流的支持,业务方只需要定义ABTest的多个页面版本,以及实验的目标用户分群(可通过已配置过的分群来做筛选,也可以自由定义条件),开启实验后,会提供T+1和T+0的数据分析统计,以快速的进行产品改版的优胜劣态。

图片

功能: ABTest为产品升级提供支持,自定义人群分流,数据效果实时统计,自由定义核心指标以及辅助指标。

数据服务

在技术架构上,以微服务的方式,为业务线提供各种数据支持,通过已有数据模型以及模型的扩展,进行数据组合,可共享数据配置和数据目录元数据,通用的数据服务集成到AIBO通用的数据服务接口里,业务定制的采用微服务进行开发和管理,根据业务需要进行灵活调整。

总结与展望

雪球在数据中台的建设上,采用存储和计算查询分离的架构设计,以微服务方式进行数据API和数据分析模型的扩展,对通用的业务需求进行抽象整合,以保证业务顺利进行,形成数据整合+数据目录配置+数据分析+数据应用的闭环迭代,后续会逐步补充数据中台AIBO的能力,完善数据安全的更细粒度支持,完善数据血缘关系(可在数据目录里看到所有etl过程),相信在不断的业务迭代下,雪球数据中台能越来越完善,越来越强大,通过数据驱动业务,完成业务升华。

对技术感兴趣的同事,可以关注雪球工程师团队公众号,后续还会带来各模块的技术和设计分享,敬请期待。