美文网首页
行为采集 之 微信端如何做IdMapping

行为采集 之 微信端如何做IdMapping

作者: 郭彦超 | 来源:发表于2019-07-26 19:33 被阅读0次

背景

目前微信端月活已经超过11亿,借助微信生态起家的公司不计其数;易企秀作品访客日志90%是微信端贡献的,每天3-4千万的pv访问量, 如果只是通过cookieId去标记用户 显然质量不高,如何构建访客唯一标识,沉淀更多访客信息将是数据中台重点。

情景描述

一般cookieId的生命周期为1-2个月,用户端切换账号、主动清楚cookie以及微信app重新安装都会导致cookie的丢失,为了能更多的检索出访客的历史数据,这里又引入了两个新的访客标识:帆布指纹、微信OpenId

  • 微信OpenId
    微信OpenId可以打通多端,多平台的访客数据;假如一个用户在手机上访问了作品A,在pad上访问了作品B,又在手机上打开了易企秀秀推小程序,传统的cookie定位方式会认为是3个用户在操作,而在微信端进行静默授权后获取到的openId是唯一的。

  • 帆布指纹
    帆布指纹是调用用户端设备环境进行图形渲染后hash出的字符串,如果用户端设备环境不变,即便用户清楚cookie信息 下次还能通过同样的方式再次得到,这种方式可打通同一设备多公号授权的访客信息,以及cookie清除后也能快速找回,但当浏览器内核升级、app升级以及手机系统升级都可能导致帆布指纹的变动。

构建方式

IdMapping是一种建立在两种标识之间的桥梁,通过idmapping的构建可长久定位微信端访客数据;以一个例子进行描述,当用户访问一个没有开启授权功能的作品A时,首先会从作品A获取帆布指纹Id(以下简称c_i),并将c_i作为主键存储到ES的vectors索引里,同一设备再次访问开启授权功能的作品B时会获取c_i + openId,并对库里已有数据更新,每天凌晨还会通过spark程序遍历visitors库中最近一个月有行为的数据并进行聚合,将相同c_i下的openid合并,继续通过相同openid拉取所有的c_i合并至c_i_s

数据结构如下:

PUT visitors
{
  "mappings" : {
      "dynamic_templates" : [
        {
          "strings" : {
            "match_mapping_type" : "string",
            "mapping" : {
              "doc_values" : false,
              "norms" : false,
              "type" : "keyword"
            }
          }
        }
      ],
      "date_detection" : false,
      "properties" : {
        "c_i" : {
          "type" : "keyword",
          "doc_values" : false
        },
        "o_n_n" : { #微信昵称
          "type" : "keyword",
          "doc_values" : false
        },
        "o_url" : {  #微信头像
          "type" : "keyword",
          "doc_values" : false
        },
       "o_sex" : {
          "type" : "keyword",
          "doc_values" : false
        },
       
        "o_i_s" : {   #公号类型 openid 
          "type" : "nested" 
        },
       "c_i_s" : {    #最近更新时间 帆布id  按时间倒序排列取top
          "type" : "nested" 
        },
        "ip_s" : {    #最近更新时间 ip  按时间倒序排列取top
          "type" : "nested" 
        }, 
        "up_time" : {   #更新时间
          "type" : "date",
          "format" : "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
    },
    "settings" : {
      "index" : {
        "refresh_interval" : "-1",
        "translog" : {
          "flush_threshold_size" : "2024mb",
          "sync_interval" : "1200s",
          "durability" : "async"
        },
        "store" : {
          "type" : "niofs"
        },
        "unassigned" : {
          "node_left" : {
            "delayed_timeout" : "1d"
          }
        },
        "number_of_replicas" : "1",
        "codec" : "best_compression",
        "search" : {
          "slowlog" : {
            "level" : "info",
            "threshold" : {
              "fetch" : {
                "info" : "500ms"
              },
              "query" : {
                "info" : "1s"
              }
            }
          }
        },
        "number_of_shards" : "10"
      }
    }
}


此处差一张图 流程图TOO

如何获取访客历史记录

用户访问日志中依然以c_i作为标识,当要获取访客历史访问记录时,需根据当前c_i获取全量c_i_s,然后根据c_i列表去行为日志库中检索当前用户所有访问记录。
访客用户数据一年大约有10亿c_i,数据最多保留1年,up_time超出一年的数据会被从ES库中清楚,并归档到hdfs,至于10亿访客文档数据的读写优化会在下一篇文章中介绍。

相关文章

  • 行为采集 之 微信端如何做IdMapping

    背景 目前微信端月活已经超过11亿,借助微信生态起家的公司不计其数;易企秀作品访客日志90%是微信端贡献的,每天3...

  • 数据产品经理面试问题(数据中台)

    问题一:什么是用户行为数据,怎么采集用户行为数据? 用户无论在哪个客户端(iOS端、安卓端、小程序端、H5端)操作...

  • 新媒体引流技巧,微信群这样推广引流客户源源不断

    微信群如何做引流?微信群如何做推广?如何通过微信群做推广引流?微信群怎么做营销?微信群如何做精准引流?在微信营销中...

  • windows+appium+mumu

    一、背景介绍 最近在采集微信公众号,需要模拟客户端,手机端测试了一段时间了,微信封的很严,公众号主页每天的请求次数...

  • 微商培训课程、微商如何加好友?

    微信定位加好友软件、、如何做微信推广之微信大号营销推广、如何做好微信营销、如何利用微信做营销、微信营销教程 从泉立...

  • (十二)性能测试-一次完整的压测

    测试对象 本次测试对象为Java开发的用户行为采集系统,只要用户在客户端有相应的用户行为,就会触发数据采集系统收集...

  • 基于Node.js+MySQL开发的开源微信小程序B2C商城(页

    高仿网易严选的微信小程序商城(微信小程序客户端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自...

  • 数据分析工具GrowingIO

    新一代用户行为数据分析工具,通过无埋点数据采集技术获取全量的用户行为数据,支持web、iOS、Android、微信...

  • 超短线追涨杀跌方法

    小编微信:gu12626 (免费咨询诊股) 追涨杀跌是一种短线行为。如何做短线,如何做好短线,如何成为快枪手,这是...

  • 端口转发

    为方便微信公众号开发,在网上搜索了下如何做本地调试,一个技巧是采用端口转发,将微信端发的请求转到本地进行调试,大致...

网友评论

      本文标题:行为采集 之 微信端如何做IdMapping

      本文链接:https://www.haomeiwen.com/subject/pjzlrctx.html