达达埋点迁移京东子午线实践 | 京东云技术团队

京东云开发者
• 阅读 387

一、概述

1.项目价值及成果

使用集团的统一埋点采集能力和埋点平台,完成达达7条业务线共43个站点应用的埋点迁移,降低自研采集工具和平台的研发投入和机器成本,打通数据链路,创造更多的数据分析价值。具体降本增效价值如下:

1.1 数据分析价值:与京东流量数据打通,拉齐数据口径,流量串联

1)信息孤岛:快送与京东流量数据分离,库表访问成本高,也无法进行结合分析

2)数据口径:埋点规范对齐:比如广告位曝光、页面浏览等埋点上报规则,与京东的逻辑对齐,拉齐数据口径,提高准确度

3)用户信息串联:可以通过用户基础信息的串联,比如device_id,用户pin/supplier_id等,分析用户从京东入口进入的流量链路、以及进入京东流量的访问深度等等

1.2 减少迭代/维护人力成本:0.5人/年

1)天河平台迭代成本

2)流量传输链路运维成本

1.3 节省机器/中间件费用:2w+每年

1)减少2台云主机+估计2万左右/年中间件费用

2.项目节奏

达达埋点迁移京东子午线实践 | 京东云技术团队

二、方案调研选型

1.方案衡量

在初期,我们拟定了迁移方案一,但是考虑到迁移成本巨大,我们综合评估后,制定了方案二,基于迁移成本最小化等综合考虑,我们选取了方案一

方案详情 工作量
方案一 APP、小程序、PC&H5各业务线分别进行改造和迁移 需做43个站点应用的SDK层适配
方案二 1)APP进行SDK封装,其他业务线只需接入即可 2)PC&H5在SDK层适配,其他35个应用方只需接入即可 需做3个SDK层适配,其他业务线接入即可

三、项目实现

1.上下游迁移流程

达达埋点迁移京东子午线实践 | 京东云技术团队

2.迁移技术架构

在接入项目之前,我们需要考虑两点

稳定:一方面项目需要整体平稳运行,另一方面也迁移前后数据差异保持在合理的误差范围内

高效:本次迁移涉及客户端、小程序、h5等数十个项目,节约开发成本也是关键

(1)方案选择

1、直接替换:由于项目众多,再加上每个项目中点位也很多,显然我们不能直接替换业务中的埋点,工作量太大,出问题的风险也会更高

2、切面替换:在埋点上报的某个环节中统一替换,这样好处是只需要修改一次,代码侵入性小,风险也可控,最重要的是工作量大大降低了

(2)方案设计

以客户端为例,旧的埋点框架包含埋点采集、存储、上报三个过程,并且是彼此独立的,我们很容易的就可以在埋点采集到存储过程之间进行切面拦截,将原本的埋点数据进行转换,如下图

达达埋点迁移京东子午线实践 | 京东云技术团队

旧框架架构图

达达埋点迁移京东子午线实践 | 京东云技术团队

(3)方案实施

在确定具体方案后,我们开始规划具体代码实现,考虑到需要替换的项目众多(以客户端为例,有达达骑士、 达达快送、洪流、孔明等项目),每个项目都去实现一遍无疑是有资源的浪费,我们把项目按端分成Android、ios、小程序、h5, 这样原本数十个项目,简化成一套方案,四端代码,各项目只需要简单的集成即可,这样节约了大量的人力资源

3.技术亮点

1、采用切面拦截迁移方案节约人力成本

2、统一封装与多端复用将埋点规范统一

3、数仓层:从京东实时topic直接消费落库,在库表层做京东和达达的数据结构兼容,达到下游报表层“无感知迁移”,将业务报表的影响和下游迁移成本最小化

4.踩过的坑

1、ios不支持后台上报埋点

问题:骑士和商家存在app退出前台,处于后台模式状态时候上报埋点的情况,但是子午线最开始不支持长时间后台上报埋点。

解决:子午线添加配置,支持不限时支持后台上报埋点功能。

2、ios网络问题

问题:首次安装app,在用户没有同意网络权限的情况下,子午线sdk会上报dau埋点,上报失败后重试3次再次失败触发2分钟限制,2分钟内不会在上报埋点。

解决:子午线单独提供无2分钟限制的包。

3、APP上报策略问题

问题:子午线默认上报策略为15s10条,导致部分用户没有触发上报条件退出app后无法上报已有埋点情况。

解决:子午线更新配置为2s2条。

4、uid为空导致埋点不落表

