速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

云上MongoDB常见索引问题及最优索引规则大全

MongoDB中文社区

mongodb

焱融看|AI 如何驱动存储发展

焱融科技

云计算 AI 分布式 高性能 文件存储

Java 在 IntelliJ IDEA 中提示 set the language level 9

HoneyMoose

哈希值游戏DAPP开发|区块链哈希值竞猜游戏开发

薇電13242772558

区块链 哈希值

Tomcat:应用加载原理分析

IT巅峰技术

Tomccat

C++11 智能指针之shared_ptr<void>

轻口味

c++ android 4月月更

从分层架构到微服务架构(五)之服务化架构

元闰子

架构 从分层架构到微服务架构

自己动手写Docker系列 -- 5.3实现logs命令查看容器日志

golang Docker

关于数据湖几个问题详细剖析

五分钟学大数据

数据湖 4月月更

Go 学习笔记——Only For

为自己带盐

Go 4月月更

音视频&流媒体的原理以及基础入门知识

玩转音视频技术

Linux SRS 音视频开发 流媒体开发

怒肝 JavaScript 数据结构 — 栈篇(二)

杨成功

数据结构 4月月更

Redis集群架构剖析(5):复制与故障转移

非晓为骁

主从复制 redis cluster master

Hoo虎符研究院|一图了解币圈后浪Magic Eden

区块链前沿News

虎符研究院

架构师作业2

小虾米

架构师实战营

基于 HTML+CSS+JS 的纸牌记忆游戏

海拥(haiyong.site)

html 游戏 4月月更

前端食堂技术周刊第 32 期:2022 年 3 月 TC39 会议、Rome Formatter、Node 内置 Test Runner

童欧巴

JavaScript 程序员 前端 web前端

crmeb Java 项目打包可运行jar文件详细教程

CRMEB

Go 实现 WebSockets:1.什么是 WebSockets

宇宙之一粟

Go 4月月更

C++后端开发进阶学习大纲指南

赖猫

c++

订单管理系统(OMS)搭建实战 - 低代码拖拽定制订单管理系统

蒋川

低代码 低代码开发 低代码平台 订单系统 订单管理系统

MariaDB 的自增字段 AUTO_INCREMENT 字段

HoneyMoose

Spring定义BeanDefinition

IT巅峰技术

对话核心开发者,波卡的EVM+最新技术分享活动回顾

One Block Community

区块链 Substrate EVM 波卡

互联网的下一站,大概率是能源

脑极体

Java 初始化 List 的几种方法

HoneyMoose

在线XML转JSON工具

入门小站

工具

[Day9]-[动态规划]编辑距离

方勇(gopher)

LeetCode 动态规划 数据结构算法

设置 Jupyter Notebook 主题

信号量

Python Jupyter Notebook notebook 主题 科学计算

Linux驱动开发-编写NEC红外线协议解码驱动

DS小龙哥

4月月更

Substrate Builders Program | 了解波卡生态云计算平台与最先进的查询节点框架

One Block Community

区块链 Substrate 波卡

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