更猛更持久的广告投放,闲鱼程序员的年终奖全靠它。。。...

2023-11-06 04:40

本文主要是介绍更猛更持久的广告投放,闲鱼程序员的年终奖全靠它。。。...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:闲鱼技术-抚凌

业务背景

  1. 用户增长,是开源节流促成长的过程,是包含了有效用户增长、用户成长、用户变现、用户传播、防止用户流失等一整套增长流程,而非单纯数量上的增长。
  2. 在实践中,增长手段主要聚焦在如何获取用户和提升用户活跃度上。在用户获取成本不断升高的背景下,任何一种获取用户的方式都变得昂贵且效果难以评估,就好比我们都知道广告投出去有一半钱是浪费掉了,但却不知道是哪部分。
  3. 为了评估增长手段的有效性,首先需要一种能在各个渠道追踪用户行为的手段。一般会使用设备指纹技术来唯一标识用户,即通过一系列设备信息生成设备的唯一标识,用设备标识来替代用户标识作为追踪用户的手段。

问题定义

可以用于标识出该设备的设备特征或者独特的设备标识被称为设备。设备指纹因子通常包括计算机的操作系统类型,安装的各种插件,浏览器的语言设置及其时区 、设备的硬件ID,手机的IMEI,电脑的网卡Mac地址,字体设置等,通过某种Hash算法生产特征字符串来用作设备指纹。设备指纹服务有两个核心问题需要解决问题:

  1. 设备ID的有效性:无论使用单一还是多种信息来源,设备指纹的有效性取决于设备ID的有效性。存在两种可能无效情况,ID冲突和ID漂移。ID冲突指不同设备拥有了相同的ID,ID漂移指一台设备在不同环境或时间获取时获取到了不同的ID。
  2. 设备服务架构的扩展性和可靠性:不同的渠道可能会定义不同的设备ID组合作为设备指纹的来源,在多个渠道间交互时需要支持和兼容多种ID组合的查询和转化;设备服务需要广泛应用于增长手段的各个环节,服务的访问量会明显大于一般的产品链路服务,因此对可靠性也有较高要求。
    我们针对这两个核心问题,在下文中分别给出对应的问题分析和解法。

设备指纹ID

Android设备可以获取的ID
  1. IMEI——国际移动设备识别码(International Mobile Equipment Identity),即通常所说的手机序列号、手机“串号”,用于在移动电话网络中识别每一部独立的手机等移动通信设备,相当于移动电话的身份证。几乎所有的设备都可以返回这个串号,并且唯一较好。它根据不同的手机设备返回IMEI,MEID或者ESN码。
  2. IMSI——国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。当手机上装有 Sim 卡并且可用时,返回该值,不同 Sim 卡的返回值不同。
  3. MAC——可以使用手机Wifi或蓝牙的MAC地址作为设备标识。 并不是所有的设备都有Wifi和蓝牙硬件,硬件不存在时获取不到。
  4. ANDROIDID——安卓ID,在设备第一次启动的时候生成并保存,并且可能会在恢复出厂设置后重置该值。理论上是大部分是重置的。通常被认为不可信,因为它有时为null。开发文档中说明了:这个ID会改变如果进行了出厂设置。并且,如果某个Andorid手机被Root过的话,这个ID也可以被任意改变。
iOS设备可以获取的ID
  1. IDFA——Identifier For Advertising。直译就是广告id, 在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,iOS默认设置是允许追踪。用户可以在设置里重置此id的值,或限制此id的使用,故此id有可能会取不到值。iOS6及之后版本可以使用。
  2. IDFV——Identifier for Vendor,提供给APP供应商使用的ID。每个设备在所属同一个APP供应商的应用里,都有相同的值。iOS6及之后版本可以使用。
  3. UDID——Unique Device Identifier。设备的唯一设备识别符。UDID从iOS5开始被禁止使用。
  4. UUID——Universally Unique Identifier,通用唯一标识符。可以在应用启动时生成,它保证对在同一时空中的所有机器都是唯一的。但除非本地保存后获取本地址,每次调用生成的ID均不相同。
  5. MAC——同Android中的定义,iOS7开始只能获取一个固定值。
新一代的设备指纹技术

