去哪儿网正式开源内部使用的消息中间件 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • webpack基本配置项_webpack配置文件详解

    webpack基本配置项_webpack配置文件详解前言上篇我们已经配置好了本地开发服务器,但是配置的相对比较凌乱,一个文件中有些是开发时用到的配置,有些是生成时用到的配置,有些是开发和生成都要用到的配置,所以我们这里把环境分为3个环境webpac

    2022年7月31日
    6
  • win10打印服务无法启动(运行时错误automation)

    这是3/11号遇到的问题,微软更新了一个叫KB5009543的补丁之后,电脑的打印功能就一直打印不了,刚开始检查以为打印机脱机或者驱动没安装,检查之后发现毫无作用,还是提示操作无法完成。到电脑控制面板-打印机设备查看所有连接过的打印机都是灰色的。我的解决方案:1、卸载掉所有kb5开头的补丁。2、运行输入services.msc按回车找到打印服务,重新启动打印服务程序。3、找到电脑C磁盘,C:\Windows\System32\spool找到这个路径下,把里面文件全部删掉。3,重新安装一遍对

    2022年4月18日
    114
  • 海康威视 – 萤石云开放平台 js 版

    海康威视 – 萤石云开放平台 js 版

    2021年5月25日
    375
  • python自动化办公——python操作Excel、Word、PDF集合大全[通俗易懂]

    python自动化办公——python操作Excel、Word、PDF集合大全[通俗易懂]Python操作Word、Excel、PPT、PDF\、复杂文件、通信软件(微信、邮件、飞书、钉钉)、图片目录  章节一:python使用openpyxl操作excel    1、openpyxl库介绍    2、python怎么打开及读取表格内容?       1)Excel表格述语       2)打开Excel表格并获取表格名称       3)通过sheet名称获取表格       4)获取表格的尺寸大小       5)获取表格…….

    2022年10月12日
    1
  • 精雕软件怎么把图片转成灰度图_bmp灰度图怎么转精雕浮雕图和做刀路?[通俗易懂]

    精雕软件怎么把图片转成灰度图_bmp灰度图怎么转精雕浮雕图和做刀路?[通俗易懂]1、文件–输入–点阵图像(选择灰度图,bmp格式的)2、绘制–绘制出一个你需要做的图案的形状,注意计算比例尺3、用你绘制的图形来截取灰度图,截取你要的图案部分,截取的部分就是你要做出来的路径部分,如果要用到好几张图的元素的话你就多导入几张图,然后拼接图案。做的过程中可以切换显示模式来看看渲染的效果。4、艺术曲面–图像纹理–位图转网格–图形聚中5、刀具路径–路径向导–根据你的各种不同…

    2022年6月20日
    42
  • laravel 中first和find区别(总结一)

    laravel 中first和find区别(总结一)

    2021年11月10日
    49

发表回复

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

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