写点什么

基于 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:0048707

评论

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

首购2元起!CDN与加速特惠专场来啦~

火山引擎边缘云

CDN CDN加速 边缘云 CDN技术

INFINI Labs 产品更新 | Gateway 支持基于 Kafka 的复制能力,发布 Helm Charts 部署方式

极限实验室

Helm Charts infini gateway INFINI Console easysearch

软件开发中,如何为你的代码构建三层防护体系

华为云开发者联盟

软件开发 华为云 华为云开发者联盟 企业号9月PK榜

观测云产品更新 | 优化日志数据转发、索引绑定、基础设施自定义等

观测云

可观测性用观测云

低代码引擎 TinyEngine 正式发布!!!

OpenTiny社区

开源 前端 低代码

游戏研发与产业的变革之路

百度开发者中心

#人工智能 生成式AI LLM

警惕U盘、FTP等传统文件摆渡方式的7大弊端

镭速

文件传输 大数据传输 文件摆渡

网络隔离下实现的文件传输,现有的方式真的安全吗?

镭速

文件传输 内外网数据交换 网络隔离

私有云有哪些特点,与公有云有什么关系

青椒云云电脑

私有云

DaaS到底是什么 为什么越来越多人在用云桌面办公

青椒云云电脑

云桌面

虹口有数丨上海市虹口区“一网统管”新解法

云计算

物联网、工业大数据平台 TDengine 与苍穹地理信息平台完成兼容互认证

TDengine

时序数据库 #TDengine 国产时序数据库

企业应用的挑战与机遇

百度开发者中心

#人工智能 生成式AI 千帆大模型平台

一图回顾华为云开发者联盟扫地僧见面会

华为云开发者联盟

开发者 华为云 华为云开发者联盟 企业号9月PK榜

如何提升Java项目质量,代码是关键

飞算JavaAI开发助手

代码质量 Java 开发

度小满发布“轩辕70B”金融大模型 C-Eval、CMMLU双榜排名第一

科技热闻

云GPU如何加速AI训练

青椒云云电脑

云服务器

用友第五届开发者大赛初赛晋级公示,复赛火热进行中!

YonBuilder低代码开发平台

【华秋干货铺】双面混装PCBA过波峰焊时,如何选用治具?

华秋电子

PCB

赋能游戏产业的新引擎

百度开发者中心

#人工智能 生成式AI 千帆大模型平台

用友BIP开发者生态亮相华为全联接大会

YonBuilder低代码开发平台

智能时代的“发动机升级”:数据中心十年之变

脑极体

数据中心

腾讯云ES:一站式接入,数据链路可视化重磅来袭!

腾讯云大数据

ES

同一份数据全域共享,HashData UnionStore实时性背后的故事

酷克数据HashData

入门指南:GPU云服务器用途一览

青椒云云电脑

云服务器

数据库OpenTenBase和操作系统OpenCloudOS获信通院Oscar开源尖峰奖

极客天地

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