干货 | 一文读懂字节跳动“埋点验证平台”(上)

技术

picture.image

埋点数据作为推荐、搜索、产品优化的基石,其数据质量的重要性不言而喻,而要保障埋点数据的质量,埋点验证则首当其冲。工欲善其事必先利其器,要做好埋点验证会面临很多技术挑战:易用性、准确性、实时性、稳定性、扩展性,如何攻克这些挑战呢,其实还是技术,这也是本文的主旨所在。

目前埋点验证已在字节内部得到广泛使用,通过一键扫码开启验证、实时上报验证、自动生成验证报告,解决了埋点数据验证难、埋点质量保障难的问题。

本文将分为上下篇推送,上篇聚焦埋点验证流程和技术架构展开分享。

picture.image

文 | 志荣

来自字节跳动数据平台开发套件团队

picture.image

埋点验证流程
  • 埋点生命周期:4+6
  • 4个角色:PM、DA、RD、QA
  • 6个节点:提出需求、设计埋点、开发埋点、测试埋点、上报埋点、分析埋点
  • 埋点验证流程:3+3+3
  • 3个角色:DA、RD、QA
  • 3个节点:设计埋点、测试埋点、验收埋点
  • 3个物料:埋点验证方案、埋点验证工具、埋点验证报告

picture.image

picture.image

技术架构

产品流程

‍ 先简单介绍一下产品,以便大家能对平台有整体认识,方便大家更加轻松地理解技术, 平台主要包括三部分:埋点验证方案、埋点验证工具、埋点验证报告, 三者相辅相成,极大的降低了用户的埋点验证成本。

picture.image

  • 附埋点验证工具图

picture.image

技术架构图

埋点验证的链路很长,可以简单概括为三个环节:埋点上报、埋点接收、埋点验证, 每个环节都有一定的复杂性,此处先介绍整体流程,让大家可以快速对全流程有所认识。其次将主要聚焦于“埋点验证”环节,此环节的重中之重是埋点验证引擎,它包括4个部分:规则生成器、规则选择器、埋点验证器和埋点推送器,通过对埋点验证引擎的详解让大家对“埋点如何验证”有更深的理解。

  • 埋点上报环节重点是丰富的SDK(客户端、服务端、JS、Chrome插件),要做到简单易用并且保证埋点实时上报。

  • 埋点接收环节重点是数据接收服务(客户端-applog、Web端-mcs、服务端-databus)、数据保存服务(消息队列),要保证服务稳定并且保证埋点不丢失。

  • 埋点验证环节重点是埋点验证引擎,要确保服务高性能并且保证埋点验证结果的准确性。

picture.image

规则生成器

规则生成器将“埋点验证方案”转换为“验证规则”。埋点验证方案是验证规则的逻辑视图,方便用户操作,降低验证规则的编写和维护成本。通过逻辑视图和物理视图两层逻辑,确保了埋点验证引擎底层不受业务变化的影响。

picture.image

埋点方案

埋点验证方案支持 2 种:

  • 按需求验证:即新建需求计划,针对某次需求验证、
  • 按元数据验证:即按元数据验证,元数据是指所有需求的并集

按元数据验证:

  • 埋点名称:video_play
  • 参数信息
  • (名称、类型、是否必填、值校验、是否是场景条件)
  • enter_from,string,必传,固定值(login),是
  • duration,integer,必传,值无限制,否
  • type,integer,必传,枚举(1,2,3),否

埋点数据:


          
{
          
    "app_id":100,
          
    "event":"click",
          
    "params":{
          
        "enter_from":"login",
          
        "duration":1,
          
        "type":3
          
    }
          
}
      

埋点规则


          
{
          
    "app_id":100,
          
    "event_name":"video_play",
          
    "logical_filter":{
          
        "enter_from":"login"
          
    },
          
    "meta":{
          
        "required_field":[
          
            "duration",
          
            "enter_from",
          
            "type"
          
        ],
          
        "scene":{
          
            "condition":"enter_from=login",
          
            "name":"登录页"
          
        },
          
        "validate_field":[
          
            "duration",
          
            "enter_from",
          
            "type"
          
        ]
          
    },
          
    "physical_validation":"{\"$schema\":\"https://json-schema.org/draft/2019-09/schema\",\"type\":\"object\",\"properties\":{\"params\":{\"type\":\"object\",\"properties\":{\"duration\":{\"type\":\"integer\"},\"enter_from\":{\"type\":\"string\",\"enum\":[\"login\"]},\"type\":{\"type\":\"integer\",\"enum\":[1,2,3]}},\"required\":[\"duration\",\"enter_from\",\"type\"]}},\"required\":[\"params\"]}",
          
    "source":"schema_scene"
          
}
      

埋点规则字段说明

  • app_id:应用 id
  • event_name:埋点名称
  • logical_filter:用于“规则选择器”
  • physical_validation:用于“埋点验证器”
  • source:区分规则来源:按需求验证、按元数据验证

规则选择器

规则选择器将依据“埋点”中的关键信息,从“验证规则池”中选择出对应的“埋点验证规则”。

  • 选择逻辑:具体数据参考“规则生成器”
  • 根据“埋点数据”中app_id和event从“验证规则池”中筛选出“匹配的规则”
  • 将“埋点数据”的parms字段和“匹配的规则”的login_filter规字段进行匹配,选择出最终的“埋点验证规则”

picture.image

埋点验证器

埋点验证器将依据“基础验证规则”以及“规则选择器”产出的“埋点验证规则”,对“埋点数据”进行验证并产出“验证结果”。

  • 基础验证规则: 埋点是否登记;埋点是否禁用;是否是debug埋点;
  • 埋点验证规则: 参数是否丢失;参数类型是否正确;参数取值是否符合预期:枚举、范围、正则;
  • 埋点验证结果: 验证结果提供双语格式,用户可自行选择中文或者英文;

picture.image

埋点推送器

埋点推送器将“埋点验证结果”推送到前端,推送的过程存在数据交互频繁、数据体积大、数据传输稳定性的要求,这里我们自建Push服务进行数据传输,保证数据实时可达。

picture.image

下篇将聚焦字节跳动“埋点验证平台”的技术挑战及展望展开分享,敬请期待!

产品介绍

火山引擎大数据研发治理套件DataLeap

一站式数据中台套件,帮助用户快速完成数据集成、开发、运维、治理、资产、安全等全套数据中台建设,帮助数据团队有效的降低工作成本和数据维护成本、挖掘数据价值、为企业决策提供数据支撑。 后台回复数字“2”了解产品。

字节跳动数据平台开发套件团队火热招人中!

后台回复“招聘”,获取岗位信息。

picture.image

点击 阅读原文

进入官网

了解DataLeap更多产品信息

picture.image

96
0
0
1
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论