【阿里内部应用】基于Blink构建搜索全链路debug系统快速定位搜索问题-阿里云开发者社区

开发者社区> 阿里云实时计算Flink版> 正文

【阿里内部应用】基于Blink构建搜索全链路debug系统快速定位搜索问题

简介: 一、背景介绍 以往在处理用户投诉或者开发过程中遇到的(特定商品在淘宝搜索中搜不到,排序靠后,价格不正确,打标不准,结果不准确等)问题或线上故障时,分析定位此类问题的过程非常繁琐: 根据用户或者搜索标识提交ODPS离线任务,捞取用户的搜索日志信息; 人工构造搜索串,重新请求引擎得到搜索复现数据; 解.

案例与解决方案汇总页:
阿里云实时计算产品案例&解决方案汇总

一、背景介绍

以往在处理用户投诉或者开发过程中遇到的(特定商品在淘宝搜索中搜不到,排序靠后,价格不正确,打标不准,结果不准确等)问题或线上故障时,分析定位此类问题的过程非常繁琐:

根据用户或者搜索标识提交ODPS离线任务,捞取用户的搜索日志信息;
人工构造搜索串,重新请求引擎得到搜索复现数据;
解析复现数据,得到搜索结果列表,确认问题,分析debug trace信息,定位问题

以上调查过程存在诸多问题:

需要跑odps离线任务,消耗较多时间;
工作重复性很大,每当有类似问题出现时,都要走类似的调查流程,极大影响定位问题和解决问题的效率;
搜索实时个性化上线以后,搜索结果是千人千面的,并且相同用户在不同时刻的搜索结果也是变化的,这就导致简单通过请求的url来重现用户出问题的方法已经难以准确的复原用户在搜索时刻的搜索过程结果

这些问题极大阻碍了定位和分析搜索问题的效率和准确度,打造一个简便,准确、及时高效的debug平台势在必行!

二、解决方案

2.1 解决思路

  1. 现有搜索体系已经将每一次搜索过程中产生的请求串、个性化影响因子和和结果概要通过埋点的方式记录在TT的pvlog中,并定时输出到odps离线表。只要拿到用户请求串和影响搜索结果的因素信息,就可以通过fake请求串或者搜索接口的方式较准确的重现用户的搜索过程和结果,同时还可以根据结果概要信息拿到用户搜索的历史快照。
  2. PvLog实时产出到TT中,构建实时任务将这些信息处理筛选后输出在实时数据库中。
  3. 构建debug WEB服务,接受用户的分场景debug请求,从实时数据库中取出搜索的pvlog信息,通过重现后台实时重现用户的搜索过程和结果,最后将debug结果展示给前端用户。
  4. 通过这样的实时debug服务,重现和定位搜索问题将可以一键完成,准确性性也得到了极大的提升。

2.2 系统设计

  • 搜索重现过程

    对于个性化搜索而言,影响结果的主要因素,除了用户的请求串之外,就是算法随机因子和个性化信息。我们在搜索的SP服务上fake一个重现接口,通过sp请求传递算法随机因子和搜索用户的个性化信息,在sp服务端将这些信息传递给搜索引擎使排序结果稳定,同时将pvlog中记录下来的同一个搜索session的前序结果传递给sp进行去重处理,就可以还原出用户的真实搜索过程和结果信息
  • 实时数据处理

    基础工作集团已经做的很够很好,搜索日志数据已经实时收集到TT,集团提供的实时数据处理框架也很丰富,Galaxy,JStorm,Blink都能够提供可靠和高效的实时数据处理效率,同时实时数据库或者服务可选用的也很多,如HBase,Druid等。我们仅需要确定自己的数据处理需求和评估资源,开发实时处理作业即可将搜索的pvlog数据实时产出到数据库中,提供数据分析服务使用。
  • Debug服务实现

    搜索的工程效能团队以提升研发效率,优化工作、运营、产品流程为己任,基于mybatis+springmvc+velocity,打造了一个强大的搜索基础架构平台 SQI。SQI提供了简单的接入方式和丰富的前后端组件,在此之上打造新的debug服务变得非常简单,甚至可以通过完全界面配置化 初号机 的方式构建出一个web服务,将我们关注的重点解放在了业务逻辑实现和结果输出上。

2.3 系统架构

image | left | 747x483

  1. Debug系统采用Blink作为实时处理引擎。编写Blink任务类似写UDF SQL,开发、调试、调优方便,并且运维手段完善,对实时debug业务来讲是一个非常好的选择。Blink实时任务处理来自TT的搜索pvlog数据,可以达到秒级别的延迟。
  2. Blink任务处理后的pvlog数据直接写入HBsae,采用用户nick和rn(搜索唯一标识)作为HBase rowkey,支持nick和rn维度的实时查询。这一过程尤其注意的是,大量数据实时写入HBase,存储策略的选择直接影响debug系统实时性能。需要尽量压缩pvlog信息,避免大量读与写操作同时发生。
  3. Debug web服务承担搜索debug过程和结果展示,根据用户请求,从HBase中读取用户搜索日志,构造复现请求串,访问搜索wsearch服务、dump服务和sp服务快速进行搜索重现以及获取历史搜索快照,最后将debug结果输出前端展示。

三、成果总结

3.1 基本能力

全链路debug系统已经成功接入了淘宝主搜和推荐的实时以及在线debug场景,同时提供了诸多功能:

用户历史搜索结果查看,Debug重现的历史数据直接根据nid从dump获取;
用户的实时搜索结果重现;
查看算法分、分桶数据对比以及debug Info信息;
查看商品详情以及dump信息;
查看请求串、广告串以及debug trace信息;
查看实时pv日志。PV日志现在是有选择性的输出;
用户个人画像信息查询。用户画像与PV日志现在是有选择性的透出,在HBASE中存有完整的数据字段

Debug典型界面如下:
image

用户选择场景,输入用户昵称等信息后即可复现搜索结果。

3.2 平台扩展

  • 全链路debug系统可与多个业务系统打通合作,如与亲听对接,可以快速根据用户舆情反馈和实时监控告警确认和定位线上问题,通过快速干预,及时降低故障或者问题带来的影响;
  • 故障工作台打通,可以一键实时定位问题和故障产生的详细原因,推动快速解决问题;
  • 与阿里妈妈广告debug合作,可以快速定位广告问题;
  • 与搜索全链路冒烟打通,快速定位新版本发布的质量问题。

四、作者简介

花名:秋奇,来自搜索事业部-工程效率&技术质量-算法工程平台-实时大数据平台
13年加入阿里,主要从事电商体系实时数据研发以及实时大数据平台研发

image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

一套基于Apache Flink构建的一站式、高性能实时大数据处理平台,广泛适用于流式数据处理、离线数据处理、DataLake计算等场景。

官方博客
链接