「ArchSummit·深圳」人工智能如何促进工业和制造领域的智能化转型? >>> 了解详情
写点什么

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

评论

发布
暂无评论

零基础参加web前端培训薪资怎么样

小谷哥

数字化时代CRM新的发展方向

力软低代码开发平台

腾讯云大数据平台 TBDS全面升级,加速构建安全可控的大数据生态

科技热闻

开源一夏 |分布式事务--TCC解决方案

六月的雨在InfoQ

开源 分布式事务 TCC 最终一致性 8月月更

仅用3年!青软集团跃升华为云教育类目伙伴TOP2

科技怪咖

ARMS实践|日志在可观测场景下的应用

阿里巴巴中间件

阿里云 云原生 可观测

解决 Flutter 嵌套过深,是选择函数还是自定义类组件?

岛上码农

flutter ios 前端 安卓开发 8月月更

在线医疗 | 眩晕智能语音问诊技术解决方案

擎声科技

RTC 实时音视频 语音通话 在线医疗 擎声Qtt

CSDN 报告:阿里云容器服务成为中国开发者首选

阿里巴巴中间件

阿里云 云原生 云原生容器

OceanBase 4.0:当我们谈单机分布式一体化架构时,我们在说什么?

OceanBase 数据库

活动预告(29日)|诚邀您参与AWS & 观测云「可观测性体验日」

观测云

购物中心的运营保障,数衍科技数据桥接服务系统升级

科技怪咖

Python自学教程5-字符串有哪些常用操作

和牛

Python 测试 8月月更

数衍科技与超市发达成合作,共同探索数字小票的新应用

科技怪咖

[CSS入门到进阶] 外国前端开发者说的 Intrinsic Ratios in css 是什么意思?

HullQin

CSS JavaScript html 前端 8月月更

北京前端培训学习怎么选择

小谷哥

Python自学教程4-数据类型学什么

和牛

Python 测试 8月月更

defi质押dapp智能合约系统开发代码逻辑

开发微hkkf5566

皮皮APP夏日防溺水公益讲座 联动武汉长江救援队筑建生命安全线

联营汇聚

直播预告 | PolarDB-X 动手实践系列—— PolarDB-X on OSS 冷热数据分离存储

阿里云数据库开源

数据库 阿里云 开源 分布式 PolarDB-X

案例 | 拯救Larrakia

澳鹏Appen

人工智能 数据库 nlp 语音识别 数据标注

EPPlus - 用于 .NET 的 Excel 电子表格

辣么大

Excel net 8月月更

大数据学习好还是自学的效果好?

小谷哥

直播预告|FeatureStore Meetup V4携手第四范式 & 腾讯 & 微软大咖讲师,共探特征平台实践

星策开源社区

微软 腾讯 Feature Store 特征平台 MLOps

风险组件已经升级到最新版本,仍然提示风险,如何快速解决——kaptcha 安全漏洞

墨菲安全

Kaptcha 漏洞修复 开源安全 漏洞检测 开源安全与治理

社区疫情防控小程序源码

清风

源码 计算机毕业设计

有个大神把牛客网的Java面试笔记在GitHub开源了

收到请回复

大数据 架构 语言 & 开发 开发技术

一加和OPPO是什么关系?我来揭秘

Geek_8a195c

java程序员培训学习靠谱吗

小谷哥

web前端程序员学习靠谱吗?

小谷哥

美团二面被pass,肝完这份1213 页 的算法刷题神册成功拿到字节offer

了不起的程序猿

Java 字节跳动 算法 java程序员 java编程

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