写点什么

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:007017

评论

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

读《A Philosophy of Software Design》——(16)

术子米德

架构师成长笔记

Android C++系列:JNI中发送Http网络请求

轻口味

c++ android jni curl 4月月更

模块7作业

Mr小公熊

模块七

Leo

架构实战营

适合 Kubernetes 初学者的一些实战练习 (五)

汪子熙

postgresql Kubernetes Cloud Native statefulset 4月月更

读《A Philosophy of Software Design》——(13)

术子米德

架构师成长笔记

「架构实战营」模块七 王者荣耀商城异地多活架构设计

hxb

「架构实战营」

读《A Philosophy of Software Design》——(14)

术子米德

架构师成长笔记

王者荣耀商城-异地多活设计

邹玉麒

架构训练营5期

架构实战营 - 模块7 - 作业

凌波微步

「架构实战营」

读《A Philosophy of Software Design》——(8)

术子米德

架构师成长笔记

读《A Philosophy of Software Design》——(15)

术子米德

架构师成长笔记

读《A Philosophy of Software Design》——(19)

术子米德

架构师成长笔记

在不确定性中寻找确定性(28/100)

hackstoic

创业 创业心态

Linux驱动开发-编写MMA7660三轴加速度传感器

DS小龙哥

4月月更

智能足球裁判,能否突破专业运动的技术瓶颈​

这不科技

Springfox swagger2 API文档

Rubble

4月日更

读《A Philosophy of Software Design》——(9)

术子米德

架构师成长笔记

读《A Philosophy of Software Design》——(11)

术子米德

架构师成长笔记

读《A Philosophy of Software Design》——(12)

术子米德

架构师成长笔记

模块七作业

Geek_ec866b

架构训练营

重学架构之王者荣耀商城异地多活架构设计

陈华英

架构实战营 「架构实战营」

读《A Philosophy of Software Design》——(20)

术子米德

架构师成长笔记

王者荣耀(商城)异地多活架构模拟设计

随欣所遇

架构训练营5期

王者荣耀商城异地多活架构设计

浪飞

每个互联网人才都应该知道的SQL注入!

喀拉峻

网络安全 安全 渗透测试 SQL注入

[Day8]-[动态规划] 最长公共子序列

方勇(gopher)

LeetCode 动态规划 数据结构与算法、

读《A Philosophy of Software Design》——(17)

术子米德

架构师成长笔记

读《A Philosophy of Software Design》——(10)

术子米德

架构师成长笔记

读《A Philosophy of Software Design》——(18)

术子米德

架构师成长笔记

王者荣耀商城异地多活架构设计

tom

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