在优步,实时监控和运营自动化对于保持市场健康、可靠性和提高市场效率至关重要。根据“实时”这个词,这种监视需要显示正在发生的事情现在,能够及时获得新数据,并根据数据建议适当的行动。Uber的数据平台提供自助工具,使Ops团队能够建立自己的实时监控工具,并通过构建丰富的解决方案来支持他们的区域团队。
对于这个项目,要求是提供商家级别监控,处理仍然由复杂的内部市场管理工具仍未解决的边缘案例。我们使用各种优步的实时数据平台组件来构建一个名为的工具摆渡的船夫减少市场可靠性对商家的影响。
在2020年代初推出,Charon最终充满了送货的送货和其他商家在Covid-19锁定期间关闭时非常有效。在本文中,我们采取了Charon Covid-19用例来展示优先权的数据平台如何赋予团队更快地构建和适应。
夏尔顿的动机
Charon是一个通过执行实时规则来控制商人级别需求的框架。我们最初创建Charon是因为我们注意到某些商人比其他人更受市场可靠性差的影响。在优步,我们有一些很好的内部工具用于市场平衡管理,但它们汇总了指标,并在城市或地理攻击级别上采取行动——我们希望更细化。
为了解决市场可靠性问题,我们利用优步的实时分析平台定义了一个低可靠性指标:称为“长请求”(LR)的指标。这是餐厅已经准备好,但至少10分钟内还没有成功分配给快递员的实时订单数。大多数订单几乎是瞬间分配给快递员的,而LR订单很可能永远都找不到快递员,这给餐馆和食客带来了极其糟糕的体验。
定义了LR后,我们设置了相对阈值。然后,我们建立了一个规则,如果LR计数超过相对阈值,则会自动关闭商家。通过这种方式,该地区的快递者可以利用来吸收LR订单的当前“队列”,而无需向可能无法满足的队列添加更多订单。通过这一规则,我们能够大大限制这些次优封面,并限制食物和商家可能面临的不良经验。从这个规则的权衡是,通过关闭某些商家,我们为食用者提供更少的选择,但我们几乎可以通过商家级别行动和微调阈值来忽略不计。
正如我们开始在市场的一部分中测试这一规则,Covid-19在我们地区的一些最大的市场击中了一些最大的市场。许多国家进入锁定模式,对于许多餐馆来说,食物交付是继续运行业务的唯一选择。即使他们想这样做,他们也必须遵守新的当地法规,以减缓病毒的传播。
我们必须解决的第一个问题是确保我们的平台不会在销售的餐厅和其他商家外面等待大量的快递员。我们看到,晚餐期间,餐馆可能会有几十名快递员同时拿起订单。我们要解决的第二个问题是,餐厅的工作人员必须尊重厨房内的安全距离,这意味着必须减少人员,厨房的生产能力小于以前。
由于优步的实时分析,我们能够快速增强Charon,也可以解决这些新冠肺炎相关的挑战,并使用这个框架来解决超出最初目标的问题。
影响
业务增长(商户销售、订单分配)
在过去的几个月里,Charon让我们通过防止可能无法完成的订单来改善客户体验。此外,我们利用了这一框架,使我们的业务运作适应受全球大流行病影响的快速变化的世界。防止快递员拥挤的情况降低了COVID-19传播的风险,减少了工作人员紧张的商户的订单流入,使商户在减少员工的情况下继续提供可靠和高效的服务。这对于帮助我们在第一波疫情后实现经济复苏至关重要。
covid情况处理
Charon非常成功地解决了新问题。当餐馆和其他商家开始在全球大流行期间开展业务的现实时,其中许多人不认为他们可以安全地重新打开。我们在地上的当地团队意识到快递拥挤和减少厨房能力的常见问题是我们必须解决的。
我们开始在少数市场中驾驶新的Covid-19规则,商人渴望进一步扩展。特别是大型餐馆链条看到,通过这些规则,他们将能够更快和安全地重新打开。
客户满意度
更多的商人喜欢通过为某些规则设定特定的门槛,从而在冥轮进程中拥有发言权。例如,在本文发表时,欧洲正进入第二波COVID-19封锁,一些商家已经向我们寻求帮助,重新实施我们在3月份实施的一些更严格的规定。
摆渡的船夫架构
Charon的架构在很大程度上依赖于优步的实时分析系统和数据工作流管理系统。以下是Charon项目的由来以及数据工具在各个阶段的使用。
高级数据和流程流程图
上图显示了从Charon执行操作的各种上游服务的数据生命周期。然后,动作历史记录被输入到我们的数据平台进行后期处理。
更详细地,从左到右描述上面的流程图,我们从支持订单创建和工作流编排的后端微服务开始。这些服务产生的数据通过Apache Kafka进入优步的数据基础。uworc.然后用于将此数据摄入Apache Pinot,这使得这使得Charon可用于查询。这是Charon取决于 - 如果Apache Pinot中没有此数据,那么Charon就会计算阈值并强制执行规则,这将是非常困难的。
在Charon(下游)的右侧之后,我们继续大量利用优步数据的数据。执行操作后,Charon将日志生成Apache Kafka(就像上游后端微服务)。这些通过UWORC摄取到Apache Pinot以进行实时过程监控和调试。它允许本地OPS向Neutrino Presto非常低延迟查询商家级操作®查询引擎。单独通过Marmaray摄入,Charon Actioning Logs被带入HDFS。在那里,标准presto查询引擎(比Neutrino的延迟更高,而且没有查询限制)用于做更多涉及的历史分析来微调Charon阈值。
数据源
粒状的订单级数据(当订单被商家接受,分配给快递员,交付给食客等)是由支持移动应用的上游微服务生成的。apache Kafka作为这些数据源和优步数据基础之间的桥梁。我们每天有数万亿的信息流动,这是我们实时数据的主要来源。
如果用户不知道如何发现或导航数据,那么大量数据就不是很有用。这就是为什么我们的杠杆率很高Databook是优步的内部平台,它可以显示和管理有关内部位置和特定数据集所有者的元数据,让我们能够将数据转化为知识。用户可以查找各种可用的主题及其模式,并自行决定哪些内容对他们有用。
因此,Charon能够利用现有的饮食级数据由上游服务产生。
实时数据存储-阿帕奇皮诺
我们实时平台的核心构建块是Apache黑比诺- 专为提供低延迟,实时分析的分布式,可扩展的在线分析处理(OLAP)系统,在Tberabyte-Scale数据上提供低延迟。Apache Pinot支持近实时表摄取,非常适合低延迟,每秒高疑问(QPS)工作负载的分析查询。它支持从Hadoop HDFS等批处理数据源的数据摄取,以及如下所示的Apache Kafka等流数据源。
我们使用多区域冗余运行多租户Apache Pinot群集,并提供无缝表的onboard和查询工具,使平台用户能够在Apache Pinot顶部构建应用程序,而无需担心运营或功能详细信息。
如果您对我们如何经营Apache Pinot的规模感兴趣,请阅读我们的以前的博客文章雷竞技到底好不好用.
数据工作流管理
为减少设置这些数据工作流程所需的初始工作,我们可以在优步拥有方便的自助服务工具,允许团队创建和管理这些没有多大帮助来自数据基础架构团队。
实时摄取工作流程
uWorc是开源项目的内部部署简化除其他外,允许从Apache Kafka主题中设置摄入,只需点击几下即可在Apache Pinot。在最近的更新之后,我们甚至可以通过推断数据和列类型从Apache Kafka主题自动创建Apache Pinot表。
对于Charon,我们创建了一个UWORC工作流程,可以从Apache Kafka获取订单级数据,以摄取Apache Pinot。要进一步逐步,当Charon采取行动时,我们也会将其发出到另一个Apache Kafka主题,并在Apache Pinot中提供用于过程后监控和调试目的。
输入到数据仓库
对于不需要实时数据的中期和长期复杂分析,我们使用马尔马雷- 开源通用数据摄取和分散框架和图书馆,以及风笛手-一个数据工作流管理平台,使用户能够编写,管理和执行数据工作流(数据应用程序),吸收Apache Kafka主题,我们发布Charon的行动日志到Apache Hive。这使得我们能够拥有不确定的行动数据历史留存率,并能够进行一些更复杂的分析,如通过利用历史数据进行阈值微调。
查询数据
要使Apache Pinot中的数据轻松,我们将使用Apache Pinot集成Presto,因此标准Presto SQL可用于查询具有用于转换的丰富SQL操作的数据。我们已经致力于创建轻量级,微服务,基于Presto(内部称为Neutrino)的休息部署,这增加了最小的开销与Pinot延迟以支持低查询延迟。
我们之前提到过,可靠性和LR是Charon的第一个用例。然而,当新冠肺炎袭击欧洲、中东和非洲时,我们意识到我们可以利用这一框架,以确保我们仍然可以根据新的大流行相关法规和安全措施运行。这些新规则是一个很好的、有用的例子,说明我们如何查询Apache Pinot作为这个过程的一部分。通过SQL查询这些数据的可用性使得Charon可以非常快速和容易地添加更多规则和覆盖更多用例。
如上所述,我们在第一波Covid-19之后解决的第一个问题是在峰值时刻拿起订单时的快递挤在餐馆。在某些情况下,我们观察到可能有几十名快递员从同一个餐厅同时拿起订单,这绝对是我们想要避免的情况。因此,我们定义了“拾取”度量标准,即当前在同一位置拾取了多少订单。幸运的是,Torrent跟踪了这个订单的这个特定腿的一个事件,因此我们能够使用相当简单的查询计算此度量标准,如下所示。我们使用这种指标来关闭有太多快递同时拾取订单并使每个人安全的商人。

