写点什么

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

评论

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

2021金三银四跳槽必备:阿里Java岗面试突击笔记终开源!,springmvc实战视频

爱好编程进阶

Java 面试 后端开发

HashMap 面试二十一问!,腾讯Java面试必问

爱好编程进阶

Java 面试 后端开发

Android系统和iOS系统两大系统占据了手机操作系统98%的市场份额,国产手机操作系统还应该从哪些方面努力才能实现逆袭?

InfoQ IT百科

虎符交易所Hoo研究院|币海寻珠——四月上半月区块链投融事件Top20

区块链前沿News

区块链 投资 虎符研究院

购买不同品牌的手机,怎么对比硬件配置?

InfoQ IT百科

自动化测试的生命周期是什么?

禅道项目管理

自动化测试 生命周期

2020年java岗合集面试复盘,凭借这些文档掌握80%就去进阿里,大牛自我总结500页“Java成长笔记”

爱好编程进阶

Java 面试 后端开发

星环科技平滑迁移方案加速国产化替代,助力大数据基础软件自主可控

星环科技

华为云媒体査勇:华为云在视频AI转码领域的技术实践

华为云开发者联盟

音视频 华为云 视频AI转码 超高清视频 云转码

70道Java开发面试题及答案,2022最新大厂高频微服务面试总结

爱好编程进阶

Java 面试 后端开发

CRM系统改善客户体验的方法

低代码小观

CRM CRM系统 客户关系管理系统 客户体验 客户体验管理

ActiveMQ消息存储持久化,华为java面试难度

爱好编程进阶

Java 面试 后端开发

有研究显示,现在年轻人越来越不愿意换手机了。下一代智能手机在硬件上出现哪些更新,才会让你有换机的冲动?

InfoQ IT百科

最近几年,OPPO 、小米等手机厂商都开始走自研芯片之路,这条路能跑通吗?

InfoQ IT百科

摆脱 AI 生产“小作坊”:如何基于 Kubernetes 构建云原生 AI 平台

阿里巴巴云原生

OPLG:新一代云原生可观测最佳实践

阿里巴巴云原生

手机刷新率越高越好吗?

InfoQ IT百科

2019年华为鸿蒙加入手机系统阵营,如何看待鸿蒙这三年的发展?

InfoQ IT百科

前三个月免费试用!博睿数据告警平台OneAlert火热大促进行中

博睿数据

从构建到治理,业内首本微服务治理技术白皮书正式发布(含免费下载链接)

阿里巴巴云原生

【Zeekr_Tech】ROS/ROS 2介绍

Zeekr_Tech

操作系统 机器人

Kafka生成消息时的3种分区策略

华为云开发者联盟

kafka 分区 Default Partitioner 分区策略 Partitioner

CPU和GPU有什么区别?

InfoQ IT百科

C语言的三子棋,用22天总结了一份完美的SQL学习笔记

爱好编程进阶

Java 面试 后端开发

FutureTask的使用方法及实现原理,Java后端路线图

爱好编程进阶

Java 面试 后端开发

hive学习笔记之六:HiveQL基础,redis和mongodb区别面试

爱好编程进阶

Java 面试 后端开发

系列解读 SMC-R (二):融合 TCP 与 RDMA 的 SMC-R 通信 | 龙蜥技术

OpenAnolis小助手

开源 TCP/IP 龙蜥社区 龙蜥大讲堂 SMC-R

如何看待现阶段国内手机操作系统的竞争格局?

InfoQ IT百科

日志脱敏是什么意思?为什么要做日志脱敏?

行云管家

数据安全 日志脱敏

银行为什么要上堡垒机?选择哪家好?有案例吗?

行云管家

运维 网络安全 银行 堡垒机

netty系列之:netty中常用的xml编码解码器

程序那些事

Java Netty 程序那些事 4月月更

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