写点什么

优化 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:004926

评论

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

架构训练营毕业设计

看,有只猪

敏捷概念123之----敏捷洋葱圈

Ian哥

敏捷软件开发 敏捷宣言

电商系统微服务拆分

张靖

#架构实战营

CSS之选择器(四)

Augus

CSS 12月日更

第六模块总结

张靖

「架构实战营」

秒杀系统架构

人工智能~~~

模块六

侠客行

「架构实战营」

架构实战营毕业总结

Rabbit

数字人民币跨境支付测试不断推进,内地居民未来在港购物也可用

CECBC

OKR的一种实践

wood

OKR 28天写作 组织建设

尝鲜Go 1.18中范型版本的map和slice

Robert Lu

Go 语言 范型

商场里的4S店

张老蔫

28天写作

LeSS- 大规模敏捷开发框架实践心路

RingCentral铃盛

Scrum框架下玩转敏捷实践

RingCentral铃盛

人少一半,活照样干?(12/28)

赵新龙

28天写作

42 K8S之调度器

穿过生命散发芬芳

k8s 28天写作 12月日更

数据大体系(三)——指标

圣迪

大数据 数据 指标体系 指标 数据分层

Rust 元宇宙 17 —— 聊天和表情

Miracle

rust 元宇宙

11. 《重学JAVA》--字符串

杨鹏Geek

Java 25 周年 28天写作 12月日更

【Three.js】WEB3D项目开发中实用工具推荐

devpoint

WebGL three.js 元宇宙 12月日更

Eureka分区集群部署

李子捌

微服务 28天写作 12月日更

与2宝的“有效”沟通经验 1

搬砖的周狮傅

沟通

架构实战毕业总结

人工智能~~~

MySQL外键约束

JavaEdge

12月日更

Redis分布式锁的最佳实践 - Redisson

xcbeyond

redis 分布式锁 28天写作 12月日更

知犀思维导图

IT蜗壳-Tango

28天写作 12月日更

架构实战营模块六拆分电商平台为微服务

Geek_99eefd

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

Musical.ly 创始人:打造用户社区的三板斧

石云升

28天写作 12月日更 社区打造

最可怕的黑客攻击:APT攻击

喀拉峻

网络安全 安全

三步搞定现场意外

将军-技术演讲力教练

架构实战营-模块六

随风King

「架构实战营」

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