我们利用Charon框架应对COVID-19的另一个重要方式是“准备帽”规则。我们想要解决的问题是,为了尊重厨房里的距离,很多餐厅都告诉我们不能像以前那样快速地准备订单。这意味着他们的有效生产能力降低了,我们与各个餐厅合作,了解他们的投入,考虑到人员减少,他们可以在厨房一次最多准备多少订单。这样一来,当餐厅准备的订单太多时,我们就可以关闭餐厅,这样他们就可以在接到更多订单前摆脱排队的状态。这是我们用于该规则的查询:
操作和分析
一旦我们需要执行规则所需的所有数据,我们需要组合和处理此数据,并将其与我们配置中存储的阈值进行比较。此计算发生在数据科学工作台(DSW)上,是一个内部优步工具,为数据科学家提供集装箱内容,用于用于复杂的数据处理。
然后我们执行规则计算结果(有效地使用我们的后端来关闭或重新打开商家),同时记录每个执行操作到我们的Apache Kafka主题。在某些情况下,这些日志用于产生松弛警报。
此图显示了Charon随着时间的推移所采取的动作类型的数量。您可以在3月 - 可能在3月的时间段的峰值Covid锁定的大部分采取的行动与Covid相关,后来的Charon行动主要与市场效率和可靠性相关。
未来的计划
当Charon首次启动时,我们需要在几天内解决某些问题。它建成非常快,而不会利用其他可能拥有更多固体基础设施的产品.Charon是作为一个框架构建,可以通过创建新规则轻松支持新的使用情况。Charon将继续支持OPS客户来解决实时问题商家和市场机会,
是优步数据的未来
在优步数据,我们正在构建可扩展和可靠的数据平台,使优步餐饮、优步货运、优步租赁、机器学习等多个业务单元加速交付新功能。如果你有兴趣了解优步规模的挑战和建立下一代数据平台,请查看我们的工程开.
Apache®,ApacheKafka®,Apache Pinot,ApacheHadoop®,Apache Hive,Kafka®,Pinot,Hadoop®和Hive是Apache软件基础的商标。
Presto是LF项目,LLC的注册商标。