传统的设备识别手段主要依赖于单一的信息源,与此不同,新一代的设备指纹技术使用更多的信息来完成设备的识别。它通过网络收集终端设备的特征信息,并在分析与鉴别的基础上,对每一组从终端设备采集的特征信息组合赋予唯一的设备指纹ID,用以标识该终端设备。一般具有开发能力的厂商均有自己的一套生成方案,同时也有第三方的厂商提供解决方案以供使用。以下以阿里使用的UMID(唯一设备ID)为例,说明设备指纹ID在各平台上所具有的能力。

  1. iOS上的能力

    1. 卸载重装App, UMID不变
    2. 跨App,UMID不变
    3. 限制广告跟踪,(采集不到IDFA),UMID不变
    4. 还原广告标识,(IDFA变更),UMID不
    5. 恢复出厂设置,UMID不变
    6. 备份恢复不会导致两个设备UMID一致
    7. 准确识别是否越狱
    8. 准确识别越狱之后是否被Hook
  2. Android上的能力

    1. Android 6.0下无采集IMEI/MAC权限,UMID不变
    2. 修改IMEI/IMSI/MAC/aid,UMID不变
    3. Android 7.0跨APP,UMID不变
    4. 平行空间UMID不变
    5. 准确识别各种模拟器
    6. 准确识别是否Root
    7. 准确识别是否被Hook
设备指纹ID选型
  1. 比较好的设备指纹ID,需要保证尽可能少的出现ID冲突和ID漂移。并且,在权限限制、设备信息篡改,系统重装、APP重装情况下也需要保证尽可能不变化。
  2. 集团内部的设备指纹ID方案已经经受住了大量业务的考验,不仅适用于做用户行为的追踪,同时也具有一定的安全防刷能力。因此,闲鱼用户设备信息采用UMID作为唯一标识。同时对于多个数据来源(闲鱼用户历史设备登录记录,闲鱼用户历史安全设备记录,闲鱼用户设备采集记录)打通,水平扩展可以支持的IMEI,IMSI,MAC,IDFA,YunosUUID,Google广告ID等ID的查询。

架构设计


闲鱼用户设备服务架构设计

闲鱼设备服务架构设计.png | center | 747x742

  1. MySQL——创建以umid为主键的闲鱼用户设备主表。一个用户可以有多个设备,一个设备仅记录最近使用的用户。数据量较大,需要做分库分表。
  2. HiStore——用于多维查询,数据从MySQL中同步。HiStore是阿里中间件技术团队研发的数据库产品,是一款基于独特的知识网格技术的列式数据库,定位于海量数据高压缩比列式存储,是低存储成本,低维护成本,海量数据OLAP存储引擎;有效的解决了海量数据存储的成本问题,以及在百亿数据场景下支持实时高效的多维度自由组合的检索。外部开源的解决方案有Infobright等。
  3. 实时读取——分布式key/value存储系统 Tair。Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别和我们通常所说的缓存和持久化存储对应。通过tair可以定制业务所需要的缓存,也可以作为持久化存储完整存储整个闲鱼用户设备表(以Umid为key)。外部开源产品可以选用Redis。

实践场景(广告投放)

  1. OCPC/OCPA/OCPM:

    OCPC是Optimized Cost per Click的缩写,即优化点击付费,本质还是按照cpc付费;OCPA是Optimized Cost per Action的缩写,即优化行为出价,本质还是按照cpa付费;Optimized Cost per Click的缩写,即优化点击付费,本质还是按照cpc付费;Optimized Cost per Mille的缩写,即优化千次展现出价,本质还是按照cpm付费。三种出价策略除了对应的优化目标不同,本质上都是采用更科学的转化率预估机制,帮助广告主在获取更多优质流量的同时提高转化完成率。系统会在广告主出价基础上,基于多维度、实时反馈及历史积累的海量数据,并根据预估的转化率以及竞争环境智能化的动态调整出价,进而优化广告排序,帮助广告主竞得最适合的流量,并降低转化成本。
  2. 广告投放的数据流示意图(以激活为例)

广告投放的数据流示意图.png | center | 799x551

  1. 闲鱼和广告商的数据流交互图

闲鱼广告商OCPC交互图.png | center | 531x735

  1. 流程说明

    1. 广告商在监测事件同步接口(接口一)中会同步点击数据给闲鱼。同步数据包含用户的设备信息(IDFA/IMEI/OS等)、业务信息(广告计划id/广告创意 id/点击时间等)和回调信息(回调地址或回调参数)
    2. 闲鱼接收到同步数据,根据OS将设备id设为key,将回调信息作为value存储在Tair中。
    3. 闲鱼用户激活或者注册时触发设备信息采集,经过清洗后更新至闲鱼用户设备表中。同时查询是否有可以匹配的回调信息,根据点击事件和转化目标,处理回调信息后回调用户转化目标数据给广告商。
    4. 广告商收到回调数据后,优化模型,更新出价,帮助闲鱼获取更适合转化的目标人群,降低转化成本。

总结

在目前的闲鱼用户增长实践中,广告投放优化已经给闲鱼带来了巨大的收益,有效的控制了广告投放的成本,使得增长团队可以进一步扩大广告投放的渠道和范围。除了用于广告投放优化,闲鱼设备服务还支撑了deeplink,智能投放和用户生命周期等一系列增长手段的尝试。未来,闲鱼技术团队还会进一步探索技术上的可能性,驱动闲鱼用户增长业务的发展。

