【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

评论

发布
暂无评论

AnyGo for Mac中文破解版:路线模拟、批量定位更改、实时位置统计

Rose

刘强东AI数字人是怎样克隆出来进行直播带货?

青否数字人

数字人

文心大模型ERNIE-Tiny:轻量化技术的全面解读

百度开发者中心

人工智能 大模型

Logstash同步MySQL数据到ElasticSearch

百度搜索:蓝易云

MySQL elasticsearch Linux 运维 Logstash

2024推荐做互联网推广投放项目 全媒体微信朋友圈广告代理如何申请 新政策?

微点全媒体微信推广渠道

GaussDB(DWS)基于Flink的实时数仓构建

华为云开发者联盟

数据库 华为云 华为云开发者联盟 华为云GaussDB(DWS) 企业号2024年4月PK榜

天谋科技专家解析自动化领域正在经历的 IT 行业的老路

Apache IoTDB

Open WebUI大模型对话平台:适配Ollama的实践与探索

百度开发者中心

人工智能 大模型

学习 Go 语言,有哪些优质的开源项目

宇宙之一粟

GitHub Go 语言

远程办公管理/文件传输:Microsoft Remote Desktop mac直装版下载

Rose

DaVinci Resolve18下载,达芬奇剪辑软件mac破解安装教程

Rose

通过阿里云向量检索 Milvus 版和通义千问快速构建基于专属知识库的问答系统

阿里云大数据AI技术

人工智能 大数据 阿里云 Milvus

接口自动化测试工程实践分享

智在碧得

数据 测试流程 接口自动化测试 自动化测 测试自动化工具

使用 TypeScript 从零搭建自己的 Web 框架:AI 工程化

RoyLin

typescript

Downie 4 :mac电脑视频下载抓取工具

Rose

mac虚拟机Parallels Desktop 18好用吗?PD18虚拟机下载安装

Rose

充电桩项目敏捷开发实践分享

智在碧得

敏捷开发管理 敏捷实践 敏捷开发流程 敏捷实践工具 #敏捷开发

英文版sketch怎么转为中文,Sketch中英文切换教程

Rose

【论文速读】| TroubleLLM:与红队专家对齐

云起无垠

凭什么AI数字人直播带货能赚钱?

青否数字人

数字人

腾讯微信朋友圈广告代理招商 互联网广告全国招募合伙人 利润全给

互联网广告践行者

青否数字人直播防封方案解决封禁问题?

青否数字人

数字人

哪里有Photoshop 2021中文版资源?如何破解ps2021?

Rose

ps cc2019中文直装版 Photoshop2019下载安装 Mac/Windows资源

Rose

传媒百万级资源秒级调度实践

智在碧得

MySQL 资源调度 传媒调度 ES分布式 加权排序

Databend Cloud 正式上线腾讯云市场,加速挖掘数据创新价值

Databend

chrome浏览器插件谷歌访问助手mac版下载及安装

Rose

Netflix网飞客户端mac直装破解版 兼容M芯片

Rose

✅对线面试官-CHAR和VARCHAR了解嘛,区别是什么

派大星

MySQL Java 面试题

K8s集群nginx-ingress监控告警最佳实践

华为云开发者联盟

k8s 华为云 华为云开发者联盟 华为云CCE 企业号2024年4月PK榜

聚贤帮斩获“公益明星组织奖”,赵远峰表示将坚守公益初心

科技汇

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