写点什么

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

评论

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

记游(四)

轩辕御龙

多人实时互动之各WebRTC流媒体服务器比较

音视频专家-李超

音视频 WebRTC 在线教育 mediasoup janus

Netty系列之源码解析(一)

猿灯塔

Netty

redis数据结构介绍二-第二部分 跳表

Nick

redis 源码 数据结构 源码分析 算法

Make Tmux Great Again

ccx

tmux

如何学习区块链技术

比特币 区块链 以太坊

西江月·记游(一)

轩辕御龙

没有永恒的技术,只有适合的技术

MavenTalker

技术 个人成长 职业规划

MySQL死锁与Spring事务

Dean

MySQL

广告与数据算法系列1.1.1: 什么是广告

黄崇远@数据虫巢

互联网 算法 广告

从翻译到本地化:我在Airbnb做本地化经理的经历

葛仲君

产品 翻译 Airbnb 本地化 全球化

菩萨蛮·记游(二)

轩辕御龙

初入响应式编程(下)

CD826

spring 微服务 响应式编程 reactor

回"疫"录(6):致敬最美逆行者

小天同学

疫情 回忆录 现实纪录 纪实 创新突破

工作时间都去哪儿了?

伯薇

效率 时间管理 个人提升 团队

最通俗易懂的H264基本原理

音视频专家-李超

音视频 WebRTC ffmpeg H264

Java并发编程系列——Fork-Join

孙苏勇

Java Java并发 并发编程 线程

Django 中如何优雅的记录日志

AlwaysBeta

Python django Web 后端

要不要重新认识一下递归与迭代?

西了意

编程

Flink Weekly | 每周社区动态更新

Apache Flink

大数据 flink 流计算 实时计算

redis数据结构介绍三-第三部分 整数集合

Nick

redis 源码 数据结构 源码分析 算法

忆秦娥·记游(三)

轩辕御龙

开发机直连Docker中的redis容器小案例

麦洛

redis Docker

废掉一个人最好的办法是让他忙到没有时间思考

熊斌

程序员 职场 思考

程序员陪娃漫画系列——排队问题

孙苏勇

程序员 生活 陪伴 漫画

C++数组可以为变量吗

泰伦卢

c++ 互联网 编程语言

音视频已强势崛起,我们该如何快速入门音视频技术?

音视频专家-李超

音视频 WebRTC ffmpeg 在线教育

B站、Quora、InfoQ,哪个的阅读/播放量会先到10W+?

赵新龙

写作平台 B站 Quora

Istio 1.5:对开发人员有什么帮助?

麦洛

云原生 istio servicemesh

Ledge:这可能是距今最好的『DevOps + 研发效能』知识平台

Phodal

DevOps 敏捷开发 软件开发 研发效能

格局不行,有机会也抓不住

池建强

创业 格局 MacTalk

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