这篇关于更猛更持久的广告投放,闲鱼程序员的年终奖全靠它。。。...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354531

相关文章

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

【新闻】AI程序员要来了吗?阿里云官宣

内容提要 6 月 21 日,在阿里云上海 AI 峰会上,阿里云宣布推出首个AI 程序员。 据介绍,这个AI程序员具备架构师、开发工程师、测试工程师等多种岗位的技能,能一站式自主完成任务分解、代码编写、测试、问题修复、代码提交整个过程,最快分钟级即可完成应用开发,大幅提升研发效率。 近段时间以来,有关AI的实践应用突破不断,全球开发者加速研发步伐。有业内人士坦言,随着大模型性能逐渐提升,AI应

Spring 集成 RabbitMQ 与其概念,消息持久化,ACK机制

目录 RabbitMQ 概念exchange交换机机制 什么是交换机binding?Direct Exchange交换机Topic Exchange交换机Fanout Exchange交换机Header Exchange交换机RabbitMQ 的 Hello - Demo(springboot实现)RabbitMQ 的 Hello Demo(spring xml实现)RabbitMQ 在生产环境

Groovy:程序员的 DSL

什么是DSL? 领域特定语言,针对一个特定的领域,具有受限表达性的一种计算机程序语言。可以看做是一种抽象处理的方式。 具有四个元素,第一个是计算机程序设计语言,使用DSL来指挥计算机做事情,语言性(一种特定的语言),受限的表达性,并不像同通用的设计语言那样具有广泛的能力,针对一个明确的领域。 分类有哪些? 外部DSL:不同于应用系统主要使用语言的语言,通常采用自定义语法,宿主应用的代码采用

某大厂程序员吐槽:离职交接时,新人被工作量吓退,领导却污蔑我故意劝退新人,我怒晒工作短信反击证明,新人看了后也决定走人了!

一位知名大公司的程序员分享了他离职时的遭遇:在交接工作时,新进的同事因工作量过大而感到压力,但出乎意料的是,他们的领导却指责我故意吓唬新人。为了证明自己的清白,我晒出了工作短信作为反击,结果连新人也决定离开。 在任何组织里,团队文化的优劣都是决定工作效率和质量的关键。一个和谐相处的团队不仅能提升工作效率,还能使工作氛围变得轻松愉快。 然而,一旦团队内部出现权力斗争或领导偏爱小团体、

1024程序员节 技术对抗赛 算法与安全答题 标准答案

请注意每次出题答案顺序都不一样,请仔细辨别   快查看计算题、专业题答案: 4根 11,24 对称加密算法 42 6787 题中选项皆有可能 远程控制软件 6次 25002550 593 2017年6月1日 x正比于根号n增加 15瓶药 具体题目: 关于钓鱼邮件的说法,下列错误的是:(B) A:即便邮箱有提供安全保护功能,所有送达邮箱的邮件也未必安全 B:

三、MyBatis实践:提高持久层数据处理效率

三、MyBatis实践:提高持久层数据处理效率 目录 一、Mybatis简介 1.1 简介1.2 持久层框架对比1.3 快速入门(基于Mybatis3方式) 二、MyBatis基本使用 2.1 向SQL语句传参 2.1.1 mybatis日志输出配置2.1.2 #{}形式2.1.3 ${}形式 2.2 数据输入 2.2.1 Mybatis总体机制概括2.2.2 概念说明2.2.3 单个简单类型

使用MyBatis Generator自动代码生成器简化Java持久层开发

在Web开发中,数据访问层(DAO层)的编码工作往往重复且繁琐,尤其是在处理数据库表与Java对象之间的映射时。MyBatis Generator是一款强大的代码生成工具,它能自动生成DAO接口、Mapper XML文件和实体类,极大地提升了开发效率。本文将详细介绍如何在Maven项目中集成MyBatis Generator,并通过一个示例演示其配置过程。 一、POM.xml中添加MyBatis

程序员绩效管理-可行性调研

针对这个市场进行了小范围的可行性调研。因为这个项目一开始就定义为走融资上市的路子,第一步是众筹起步。          总结的结论如下:          1、痛点是真的痛。研发企业对自己团队的开发效率是心知肚明,恨铁不成钢。          2、市场上类似的软件也不少,企业自己也在开发例如工时管理、日报月报等。          3、一般采用开发平台来提高效率(这是另

深入解析Linux Bridge:原理、架构、操作与持久化配置

一、引言 在计算机网络中,桥接技术扮演着至关重要的角色,它能够实现不同网络设备之间的数据交换与共享。Linux Bridge作为Linux内核提供的一种网络功能,允许用户通过软件方式将多个网络接口桥接在一起,形成一个透明的二层网络。本文将从技术角度深入解析Linux Bridge的原理、架构以及常见的操作方式,并探讨如何实现桥接的持久化配置。 二、Linux Bridge的功能 简单来说,桥