移动互联网接入使得传统的PC端数据采集已经不能满足当前的业务需求,采集,移动大数据的处理和分析也很困难。已成为所有企业无法回避的问题。与终端相对统一的PC时代相比,移动终端的多样性、流量、网络、功能等诸多因素限制了移动大数据的采集。如何在不影响用户体验的情况下做到精准快速收款?【WOT2015“互联网+”时代大数据技术峰会】特邀讲师阿里巴巴无线事业部基础设施线总监陈武分享了手机淘宝每天处理数亿UV的数据采集方式。陈武:花名葵,阿里巴巴集团无线事业部基础设施线技术总监。就职于腾讯91无线。2013年加入阿里,一直从事业务拓展工作。在了解到业务线对埋点的痛点后,他带领团队参与了手机淘宝埋点监控系统的建设。以下为采访实录:问:手机淘宝是如何收集数据的?陈武:目前手机淘宝通过客户端埋点的方式采集数据。常见的埋点方案有两种:一种是页面埋点,一般在架构层面进行。另一种是一些控件点击和自定义事件的埋点,一般都是人工开发的。Q:移动端大数据采集与PC端大数据采集有什么区别?陈武:首先从设备来看,中国有7亿移动互联网用户,并且一直保持着高速增长。移动购物的日志量基本上每年都在翻倍增长。在DT时代的进程中,移动设备逐渐成为主流。作为数据生产者,移动互联网的巨大流量对服务器的连接和计算能力提出了极大的挑战。此外,移动设备离用户更近,移动数据呈现更多的用户属性:比如用户位置信息、用户性别、用户语音信息、用户健康状况,甚至用户情绪都在移动终端上展现。可以数字化,可见移动数据的隐私性远高于PC数据。用户对数据安全的考虑,要求我们在移动数据安全上比PC数据更加严格。移动设备比PC更加多样化。中国的手机从几百元到几千元不等,型号不一。除了中国特色的假冒手机市场,在方案设计中还需要考虑不同的机型。电量、内存、cpu使用率等性能指标。二是移动互联网的网络特点。PC端的数据采集流量基本不需要考虑,但是手机端的流量成本会直接影响到用户成本,这也是需要考虑的。PC网络相对稳定,而移动互联网要应对强弱网络频繁切换。如何保证在弱网下的传输也是我们需要考虑的一点。三是互动层面。移动端的交互逻辑要比PC端复杂的多。手机屏幕本身就比较小,导致它的层次感比较深。手淘非常重视整个交易的链路,链路上下文参数的透传要比PC端复杂的多。比如在手机淘宝的详情页面,我们需要记录这些页面的流量图,埋点的时候一定要跟踪。这些流量的来源作为不同业务方的结算依据。还有技术框架的问题。整个移动端的框架要比web框架复杂的多。web端有一些标准的Html标签,通过spm.webx框架很容易实现自动嵌入。但是手机端框架没有专门的标准语义,还有ReactiveNative框架,webApp框架,Native和H5嵌套,C和OC,C和Java混合语言,各种原生到双十一的灵活切换H5的降级方案给手机淘宝的埋点增加了很多复杂度。总之,如何在数据量、数据质量、性能、成功率和实时性之间进行权衡,是移动数据采集最难解决的问题。Q:手机淘宝如何解决手机数据采集难的问题?陈武:首先,对于性能问题,我们埋点的sdk会有自己的监控,会记录关键代码的性能指标和到达率指标。在服务端,我们会按版本建立监控基线,保证我们的sdk本身的性能不断优化。还有很多具体的优化方法:比如我们实现了配置增量更新方案来节省流量和提高下行到达率,通过聚合埋点来提升计算性能,根据事件的优先级实现不同的上传策略来保证实时负责,通过动态窗口调整算法,保证最佳的带宽利用率。其次,在交易链路方面,我们会使用阿里的SPM(超级仓位模型)和TPK(透明密钥)标志,在框架层透传。***,针对混合编程问题,我们在sdk中提供了C层,JS层的埋点桥,保证了下游业务方可以方便的调用我们的埋点代码。Q:如何存储采集到的数据?陈武:这涉及到后端架构。我们顶层有一个adashserver,负责数据流的接收和解码,解码后,根据消费业务场景拆分成不同的数据流。第二层是阿里的TT流,负责消费adash数据。TT的另一端连接到我们的实时计算星系系统和ODPS云梯系统进行离线存储,最后将数据发送到我们的云服务器。负责数据产品的业务系统可以从Galaxy生成实时监控报表,从ODPS生成离线监控报表。Q:数据异常如何处理?陈武:我们会评估异常数据的处理成本。如果是低优先级的数据,我们可能会直接丢弃。如果是高优先级的数据(比如财报数据),我们会在之后清洗数据。从前面的案例来看,我们通常会遇到重复数据和脏数据两种情况,比如重复数据的清洗。简单的说,我们认为一部手机不会在同一毫秒内产生两条相同的日志,所以按照这个算法根据设备ID和时间在ODPS中投射出问题的计时表,对数据库进行一轮去重。这种清洁通常在计算上很昂贵。在客户端还有另一种清洗。比如明细业务里面有个自定义管理。后来版本升级把页面名从shop改成了sp,然后统计PV就会出错。这时候我们可以发送Configure来修正嵌入式sdk中的数据,在源头修正错误日志。这种情况在服务器端节省了大量的计算成本,但是必须考虑配置到达率和时效性。在日常工作中,我们也会建立一些中间表来积累清理规则。对于符合这些表的数据,我们可以选择清理或者保留。Q:如何保证SDK性能和数据量的平衡?陈武:首先是数据[分类],我们会把淘宝的数据按照业务划分,业绩数据,业务数据,然后给这些数据设置优先级,比如UV,GMV,实时计算数据都有很高的priority级别,我们会按照优先级来传输数据,我们可以使用低级别的线程来处理低优先级的数据。另一个是【抽样】。每天都有数百亿个点埋在我们的网络性能中。这些积分不涉及业务结算,仅用于监控入网成功率。我们可以通过配置samplingratecontrolled来监控样本采样就可以了。***您可以使用[聚合]来提高性能。以统计点为例,我们只需要将一段时间内相同点的值累加起来,最后将一段时间内的多个点聚合成一个点进行上报,就可以非常快速的控制好日志埋葬频率。聚合的方式提高了性能,但是如果聚合过程异常退出,可能会丢失一些数据,所以我们只对低优先级的点进行聚合处理。Q:双十一,你最担心的是什么?陈武:双十一的时候流量会暴增,今年还会有一个大型的party。可以预见,今年的客流量将出现极度激增。所以,在容灾方面,我比较担心。流量上去服务器会不会炸掉,网卡会不会炸掉?数据量爆炸时,下游数据输出会延迟吗?我们通常模拟大流量情况,做全链路压测,梳理各节点性能瓶颈,为双十一保驾护航。Q:手机淘宝在容灾方面是怎么做的?陈武:容灾需要客户端和服务端共同完成。客户端容灾无非就是控制数据量和请求数,但这两者是比较矛盾的。如果请求次数减少,则意味着用户只能增加日志上传时间。这样做的好处是服务端的qps降低了,但是客户端积累的日志变大了,服务端解码也变大了。输出时间变长,需要根据下游服务器的计算能力合理权衡上传间隔和数据量。我们会在双十一期间为客户端制定多级降级方案,根据服务器水位推送不同级别的配置,保证客户端高位数据能够完整上传,低级数据尽量上传。另外对于服务器端的容灾,我们的核心业务是异地多活。发生故障时,可以快速迁移流量,保证业务持续可用。在业务层,集群按业务隔离。淘宝、天猫、聚划算双十一相关的业务系统单独集群,其他业务放在其他集群。重要数据将存储在多个副本中。如果采集服务器丢失了数据,它可以根据一些日志流来恢复部分数据。***还有系统压力测量保证。我们在双11之前做了多次全链路的流量放大和压力测试,另外下游服务也会有各种降级方案。11月,深圳WOT,说说大数据主办的高端技术峰会【WOT2015“互联网+”时代大数据技术峰会】将于11月28-29日在深圳隆重揭幕。42位行业重量级嘉宾齐聚。分析大数据技术的点睛之笔应用。财富大放送,主办方将邀请更多讲师来到“WOT讲师访谈室”,深度剖析技术干货。WOT2015更多专访WOT讲师张希萌:什么能拯救你这个厌倦了污水处理的数据分析师》WOT讲师任华为:大数据技术让O2O基础信息更“靠谱”Google神秘的数据中心管理系统如何搬家首页WOT讲师杨德胜:程序员创业需要什么WOT讲师钱成军:大数据给百度测试团队发展带来新探索WOT讲师刘鹏:大数据应该指导机器而不是人的决策
