大数据频道 频道

王雨舟:知乎大数据平台架构和实践优化

  【IT168 评论】又是一年SACC,又是一时秋意正浓,即便是天气欠佳,大数据平台架构技术与实践专场同样挤满了求学好问的技术人。知乎大数据平台负责人王雨舟现场分享了知乎大数据平台架构和实践优化之路。作为一个专业的知识问答社区,知乎背后的技术能力如何?用户互动频繁,活跃度节节攀高,知乎大数据平台是如何设计以支撑这一切的呢?

  据调查,截止2017年8月,知乎注册用户数破亿,全站DAU达2600万,提问量达1900万,回答量达7100万,月浏览量180亿。当大家越来越习惯在碎片化时间打开知乎阅读或评论时,我们似乎都忽略了这家企业的成长速度。

王雨舟:知乎大数据平台架构和实践优化
▲知乎数据平台负责人 王雨舟

  2010年12月,知乎网站开放,2013年,知乎向公众开放注册,注册用户迅速由40万攀升至400万,2017年1月,知乎宣布完成D轮1亿美元融资,正式迈入独角兽行列。这一切正如知乎王雨舟所说:“We are growing FASTER”!

  数据平台如何在人员相对稳定的情况下支撑公司业务快速扩张 ?

  成长快固然是件好事,但技术必须跟得上成长的速度,不然用户体验肯定要降低。王雨舟以知乎为例分享了这一痛点的解决方案。首先,知乎数据平台是公司级的数据平台,负责维护基础流量数据和数据仓库;维护算法、商业、搜索、后端服务需要的数据源;为管理层、运营、产品、数据分析师等提供数据看板和分析系统;维护数据地图、埋点管理系统、埋点配置和测试系统等产品;维护A/B实验等。

  随着业务线的扩张,快速满足新业务需求的过程必然需要处理流量数据埋点,创建数据仓库,创建数据源、指标、维度、报表以及业务看板。知乎的一大特点是数据平台用户可以自定义创建报表和仪表盘数据。过去,新增一个需求可能需要不小的开发周期,现在用户可以通过简单的图形操作即可完成,这意味着拥有了秒级查询的能力,解决了指标开发人力投入与数据 T+1 的痛点。

  知乎大数据平台架构图曝光

王雨舟:知乎大数据平台架构和实践优化

  以上是知乎大数据架构图全貌,中间很重要的一部分是数据仓库,它与实时计算和离线计算均相关。图中可以很清楚的看出数据分层部分,其星形模型有事实表和维度表,事实表采用退化维度,减少关联多表操作。

  去年,知乎也出现了MySQL数据实时查询的需求,当时知乎调研了Hive和HBase,但当两张大表join的时候,二者性能很低。最后,知乎选择将MySQL的BinLog实时打到Kafka,起一套Spark Streaming程序,实时将数据写到kudu里面,用impala实时查询Kudu。随着业务线进一步扩张,王雨舟发现当MySQL表结构改变的时候,Kudu整个数据都需要重导,知乎决定开始采用TiDB,但目前正在研究中,所以架构图中暂未公布。

  据王雨舟介绍,数据采集部分整个客户端和前端采用Protobuf格式打点,知乎对数据打点的要求还是比较严格的,目前做到了半自动的方式打点。同时,使用了业内比较受欢迎的Hybrid框架,保证JS和Native打通。客户端更关注埋点定位,内容数据由后端序列化生成下发。这个过程,王雨舟也发现了埋点数据面临的一些问题,因此,知乎正在上线埋点管理系统和埋点测试系统,帮助客户端工程师更好自测。日志接收部分,自研日志接收服务,发送到Kafka,可以自适应Kafka健康状态,保证数据不丢。

  面对业务急速扩张过程中的各种需求,知乎数据平台组通过通用灵活的系统做到了完美的支持,未来知乎还有很多很酷的项目待实现,不如一起加入吧!

1
相关文章