掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

Airbnb是如何监控用户提出的大量问题的?

本文源于这样一个问题:

如今,我们如何了解到用户日益增长的新问题?

对特定某个人来说,这个问题似乎很好回答——对于每家公司来说,都是明确易答的问题。但实际上,我们发现这个问题没那么简单。

当然,我们的数据库存储有用户问题的数据,但对于上述问题,我们也没有很好的答案。我们缺乏有效的方法来总结问题的趋势,也没有能力实时监控问题。大多情况下,当我们发现趋势出现时,想要解决就已经太迟了。考虑到这种情况,我们开始设计相应的解决方案。

相关的一点背景: 从Airbnb开站以来,我们已经接待了800亿名访客,用户量增长十分迅猛。随之,我们的工程师团队一直在寻求解决之道,以应对具有挑战性的新问题。

在Airbnb的实际运营中,有很大一部分来自房东与房客们的问题要靠客服人员来处理,具体可参见之前的另一篇Emre Ozdemir所写的文章。挑战之一在于:了解我们数量巨大的表单,并找出其中的趋势或者实时探测到不希望出现的问题。我们需要一种监控方式,当特定问题频繁出现时提醒并警告我们。

我们所构建的


我们构建了一个基于web的服务,可以根据用户提交的表单来计算趋势,并可将指定时间内的主要趋势可视化。包含表单的一些不同属性,比如问题类型、浏览器版本、用户国家、标题、来源等等。有了这些数据,我们就能分析一定时间内所有表单的各项属性,并通过算法排序,以找出其峰值或趋势。实际上,我们同时运行着两种不同的算法,以便在优化的同时仍保留之前的基准,以便进行比对。

工作方式


基础架构


需要我们将其划分为一些不同的部分,首先是存储表单的数据存储模块,负责存储并在数据处理时也可以快速查询。我们使用了Elasticsearch来负责这个部分。然后,我们还需要运行负责接受新表单数据请求的web服务,这里我们使用了Node.js应用来处理新的表单。

此外,我们还运行着一个单独的任务实例,能够持续计算表单趋势。它可以负责查询表单数据的Elasticsearch实例,并将结果存储到Redis实例中。Redis中存有表单趋势结果的缓存,以便Node.js在web中进行渲染。整个前端都构建于React之上,因此想要开发丰富的UI来展示数据就非常简单了。

数据存储


我们决定按照表单创建的方式,以流数据的形式将其实时录入Elasticsearch的集群中。之后通过定期运行的批处理操作来处理这些数据,计算表单的趋势。将这些表单存储在Elasticsearch中使得扩展与执行数据组相关的聚集查询都非常简单。根据所存储数据的类型,对表单字段进行索引。

任务worker


我们的任务worker是负责查询存储数据,并及结算各个表单组的趋势分数的。我们使用了单独的实例,用web worker来执行这项任务,因为我们不希望处理的时间太长,而导致负责新表单数据请求录入的API出现延迟。之后,结果趋势数据会被发送给Redis,另一个web实例会拿取相应数据。

如何找出趋势


探测趋势是所有这些工作的核心。我们先是在Elasticsearch中运行multi-search查询,得出一定时间内的表单,所有表单附有各项所需的表单属性,然后使用这些属性来总结趋势。之后将评分模型运用于所有的时间序列,将结果归类并返回所有高于最小阈值的趋势属性。这些结果就成为了相应时间段的趋势。

评分模型的任务就是按周期进行调整,删除干扰项,让图谱曲线更加平滑,然后确定该曲线中是否存在波峰。为了对周期趋势进行平滑和调整,我们通过傅里叶变换(Fourier transform)将图谱转化为频率范围,找出频率峰值,只留接近的频率,删除其它所有。这样调整之后的曲线,就是我们的表单在某个周期之内的统计呈现。在修剪过原始图谱之后,我们就能得出现有图谱与预计数值的差异。根据最终调整完成的图谱,依据其中的一些因素,比如最大改变值与某段时间内的总表单数量,得出最终分值。

当计算出每小时各个表单字段的得分后,我们会将存储中得分较高的那些存入Redis,供前端使用。

Web UI


一旦我们计算得出的数据被存入Redis,显示起来就很快了。我们添加了相应功能,比如查看过去某段时间内的趋势,以及较长一段时间内最热门的项目。

背景故事


自从发布以来,我们的面板对快速探测问题起了很大作用,例如:我们发现了一个峰值——用户纷纷报告在搜索时看不到结果。刚开始使用的新用户通常都会遇到这类问题,因此客户人员并未太过关注。此外,由于并不是完全没有结果返回,这种问题更经常出现在微妙的边界情况下,因此工程师团队没有立刻发现这是个问题。但是,由于我们探测到了表单波峰,因此很确定有问题出现,需要修复。我们的工程师们很快修复了这个问题,过了没多久表单提交数量就出现回落,让我们确信问题已经修复。没有这个面板的话,这个问题可能会持续数日甚至数周,造成客服的高负荷以及用户的不满。

经验心得


在Airbnb,这个面板我们已经用了有半年多,还找出了一些很难发觉的问题。我们捕捉到了多个波峰,包括一些很小的bug,也包括一些可能会发展成大问题的小问题。这个表单面板并未取代现有的宕机与系统错误监控系统,而是用于解决各类问题。

事实证明,这个新的表单监控系统在我们看来,是每个大型公司都应当拥有的无价之宝。通过将影响最大的问题曝露出来,获得及时修复而减少了用户的问题。我们预计,该表单面板能够减少表单总量的3%,有时候看到一个由两人写就的编程马拉松(hackathon)项目最终为Airbnb的用户节省了大量的时间,并让一切步上正轨可真是疯狂。

infoq.gif

原文来自:Infoq

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 个人/企业涉诉查询

    通过企业关键词查询企业涉松详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

    通过企业关键词查询企业涉松详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

  • 账号黑产风险识别

    根据手机号来查询是否命中黑产风险

    根据手机号来查询是否命中黑产风险

  • IP反查域名

    IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。

    IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。

  • 人脸卫士

    结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。

    结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。

  • 全国城市空气质量

    全国城市和站点空气质量查询,污染物浓度及空气质量分指数、空气质量指数、首要污染物及空气质量级别、健康指引及建议采取的措施等。

    全国城市和站点空气质量查询,污染物浓度及空气质量分指数、空气质量指数、首要污染物及空气质量级别、健康指引及建议采取的措施等。

0512-88869195
数 据 驱 动 未 来
Data Drives The Future