写点什么

Uber Freight 近实时分析架构,晚点取消的比例下降了 0.4%

作者:Claudio Masolo

  • 2022-11-26
    北京
  • 本文字数:1048 字

    阅读完需:约 3 分钟

Uber Freight近实时分析架构,晚点取消的比例下降了0.4%

Uber Freight是 Uber 的一个平台,致力于为托运人和承运人提供连接服务。为托运人提供可靠的服务对 Uber Freight 来说至关重要,这也就是为什么他们要开发承运人记分卡(Carrier Scorecard),其中包含了准时取货/送货、跟踪自动化和晚点取消等指标。关键在于他们要在 Carrier App 上近乎实时地显示这些信息,而且提供这种服务的架构必须足够快,快到可以满足这些指标需求。

 

这个架构的要求是数据新鲜度、延迟、可靠性和准确性。一旦运单完成或退回,将以较低的延迟更新绩效分数。每个承运人都可以在低延迟的情况下在应用中查看自己的绩效分数。数据的处理和服务具有较高的可靠性,如果发生了故障,整个系统可以进行优雅的恢复。性能指标必须得到精确的计算。

 

在设计和实现最终的架构之前,他们考虑了一些潜在的解决方案,特别是在聚合指标方面。这些潜在的解决方案包括使用MySQL进行动态聚合和使用 MySQL 进行数据预聚合。这两种解决方案都有一些缺点,主要的问题是需要批量插入或更新记录,以确保历史数据被正确更新。他们考虑的另一个解决方案是使用两张OLAP数据库表,一张存储原始数据,然后使用事件触发器异步函数来更新另一个表中的指标,但是这个解决方案是不可伸缩的,特别是在写入流量很高的情况下。

 


最终的架构图

 

最终的架构使用了KafkaFlinkPinot。后端服务生成的 Kafka 事件通过 Flink 来聚合。聚合的数据被摄取到 Pinot 中,它使用 Kafka 的实时摄取来保留最后三天的数据,历史数据被摄取到 HDFS 中。

 

Apache Pinot 提供了 JSON、排序列和星树等索引优化技术,以加速查询的性能。快速查询为承运人提供了更好的交互体验。为了实现 250 毫秒的表查询延迟,他们在 Pinot 表上创建了两种索引——倒排索引排序索引。倒排索引可以将带有 WHERE 子句的查询速度提高 10 倍,根据承运人的惟一 ID 对索引进行排序,将表的大小减小了一半,这也减小了查询延迟。

 

Neutrino 是用于访问 Pinot 数据集的查询网关,它是Presto的另一种部署方式,其中协调器和 Worker 运行在不同的主机上,可以独立执行查询。Neutrino 接受PrestoSQL查询,并将其翻译成 Pinot 查询语言。Neutrino 前面添加了 Redis 缓存,可以存储聚合指标最多 12 小时,缓存命中率超过了 90%。

 

根据Uber的观察发现,自从它开始向 Freight 司机提供绩效信息以来,所有关键指标都有了显著提升——晚点取消的比例下降了 0.4%,准时取货的比例提高了 0.6%,准时卸货的比例提高了 1%,自动跟踪的比例提高了 1%。这些绩效改进在 2021 年估计节省了 150 万美元的成本。

 

原文链接

https://www.infoq.com/news/2022/11/uber-freight-analysis/

2022-11-26 08:005372

评论

发布
暂无评论
发现更多内容

架构实战营 - 第三期 - 模块三作业

岚哲

极客时间 架构 架构实战营

常见的社会潜规则有哪些?

Java 程序员 后端

异步编程的取消机制 竟然还有这样的效果, 要不要了解一下?

Java 程序员 后端

当程序员多年了,现在竟然还有人只会多线程-,不会异步编程!-我惊呆了

Java 程序员 后端

将项目转成MAVEN项目

Java 程序员 后端

工作三年的Java程序员应该达到什么水平?

Java 程序员 后端

已开源!阿里巴巴SpringCloud微服务原理与架构项目实战,请签收

Java 程序员 后端

开源爆款,阿里P7技术笔记《k8s+docker》

Java 程序员 后端

应云而生,幽灵的威胁 - 云原生应用交付与运维的思考

Java 程序员 后端

开发新人有必要考虑在工作一年后跳槽

Java 程序员 后端

强烈推荐10本程序员必读的书

Java 程序员 后端

年初入职 字节跳动 的Java面试经验分享(文档)

Java 程序员 后端

年前三面美团百度挂了,疫情间啃完阿里面试宝典,成功斩获offer

Java 程序员 后端

开发进阶加薪利器:美团架构师最新版的深入理解JVM底层和源码PDF

Java 程序员 后端

微服务下的分布式session管理

Java 程序员 后端

微服务SpringCloud项目:初步整合rabbitmq

Java 程序员 后端

常见的SQL面试题:经典50例

Java 程序员 后端

架构实战营 - 第三期 - 模块三作业

lucian

架构实战营

应用服务器集群的Session管理

Java 程序员 后端

张总:“必须要裁掉那些老家伙”中年程序员真的只能坐等被裁吗?

Java 程序员 后端

带你了解代理模式

Java 程序员 后端

应届生想要找到一份Java开发的工作,需要达到什么水平?

Java 程序员 后端

开发十年面试过1000个人,总结出这份高薪Java 面试秘诀

Java 程序员 后端

开发做了一两年了,感觉遇到了瓶颈,公司已经学不到太多东西,如何成长为技术大牛

Java 程序员 后端

当场折服,这份阿里P8大牛给我的JUC知识总结真的超详细

Java 程序员 后端

微服务架构实战:可扩展分布式数据库集群的搭建

Java 程序员 后端

Android开发:当前项目以Module形式引用别的项目的步骤

三掌柜

11月日更

干掉GuavaCache:Caffeine才是本地缓存的王

Java 程序员 后端

干货第一弹-教你如何利用阿里开源工具进行排查线上CPU居高问题

Java 程序员 后端

幸亏有了这本623页的微服务框架实战笔记,一举拿下腾讯美团滴滴offer

Java 程序员 后端

微服务容错组件Hystrix设计分析

Java 程序员 后端

Uber Freight近实时分析架构,晚点取消的比例下降了0.4%_架构_InfoQ精选文章