立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

基于 RabbitMQ 和 Redis,美版“携程”网使用微服务提升搜索扩展性

作者:Rafal Gancarz

  • 2024-02-11
    北京
  • 本文字数:1053 字

    阅读完需:约 3 分钟

基于 RabbitMQ 和 Redis,美版“携程”网使用微服务提升搜索扩展性

lastminute.com 的团队将单个服务分解为多个服务,并引入异步集成来重新构建了搜索结果聚合流程。他们的开发人员使用 RabbitMQ 进行消息传递,使用 Redis 存储来自数据供应商的结果。改进后的架构有了更强的可扩展性和可部署性,资源占用率也有所下降。

lastminute.com 平台在平台的旅行解决方案搜索聚合流程中使用的是第三方供应商。过去,他们使用一个称为运输供应商聚合器 (TA) 的单个 Java 组件封装了整个聚合过程。具体来说,该组件在内部生成许多线程来执行对数据供应商系统的 HTTP POST 请求,并随后在可用时收集和处理结果。


初始搜索结果聚合架构(来源:lastminute.com 技术博客)


lastMinute.com 团队发现,之前这个聚合流程架构存在耦合度高、扩展性差、部署复杂、资源利用率高等问题。lastMinute.com 的产品工程师 Giuseppe Pinto 解释了在该架构中观察到的资源利用率挑战:

该系统每天必须处理大约 5000 万个请求 [...],这意味着每秒大约 600 个请求(这里还是按日常流量算出来的数字;但在某些情况下,流量甚至可能会增加一倍)。值得注意的是,每个单独的请求都会生成 N+1 个线程来实现系统的目标。每个线程负责处理来自供应商的完整响应,在某些情况下,一个 HTTP 响应就封装了一个旅行解决方案,大小达到 25 兆字节之多。总之,就线程和内存使用而言,它是高度资源密集型的。

开发人员选择了分解 TA 服务,并将其中的数据提供者集成逻辑移至独立的微服务中,同时让 TA 服务专注于编排和结果聚合工作。新架构引入了 RabbitMQ 作为消息传递服务,它负责将搜索任务分派给数据提供者搜索驱动程序,并将任务完成通知从搜索驱动程序传递回聚合服务。

TA 服务和搜索驱动程序之间的交互采用了远程过程调用(RPC)模式,基于更通用的请求 - 答复模式。该模式需要两个消息队列,第一个用于发送搜索任务请求,包含相关标识符和回复队列的名称;第二队列传送搜索任务完成通知,包含来自搜索任务消息的相关标识符。聚合服务跟踪待处理的搜索任务,并使用相关标识符来匹配分派的搜索任务和接收到的完成通知。



新的搜索结果聚合架构(来源:lastminute.com 技术博客)

在新设计中,搜索驱动程序服务在发送回 TA 服务的通知消息中不包含数据提供商返回的旅行解决方案数据。相反,它们以标准化形式将数据存储在 Redis 缓存中,一旦所有搜索完成通知到达,TA 服务就会从 Redis 获取这些数据。

原文链接:

lastminute.com Improves Search Scalability Using Microservices with RabbitMQ and Redis (https://www.infoq.com/news/2024/01/lastminute-search-rabbitmq-redis/)

2024-02-11 08:0036945

评论

发布
暂无评论

国内仅有的两个“代码生成型”低代码平台之对比

编程之成住坏空

低代码 无代码 代码生成 代码自动生成 代码生成器

免费的国产数据集成平台推荐

RestCloud

数据同步 ETL

ONLYOFFICE:一个免费、开源、跨平台的办公神器

陈橘又青

远程办公 文档 协同办公 协同文档

分享10个免费的Python代码仓库,轻松实现自动化办公(上)

程序员晚枫

Python

AI 鲲鹏独角兽 | Kyligence 荣登毕马威中国人工智能创新双30企业榜单

Kyligence

数据分析 Data + AI

云上探索实验室-码上学堂领学员招募,正式启动!

科技热闻

专业屏幕录像软件推荐 Apeaksoft Screen Recorder免激活中文

mac大玩家j

录屏软件 Mac软件 屏幕录制软件

集结AI创新力量,“华为云杯”2023人工智能应用创新大赛圆满落幕

科技热闻

“火焰杯”软件测试赛,河南工业大学人工智能与大数据学院获奖

测试人

Linux远程管理协议

梦笔生花

基于奇点云DataSimba,规划并新建数据生产域的实践

Geek_2d6073

注释在编程中的重要性:理解程序员的两难选择

小魏写代码

复杂业务逻辑的判断与优化

ZA技术社区

大数据 科技 保险科技 众安保险 ZA技术社区

LeetCode题解:剑指 Offer 03. 数组中重复的数字,原地置换,JavaScript,详细注释

Lee Chen

LeetCode

【网络】- TCP/IP四层(五层)协议 - 网际层(网络层) - 网际协议IP详解。

百度搜索:蓝易云

云计算 Linux TCP 运维 IP

选择低代码开发的理由

树上有只程序猿

软件开发 低代码 传统开发

7款最佳免费需求管理工具详细对比

爱吃小舅的鱼

需求管理 需求管理工具

Nxyz是怎么样的一个搜索平台?

币离海

区块链 Web3.0 nxyz

文心一言 VS 讯飞星火 VS chatgpt (116)-- 算法导论10.3 1题

福大大架构师每日一题

福大大架构师每日一题

协同创新、奔赴未来——“华为云杯”2023人工智能创新应用大赛华丽谢幕

科技热闻

敏捷开发的核心原则和方法实践-深入理解Scrum

顿顿顿

Scrum 敏捷开发 敏捷研发工具 敏捷管理工具 scrum管理工具

Git基本知识

百度搜索:蓝易云

git 云计算 Linux 运维 云服务器

iPhone垃圾清理器 AnyMP4 iOS Cleaner最新中文版

胖墩儿不胖y

Mac软件 清理工具 清理器

半导体即国家,日本做了啥?最大的 AI 模型并不十分透明;特斯拉安全数据报告缺失近一年丨 RTE 开发者日报 Vol.70

声网

大模型 | Red Teaming, 无法忽视的关键一环

澳鹏Appen

人工智能 ChatGPT 生成式AI 红蓝对抗 red team

斯坦福发布 最新 GPT 模型排行榜 AlpacaEval【AI工具免费使用】

袁袁袁袁满

大模型 GPT AI绘画 ChatGPT

UML软件哪个好?10款好用的UML工具和画图软件推荐!

彭宏豪95

UML 在线白板 UML建模工具 绘图软件 绘图工具

基于 RabbitMQ 和 Redis,美版“携程”网使用微服务提升搜索扩展性_微服务_InfoQ精选文章