写点什么

优化 Uber 的搜索基础设施:升级至 Apache Lucene 9.5

  • 2024-12-09
    北京
  • 本文字数:1005 字

    阅读完需:约 3 分钟

优化 Uber 的搜索基础设施:升级至Apache Lucene 9.5

最近,Uber 工程团队宣布升级其搜索基础设施,从 Apache Lucene 8.0 升级到 9.5 版本。此次升级提高了 Uber 各项服务的搜索能力、性能和效率。


在一篇博文中,来自 Uber 搜索平台和数据工程团队的 Anand Kotriwal、Aparajita Pandey、Charu Jain 和 Yupeng Fu 详细阐述了本次升级工作。Uber 搜索平台有一个可靠的架构,包括服务层(读取路径)和摄取层(写入路径),以及用于离线处理的组件。


服务层负责处理用户查询,并从 Lucene 索引中检索信息。它主要包含两个部分:路由服务和搜索服务,前者将传入的查询定向到适当的搜索节点,并管理负载均衡;后者查询 Lucene 索引,实时检索结果。


当数据发生变化时,摄取层会更新 Lucene 索引。基于 Apache Flink 的摄取服务会处理实时更新,确保搜索索引保持最新。


对于离线处理,Uber 使用离线作业。这些 Apache Spark 作业可以处理批量索引创建和重建,高效地处理大量数据,构建或重建 Lucene 索引。



图片来源:Lucene:Uber 搜索平台版本升级


工程团队修改了一个单独的特性分支,单体存储库中受影响的文件有 400 多个,而这些文件与当前的代码库并不兼容。为了解决这个问题,团队选择了分阶段上线 Lucene 更新。首先,他们将其部署到优先级较低的内部用例中,然后再逐步扩展到更高的层级上。


整个过程耗时约 6 个月,包括全面的代码审查、验证、与客户团队合作以及合并分支前的分级推广。


Apache Lucene 是一个基于 Java 的搜索引擎库。它支持各种搜索需求,包括结构化搜索和全文搜索、分面搜索、最近邻搜索、拼写纠正和查询建议。它还有一个子项目 PyLucene,为 Lucene Core 提供 Python 绑定。


最近,他们发布了第 10 个版本,新增一个预取 APIIndexInput(支持对文档值做稀疏索引),并升级了 Snowball 字典,进而改进了分词。


本次升级提高了 Uber 的搜索速度和效率。搜索运行速度更快,使用的资源更少,也就是说应用程序用户可以更快地获得搜索结果。按照该团队的说法,有些搜索现在比以前快了 30%,使用该应用的乘客和司机都可以获得更好的体验。


这次升级的另一个好处来自对 Uber 基础设施的影响。Uber 的搜索请求严重依赖 CPU 能力,因此降低 CPU 使用率至关重要。这有助于削减基础设施成本,使 Uber 能够减少为多个客户提供服务所需的机器数量。


Uber 升级 Lucene 版本凸显了在技术驱动的大规模运营中保持核心技术与时俱进的重要性。


原文链接:


https://www.infoq.com/news/2024/11/uber-search-infra-lucene-upgrade/


2024-12-09 08:004631

评论

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

Microsoft  Office  MSDT 代码执行漏洞

郑州埃文科技

网络安全 漏洞分析 漏洞缓解

Django基础-1

zyf

django 6月月更

实时特征计算平台架构方法论和基于 OpenMLDB 的实践

第四范式开发者社区

机器学习 数据库 AI 特征平台 特征工程

IC 首届全球黑客松奖金高达600 万美元,助力开发者勇闯 Web 3!

TinTinLand

区块链

互联网拓扑是怎样构成的?又代表了什么?

郑州埃文科技

互联网拓扑 网络空间地图

PHP 对接微信公众号订阅消息详细教程

CRMEB

融云一图看懂:社死的“谭某某”,霸屏的信息安全

融云 RongCloud

LLVM之父Chris Lattner:模块化设计决定AI前途,不服来辩

OneFlow

机器学习 深度学习 AI

Python的教程

芯动大师

Python编程 6月月更

发布一个轻量级的 Elasticsearch 压测工具 - Loadgen

极限实验室

elasticsearch 极限实验室 loadgen 压测工具 esrally

Electron框架XSS TO RCE简析

美创科技

漏洞

专为云原生、微服务架构而设计的链路追踪工具 【SkyWalking介绍及搭建】

掂掂三生有幸

云原生 Skywalking ,docker 微服务框架 6月月更

变量 var const let 的区别

大熊G

JavaScript 前端 前端教程 6月月更

2022年SaaS的10个有趣趋势

小炮

【直播回顾】Hello HarmonyOS进阶课程第五课——原子化服务

HarmonyOS开发者

HarmonyOS

Kubernetes容器网络及Flannel插件详解

巨子嘉

云原生

虚拟主机、WordPress 主机和云主机之间的区别

海拥(haiyong.site)

6月月更

博睿数据荣获优炫软件产品兼容互认证书和海量数据兼容互认证书

博睿数据

智能运维 博睿数据 产品兼容 数据兼容

阿里云架构师梁旭:MES on 云盒,助力客户快速构建数字工厂

阿里云弹性计算

最佳实践 数字化转型 制造业 mes 云盒

架构实战营模块 7 作业

热猫

DFINITY 明星项目盘点,区块链热门赛道一览

TinTinLand

区块链

Java中的阻塞队列

急需上岸的小谢

6月月更

技术分享| 如何部署安装分布式序列号生成器系统

anyRTC开发者

分布式 后端 音视频 服务器 Tinyid

大数据培训Hive到Spark离线计算实践

@零度

spark hive 大数据开发

用乐高玩转Scrum,轻松拿CSM证书

ShineScrum

Scrum ScrumMaster CSM 乐高

私有化IM即时通讯怎样在保障企业安全下提高效率?

BeeWorks

场景驱动的特征计算方式OpenMLDB,高效实现“现算先用”

第四范式开发者社区

人工智能 机器学习 数据库 开源 实时计算

CC2530 GPIO口输出配置说明​

DS小龙哥

6月月更

web前端培训如何在 H5 网页中实现扫码功能

@零度

前端开发

聚焦Arbitrum开发热点技术,一探以太坊的L2未来

TinTinLand

火遍全网的AI给老照片上色,这里有一份详细教程!

博文视点Broadview

优化 Uber 的搜索基础设施:升级至Apache Lucene 9.5_后端_Aditya Kulkarni_InfoQ精选文章