点击「京东金融技术说」可快速关注

京东支付研发部-支付支撑研发部

「摘要」随着京东支付业务的迅猛发展,内部很多系统对业务个性化的指标监控需求日益增多,尤其是我们的运营人员,希望能实时监控我们线上的产品流量、转化率、留存率等等情况。在此背景之下我们研发了猎户监控平台。在本平台中,每天需要对千万级的埋点数据进行实时的指标统计,在生产者一端我们将收集的数据发送到JMQ(公司内部MQ产品)当中,而在消费者一端我们从JMQ中不断的拉取数据进行指标统计并存入外部存储中,本文将从以下几个方面进行介绍,目的是带领大家对猎户监控平台有个初步的认识,一起交流学习。

一、平台开发

在没有数据分析支撑的情况下,很多时候只能依靠经验来决策,但在现在庞大数据和信息的时代下,光凭经验还不够精准。猎户平台研发的目的就是助力产品运营实现数据驱动,提升产品竞争力。

二、系统架构演变及功能介绍

平台的架构经历了两版升级,主要涉及的方面:丰富埋点数据上报的客户端JS SDK,数据接收子系统解耦成前置模块与提取器模块,优化数据存储模块增加R2M(公司内部Redis产品)及异步刷盘任务,提升系统稳定性抗压性。

猎户监控平台系统架构1.0版2-1

猎户监控平台系统架构2.0版2-2

猎户监控平台最新系统功能2-3

三、SDK埋点数据上报及平台数据接收

1、客户端:目前包括Java SDK,Android/ iOS SDK,JS SDK。Java SDK方式的数据上报是通过发送JMQ消息到平台,其他都是通过Https协议上报数据。

2、基本指标:PV/UV统计的埋点数据上报,如果是需要同时统计PV和UV的只要上报一条数据即可,由数据接收服务端进行拆分。

3、用户访问路径行为埋点数据上报:涉及到多端的情况,下面单独介绍用户访问路径分析的时候具体讲。

4、平台提供公网的Https接口:需要支持jsonp及跨域访问。接收到数据之后数据校验无误的直接写入JMQ,我们将这块功能单独拆出一个前置模块,主要考虑是尽量少依赖,数据无状态,可自由扩容缩容,尽量减少系统上线对线上接收数据的影响。整体处理流程图如下:

平台接收埋点数据流程图3-1

四、平台埋点数据解析PV/UV

不断的拉取前置发出的埋点jmq数据,然后整理落库。其中有两点希望着重说明一下。

第一点:UV的幂等校验问题:当SDK埋点数据需要统计UV的时候,绕不过去的就是如何校验同一个业务同一用户一天之内是否已经统计过了,最初采用的方式估计大部分人都是这样想的,直接在Hbase中建一个表,先根据key查询,如果能查到则表示已统计否则未统计表示数据可以入库,这样的方式在数据存储上肯定没有压力,但当数据量达到一定程度的时候,对Hbase的读写压力是可想而知的,性能自然不能达标。后面又想到既然数据仅需一天内的有效,那么能否将数据存入Redis,这样自然读写性能得到提升,可是存储量上又是个大问题,太费Redis资源了。最后我们通过调研分析采用布隆过滤器原理来处理,因为本平台有个特点就是对校验准确率不是那么严苛,理论上能达到99%就能满足要求,布隆过滤器正是此方面的利器。最后我们采用Redis的BitMap数据结构加布隆过滤器原理顺利解决有限资源和性能瓶颈问题。测试效果是:100W的数据占用Redis5.4M空间,准确率达到99.9999%。

第二点:数据落库存储问题: 最初将拆分整理过的数据直接入库Hbase,可是当数据量达到一定程度的时候,此种方式性能达到瓶颈,不是说Hbase不能扛而是数据量实在太大了。后面我们升级的方案是,先写Redis(Pipeline方式),然后每分钟再定时将Redis里的热点数据刷盘到Hbase(批量方式),Redis里面的数据根据不同时间维度设置过期时间,这样Hbase的压力骤减,Redis的资源消耗也有限,性能得到大幅提升,满足目前系统业务要求。

好了,废话少说直接上图:

数据解析入口整体处理流程图4-1

五、用户访问路径分析

用户访问路径分析整体功能图5-1

1、用户行为数据采集:

