RocketMQ 在同程旅行的落地实践

同程旅行基于Java的RocketMQ实现削峰、解耦、异步处理和数据同步,经过同城双中心方案确保业务可用性和数据可靠性。文中详细介绍了同城冷备和双活策略,以及平台治理措施,包括主题消费组治理、客户端治理和服务端治理,以确保系统的稳定性和高可用性。
摘要由CSDN通过智能技术生成

本文作者:刘树东 - 同程艺龙技术专家

01/使用概况
在这里插入图片描述
同程旅行选择RocketMQ主要基于以下几个方面的考虑:

技术栈:公司主要以 Java 开发为主,因此我们倾向于选择一款用 Java 实现的MQ,且没有任何第三方依赖为最佳;

久经考验:Rocket MQ 经历了阿里双11考验,性能、稳定性得到了充分验证;

功能实用:RocketMQ 的发送端提供改了同步、异步、单边、延时发送的功能;消费端有重试队列、死信队列以及消息重置功能,非常方便实用。

综合以上三点,我们选择了 Rocket MQ。

在这里插入图片描述

Rocket MQ 在同程旅行的使用场景有削峰、解耦、异步处理以及数据同步等。目前已经在公司各大业务线的核心系统里得到广泛使用,承受了来自微信入口的巨大流量,每天有1000+ 亿条消息周转。

图片

同程旅行RocketMQ 框架图如上。机票、交通和酒店三大业务线通过 Java SDK 以及Http Proxy 的方式接入到 MQ 集群。其中Http Proxy 主要为了方便其他语言客户端使用;同时为了更好地实现资源隔离,我们将后端服务端节点按照业务线做了物理隔离,能够最大程度地确保业务线之间不会互相影响。整个 MQ 集群通过 MQ 服务平台进行治理。

02/同城双中心

在这里插入图片描述

同城双中心主要为实现以下三个目标:

  • 单机放故障时保证业务可用

  • 保证数据可靠

  • 横向扩容

在这里插入图片描述

外部用户请求经过 LVS 以及 Nginx 调用服务与应用,应用底层主要调用了 MySQL、Redis 以及 MQ,双中心可分为同城冷备和同城双活两个方案。

在这里插入图片描述

同城冷备有两个 MQ 集群,分别是 source 集群和target 集群。生产者会将消息生产到 source 集群,之后经过消息同步集群将 source 集群里的元数据比如 topic、消费组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值