京东小程序数据中心架构设计与最佳实践( 二 )


文章插图
四、京东小程序数据中心技术架构图

京东小程序数据中心架构设计与最佳实践

文章插图
对于整体的架构设计 , 其实在我看来,数据的分析,主要是解决三个问题,第一个要解决的是数据如何上报的问题 , 第二个是解决数据如何存储的问题,第三个才是解决数据如何分析的问题 。
1. 京东小程序数据中心的数据上报主要包括三个途径,主要包括客户端埋点,服务端埋点或者其他外部的数据源 , 客户端埋点主要利用的是子午线,服务端埋点主要是我们服务之间采集数据,服务之间消费和同步 。
2. 数据存到哪里去 , 这个需要基于我们业务上对这些数据的实时性要求,判断是实时还是离线,进而采用不同的数据源进行存储,数据指标是要秒级的?分钟级的?还是T+1类型的,实时性要求不同,那么存储的数据源自然也就不同 。
3. 数据如何分析,实际上就是我们的业务逻辑 , 在设计时也需要充分考虑数据模型的复用性和可拓展性 。
小程序数据中心对于来自子午线客户端埋点数据,以离线的方式构建小程序自己的业务数仓,一层一层地进行数据的降噪,清洗和计算 , 将聚合好的维度数据再推送到关系型数据库,方便业务快速接入 。对于来自自建通道的实时数据以及外部系统的埋点数据,通过统一上报服务将数据上报到消息队列,进行流量数据的异步处理和消峰 , 采用专门的消费者服务对上报数据进行消费落库,存储到ES和HBase数据库,便于平台进行多维度的明细或者汇总数据查询;同时,也会基于Flink对消息队列中的数据进行流式实时计算,实现异常波动流量的告警和分析 。
五、他山之石可以攻玉 , 
借助集团数据工具打造小程序业务数仓
痛点问题
1. 京东小程序的数据来源多样化,数据量级庞大,如何立足业务数据,发挥数据价值,帮助商家实现精细化的运营?
2. 如何复用主站已有的数据模型和能力 , 让更多的小程序商家参与到京东主站的流量场 , 让数据驱动商家精准营销?
3. 业务指标纷繁复杂,如何沉淀和抽离通用数据模型,减少重复工作?
如何解决
基于集团BDP平台,自上而下构建京东小程序的业务数仓 , 借助BDP平台丰富的数据产品工具,多维度地构建小程序的数据能力 。离线计算+实时计算相结合,小程序业务数据+集团模型数据相结合 。
  • 数据分类化,将小程序流量进行主题划分,拆分为点击、浏览、曝光、订单等大维度的主题模型,方便数据定位,增加业务理解;
  • 数据分层化,同一个流量主题下 , 进一步按照ODS->DWD->DWS->ADS的层级结构进行分层,方便追踪数据血缘,减少重复数据模型的开发;
  • 数据多元化,下游系统可从小程序数据仓库拉取符合业务需要的领域数据 , 比如数纺,搜推广等系统,利用下游系统成熟稳定的数据能力,为商家营销充分赋能;

京东小程序数据中心架构设计与最佳实践

文章插图

京东小程序数据中心架构设计与最佳实践

文章插图

京东小程序数据中心架构设计与最佳实践

文章插图
在京东小程序的业务数仓搭建过程中,主要还是应用了集团BDP大数据平台提供的丰富的产品工具和通用能力 。
几种典型使用案例
  • 离线hive表数据同步到jed等关系型业务库,使用buffalo任务中的出库算子;
  • 业务产生的实时MQ数据同步到hive数仓,使用DTS,实时数据传输任务,可以把业务数据同步到数仓;
  • 我们需要在数仓中构建业务维表,比如构建小程序基本信息的维表,业务数据需要同步到hive表,可以采用数据直通车DataBus,在表记录的生成上,可以根据业务的需要,采用全量表,增量表,快照表,拉链表或者流水表的不同的记录生成方式 。
京东小程序客户端埋点统一上报的子午线,需要从最原始的gdm层底表提取小程序自己的业务数据,原始底表数据量级非常大,不可能每次直接对原始底表查询,这样的话耗费计算资源,效率较低 。所以,我们尽量提高底层数据模型的复用度,对数据进行分类化和分层化处理 。
所谓分类化,就是将小程序流量进行主题划分,拆分为点击、浏览、曝光、订单等大维度的主题模型,方便数据定位,增加业务理解;


推荐阅读