客户端通过JS SDK或者Android/iOS SDK,将用户预埋点数据上报猎户监控平台,因为涉及到用户可能在同一设备通过H5页面打开原生(Android/iOS)或者通过原生打开H5页面,但H5又无法获取到设备的信息如:Mac地址、Imei等,所以此处H5通过外部JS SDK生成一个唯一ID叫EID,故需要将设备与EID在数据采集到后进行绑定。

2、每天活跃设备:

在数据获取后以天的维度将设备信息幂等单独存储。因为后面在做数据分析的时候将以设备及天的维度来处理。

3、设备与EID绑定关系:

上面数据采集的时候也讲到了,因为H5无法获取设备信息Mac地址、Imei等,所以当原生打开H5或者H5打开原生的时候,需要H5将EID或者原生将设备信息通过cookie带到下一个页面,页面收到信息之后需将自己的EID或者设备信息上报到猎户监控平台,平台收到EID和设备信息时将记录到后端DB中。用于后边用户访问路径分析时找到相应的访问记录。关系如下图:

设备绑定关系图5-2

4、用户与设备绑定关系:

如果用户是登陆态,上报数据将包含用户登录ID,此时猎户监控平台将用户与设备进行绑定存储DB,有人可能会问,如果一个用户同时在多个设备访问那将如何记录?当前采用的方式是按照最后一条关系记录。因为用户访问路径分析不按照用户ID来做区分,而是按照设备,此处记录仅用于后端运营人员根据用户ID来查询分析单个用户行为。

5、用户访问路径流程分析:

日终将根据每天的活跃用户设备信息按照用户维度逐条从DB中load出,然后按照一定规则拆分成多条链路,这也就形成了用户的访问路径,运行流程如下图:

用户访问路径分析流程图5-3

最终我们将得到如下的结果:

用户访问路径分析结果图5-4

调试数据漏斗图5-5

六、二次业务分析

SDK上报到猎户监控平台的数据,经过整理,拆分转存到大数据平台数据仓库与集市,供业务数据分析师通过HiveSQL做二次数据分析。为更加业务化的个性化的需求提供方便。

七、应对大促我们做的

猎户监控平台经历过2次大促,一次双11,一次618。在这两次考验中我们做了如下应对方案:

  • 扩容JMQ,由于单个JMQ主题分配的broker队列数是有限制的,即使无限扩容应用也不能提升数据拉取量,故将上报数据区分PV、UV并分别分散发送到多个JMQ主题上,同时每个应用单独配置消费不同的JMQ主题,这样消费端拉取数据量的瓶颈得到解决。

  • 使用线程池提升消费JMQ性能。

  • 减少R2M的访问,UV幂等校验由之前的先读取然后写入方式修改为直接写入再根据返回结果判断,建模分析数据由之前的单条写入方式改成PipeLine方式。

  • 增加R2M分片,防止单台机器TPS过高。

  • 增加布隆过滤器容量,提升准确率,hash次数调低,减少R2M的压力。

  • 限制服务器处理最大任务数,防止机器资源耗尽。限制线程池大小,调整拒绝策略为阻塞队列。

八、写在最后

虽然经过优化调整平台已经可靠稳定运行了,但距离高可靠高稳定还有距离,大促高峰时CPU负载超高,存在大量数据积压JMQ,并需要较长时间消费处理,所以后面我们的升级改造方案是:去JMQ而采用更高吞吐量的kafka,去tomcat应用而采用最新的流式计算框架Flink,减少依赖Redis。

我们希望本平台能为产品、运营、数据分析师和管理者提供实时监控、大数据分析完整解决方案,为此我们一直在路上,欢迎感兴趣的小伙伴一起沟通交流。

京东金融技术说

▼▼▼

原创·实用·技术·专业

不只一技之长

我有N技在手

你看,我写,共成长!