问题:新用户在未同意隐私协议前,不会获取用户的设备信息,导致appUniqueID传空,不会落入子午线离线表。

解决:在新用户在未同意隐私协议前,随机生成一段字符串并加密,作为设备id传给子午线,保证所有埋点都能落表。

5、小程序上报机制问题

问题:小程序达达sdk批量上报,子午线sdk是单条上报,会产生数据差异

解决:子午线sdk已支持批量上报

6、H5埋点量级过大时被丢弃

问题:洪流应用中,session_id大于10000次后数据会被子午线离线表丢弃

解决:同城数仓直接从实时topic消费数据,落离线表,不加session_id数量限制

作者:京东零售 周慧娴

来源:京东云开发者社区 转载请注明来源

点赞
收藏
评论区
推荐文章
如何让Java编译器帮你写代码
本文结合京东监控埋点场景,对解决样板代码的技术选型方案进行分析,给出最终解决方案后,结合理论和实践进一步展开。通过关注文中的技术分析过程和技术场景,读者可收获一种样板代码思想过程和解决思路,并对Java编译器底层有初步了解。
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。,仅限7天$20
Easter79 Easter79
3年前
Taro 牵手腾讯有数,助力小程序数据化运营
“ Taro引入了腾讯有数的微信小程序无痕埋点能力,为Taro的开发者提供真·零开发的8大无痕埋点能力以及自定义埋点能力,包含小程序启动、显示、隐藏、页面浏览、页面离开、分享、下拉刷新、上拉触底等八大自动化埋点能力以及搜索、商品归因等定制化埋点,以及经营分析、直播分析、导购分析等能力,让你的小程序可以基于微信生态,串联全场景多触点,
Wesley13 Wesley13
3年前
APP可视化埋点原理大揭秘
一、背景运营者能够对用户行为进行分析的前提,是对大量数据的掌握。在以往,这个数据通常是由开发者在控件点击、页面等事件中,一行行地编写埋点代码来完成数据收集的。然而传统的操作模式每当升级改版时,开发和测试人员就需要重复不断对代码进行更新,整个流程耗时长,无法满足业务的需求。为帮助开发者解决这一痛点,个推应用统计“个数”推出“可视化埋点”这一技术
Wesley13 Wesley13
3年前
CSS 埋点统计
CSS埋点统计当一个网站或者App的规模达到一定程度,需要分析用户在App或者网站的相应操作,则需要埋点统计用户行为,这个不用多说,具体实现有JS脚本写好埋点事件并调接口,今天get到一种新的埋点统计方式保证耳目一新。下面代码简单示范一下。//index.html<!DOCTYPE
京东云开发者 京东云开发者
10个月前
大促削峰实战:评价QPS降低85%的背后逻辑
一、背景京东APP商品详情页展示的评价数据通过单独请求评价接口获取,与商详模块流量近乎1:1,需要共同应对秒杀等海量流量的冲击,存在突发流量风险。经过对用户操作行为和评价埋点信息分析,评价调用与商详流量解耦可行,预期收益显著。为此,评价与商详模块研发人员组
一文帮你搞定H5、小程序、Taro长列表曝光埋点 | 京东云技术团队
对于各种类型的埋点来说,曝光埋点往往最为复杂、需要用到的技术也最全面、如果实现方式不合理可能造成的影响也最大,因此本文将重点介绍曝光埋点尤其是长列表(或滚动视图)内元素曝光埋点的实现思路及避坑技巧
京东科技埋点数据治理和平台建设实践 | 京东云技术团队
导读本文核心内容聚焦为什么要埋点治理、埋点治理的方法论和实践、奇点一站式埋点管理平台的建设和创新功能。读者可以从全局角度深入了解埋点、埋点治理的整体思路和实践方法,落地的埋点工具和创新功能都有较高的实用参考价值。遵循埋点治理的方法论,本文作者团队已在实践中
浅谈埋点及其质量保障 | 京东云技术团队
1、埋点是什么埋点又称为事件追踪(EventTracking),指的是针对用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。用大白话说:就是通过技术手段“监听”用户在APP、网站内的行为。2、埋点的作用如果我们想要收集用户行为数据,就可以通过埋点来
埋点日志最终解决方案——Golang+Gin+Sarama VS Java+SpringWebFlux+ReactorKafka
埋点日志最终解决方案——GolangGinSaramaVSJavaSpringWebFluxReactorKafka之前我就写过几篇OpenRestyluakafkaclient将埋点数据写入Kafka的文章,如下:以上一步一个坑,有些是自己能力