去哪儿网正式开源内部使用的消息中间件 QMQ

去哪儿网正式开源内部使用的消息中间件 QMQ

去哪儿网近日宣布开源其内部广泛使用的消息中间件 QMQ 。QMQ 自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。目前在公司内部日常消息 qps 在 60W 左右,生产上承载将近 4W+ 消息 topic ,消息的端到端延迟可以控制在 10ms 以内。

QMQ 主要提供以下特性:

  • 异步实时消息

  • 延迟/定时消息

  • 基于 Tag 的服务端过滤

  • Consumer 端幂等处理支持

  • Consumer 端 filter

  • 死信消息

  • 结合 Spring annotation 使用的简单 API

  • 提供丰富的监控指标

  • 接入 OpenTracing

  • 分布式事务(即将开源)

  • 消息投递轨迹(即将开源)

  • 历史消息的自动备份(即将开源)

架构概览 

下图是 QMQ 中各组件及其交互图:

  • meta server 提供集群管理和集群发现的作用

  • server 提供实时消息服务

  • delay server 提供延时/定时消息服务,延时消息先在 delay server 排队,时间到之后再发送给 server

  • producer 消息生产者

  • consumer 消息消费者

去哪儿网正式开源内部使用的消息中间件 QMQ

根据图中的编号描述一下其交互过程

  1. delay server 向 meta server注册

  2. 实时 server 向 meta server注册

  3. producer 在发送消息前需要询问 meta server 获取 server list

  4. meta server 返回 server list 给 producer (根据 producer 请求的消息类型返回不同的 server list )

  5. producer 发送延时/定时消息

  6. 延时时间已到,delay server 将消息投递给实时 server

  7. producer 发送实时消息

  8. consumer 需要拉取消息,在拉取之前向 meta server 获取 server list (只会获取实时 server 的 list )

  9. meta server 返回 server list 给 consumer

  10. consumer 向实时 server 发起 pull 请求

  11. 实时 server 将消息返回给 consumer

更多细节可查阅项目文档

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101276.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python问题解决,[WinError 10049] 在其上下文中,该请求的地址无效

    python问题解决,[WinError 10049] 在其上下文中,该请求的地址无效python问题解决,[WinError10049]在其上下文中,该请求的地址无效出现问题:python网络编程中,出现该错误:importsocketskt=socket.socket(family=socket.AF_INET,type=socket.SOCK_DGRAM)skt.bind((‘***’,5555))分析问题:Traceback(mostre…

    2022年10月1日
    3
  • vue、css修改滚动条样式

    vue、css修改滚动条样式vue、css修改滚动条样式样式为/*滚动条*/body*::-webkit-scrollbar{ width:10px; height:10px;}body*::-webkit-scrollbar-track{ background:#fff; border-radius:2px;}body*::-webkit-scrollbar-thumb{ background:rgb(205,206,206); border-radius:10px;}

    2022年8月31日
    8
  • H5添加QQ好友的链接

    tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=你的QQ号&website=www.oicqzone.com既点击有如下效果:

    2022年4月17日
    107
  • god is a girl 是什么意思_god is a girl 歌词中文

    god is a girl 是什么意思_god is a girl 歌词中文godisagirl题意:解码。将题目中的样例做差输出,打表可得到112581321所以是按斐波那契额值解码的,一开始直接算的菲波那切数没有取模,这样的话90左右就会超longlong所以数组开了100,交了一发runtime,所以得把数组开大,就对斐波那契数取个模就好了#include<bits/stdc++.h>usingnamespacestd;in…

    2022年10月8日
    1
  • 分享一个免费的图片去水印网站[通俗易懂]

    分享一个免费的图片去水印网站[通俗易懂]一、软件截图二、操作说明1、先上传图片2、点击选择区域,在图片上选择要去水印的区域,可支持同时选择多个区域。3、点击开始去水印4、保存去水印的图片到本地。5、如果不满意可再次选择。三、免费体验地址http://121.196.27.184:8080/…

    2025年7月14日
    4
  • intellij idea创建javaweb项目_你没有创建该项目的权限

    intellij idea创建javaweb项目_你没有创建该项目的权限三月中下旬了,答辩的日子也越来越近了。之前忙于考研的童鞋,之前忙着玩的童鞋,之前忘记做毕业设计的童鞋都开始忙碌起来了。奈何,一下手就慌乱。以至于在接近别人项目时被开发环境挡住了前进的步伐。其中几个童鞋被新版IDEA创建JavaWeb项目给难住了。在此,以示例形式详细介绍IDEA创建JavaWeb项目的过程及其主要步骤。……………

    2022年9月20日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号