助力数据运营 | 京东支付-猎户数据监控平台相关推荐

  1. 游戏数据运营--3. 游戏关键数据指标

    游戏关键数据指标 转化率 激活率 定义 应用场景 参考数据 转化率漏斗 游戏的主要目的 拉新 留存 促活 付费转化 转化率 激活率 定义 手游的激活: 一般指安装好客户端后, 打开客户端的行为: ** ...

  2. 星环科技TDS 2.4.0 发布: 数据开发、数据治理、数据运营套件能力再次升级

    近日,星环科技大数据开发工具 Transwarp Data Studio 2.4.0版本重磅发布,新版本中数据开发.数据治理.数据运营三大套件能力全部升级,让数据开发更便捷.数据治理更高效.数据运营更 ...

  3. 京东城市时空数据引擎JUST亮相中国数据库技术大会

    受疫情影响,第十一届中国数据库技术大会(DTCC 2020)从原定的5月份,推迟到了8月份,再推迟到了12月份.尽管如此,依然没有减退国人对数据库技术的热情.2020年12月21日-12月23日,北京 ...

  4. 京东城市时空数据引擎JUST亮相中国数据库技术大会(附PPT链接)

    受疫情影响,第十一届中国数据库技术大会(DTCC2020)从原定的5月份,推迟到了8月份,再推迟到了12月份.尽管如此,依然没有减退国人对数据库技术的热情.2020年12月21日-12月23日,北京国 ...

  5. 对数据运营工作的思考及优化方向

    前几天听了组里大佬的年终复盘,大佬们的思路很值得学习,于是自己也按照这样的思路对自己的工作进行了一定的思考和总结.       思考的背景是希望能够提升数据运营工作的效率,准确率,提高数据质量,确保数 ...

  6. 数据运营与数据分析闲谈

    数据运营与数据分析 我们对于数据运营与数据分析这两个岗位的界线,有些模糊,其实这两个岗位有着不同的差别也有着相同点,作为数据说的第一期开头,我们先一起来看看有何区别,又有何共同点? 首先我们说说这两个 ...

  7. 如何进行CMDB数据运营?

    CMDB的建设是一个逐步完善.逐步改变的过程.在建设过程中通过数据运营的方式可以很好的辅助配置经理"监控"CMDB的状态,更好的发现问题和辅助决策.那么如何才能让CMDB的数据运营 ...

  8. 数据运营体系,该如何搭建

    很多同学搞不清楚数据运营和数据分析啥区别.一提起要"搭建数据运营体系"或者"建立数据运营机制"就懵圈: 1.这跟我做一套数据指标有什么区别? 2.为啥我做了数据 ...

  9. Python爬取京东商品评论数据

    一.前言 本文将承接笔者的上篇文章Python爬取京东商品数据,使用京东商品唯一id字段"sku"拼接url,得到真实的京东商品评论网址,进而解释数据并保存到文件中,所爬取到的数据 ...

最新文章

  1. 在Django项目中使用富文本编辑器
  2. jsonp解决跨域问题
  3. wordpress漏洞_聊聊 WordPress 5.1.1 CSRF to RCE 漏洞
  4. 【Sublime Text3】Package Control:Install Package不能使用解决方法
  5. BZOJ2062 : 素颜2(face2)
  6. mysql处理高并发,防止库存超卖
  7. google svn 服务器申请 使用
  8. Additive属性动画
  9. 中望cad2018中文版
  10. 聚焦实战,架构升级!
  11. www.android ind.com,Android
  12. gitee图床不能用了,心态崩了
  13. snipaste安装和使用_snipaste替代品 amp; linux截图解决方案-截图、贴图工具Flameshot...
  14. 3D打印gcode命令大全及解析
  15. 外卖小程序邀请入口获取推广路径
  16. 比尔盖茨的十条“金玉良言”
  17. 动态网站作业4-JSP中实现数据库的增删改查的操作
  18. SP申请业务方案编写模板
  19. idea启动项目zookeeper报错
  20. FLUENT-UDF日记-15-DEFINE_PROFILE

热门文章

  1. 百度 谷歌分页_微信无力、多闪随后、百度依旧,背后的原因原来如此
  2. 三、使用Teigha.net打开CAD(.dwg/.dxf)文件,并显示到panel界面绑定事件
  3. 久等了的QIIME 2 2020.2 更新来了
  4. 复制模仿是成功最佳的捷径?
  5. 南京邮电大学CTF题目writeup (一) 含题目地址
  6. mysql主从同步加密_教你构建MySQL主从结构,实现基于SSL加密的主从同步机制
  7. [离散数学] 关于p - q的理解。
  8. VC2008 不能将参数 从“CString”转换为“const wchar_t *” 问题
  9. django vue 前后端联调 小米商城B2C模式登录注册
  10. 我的世界java版地牢种子_我的世界12个地牢种子位置解析