最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

评论

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

数据编织趋势探秘

Kafka中文社区

书单 | 这6本书,带你轻松学习自动化办公

博文视点Broadview

“积木拼装”,HarmonyOS弹性部署大揭秘!|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

Vue学习的4个实用的Javascript技巧

编程江湖

VUE 3.0 源码

单体应用与微应用典型架构比对

编程江湖

架构

Shell脚本好学吗?看看这个带你了解shell中色彩处理和awk使用技巧

学神来啦

Linux Shell linux运维 awk linux云计算

如何强化应用安全能力,全面拦截 Log4j 漏洞攻击

阿里巴巴云原生

阿里云 云原生 安全 log4j

常回家看看

Tiger

28天写作

电子书网站推荐

坚果

28天写作 12月日更

梦想总是要有的 - 工作20年程序员的2021年度总结

万俊峰Kevin

程序员 微服务 年终总结 年度总结 Go 语言

SpringBoot2 API接口签名实现

编程江湖

springboot

更快的Maven来了,我的天,速度提升了8倍!

王磊

给弟弟的信第25封|这个世界有上帝吗?

大菠萝

28天写作

php项目使用xdebug远程调试

try catch

php 调试 Xdebug

云图说|ModelArts Pro:让AI开发更简单

华为云开发者联盟

AI 华为云 ModelArts Pro 云图说

今天谈谈用户故事地图,不是用户故事

华为云开发者联盟

DevOps 敏捷 开发 用户故事 用户故事地图

技术职场主题线上沙龙|程序员百万年薪进阶指南

智联卓聘

职场成长 Java技术提升 技术职场 百万年薪

某俄罗斯小哥,竟靠一个服务器软件直接封神?

沉默王二

nginx

【转】java开发之SpringBoot数据校验机制

@零度

Spring Boot JAVA开发

带你掌握二进制SCA检测工具的短板及应对措施

华为云开发者联盟

测试 二进制 漏洞 二进制SCA检测

Linux之locate命令

入门小站

Linux

架构实战营模块七作业

孙志强

架构实战营

中电科技加入龙蜥社区,助力开源生态建设

OpenAnolis小助手

开源社区 龙蜥社区

如何让 Spring Security 「少管闲事」

mzlogin

Java spring spring security

DevTools 实现原理与性能分析实战

vivo互联网技术

chrome 前端 Web

开源 Serverless 里程碑:Knative 1.0 来了

阿里巴巴云原生

阿里云 开源 Serverless 云原生 Knative

读写锁ReentranReadWriteLock源码分析

Ayue、

读写锁 lock

分析内部运行机制,教你解决Redis性能问题

华为云开发者联盟

数据库 redis 缓存 GaussDB(for Redis) 结构化存储

PassJava 开源 (八) :Spring Cloud 整合 Nacos配置中心

悟空聊架构

nacos 28天写作 passjava 悟空聊架构 12月日更

网易有道 | REDIS 云原生实战

有道技术团队

redis

EasyAds:曾经自研的广告聚合SDK,如今在开源平台中唾手可得

EasyAds

sdk 聚合sdk 广告sdk 聚合广告sdk

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