内部已使用6年!去哪儿网重磅开源消息队列QMQ

发布日期:2018-12-12 浏览次数: 12543 次
  去哪儿网近日在 GitHub 上开源了其内部广泛使用的消息队列 (内部代号 QMQ),QMQ 自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。目前在公司内部日常消息 qps 在 60W 左右,生产上承载将近 4W+ 消息 topic ,消息的端到端延迟可以控制在 10ms 以内。
  一经开源,QMQ在GitHub上已经获得  799 个Star,201 个Fork(项目地址:https://github.com/qunarcorp/qmq) 
  QMQ主要提供以下特性:
  异步实时消息
  延迟/定时消息
  基于Tag的服务端过滤
  Consumer端幂等处理支持
  Consumer端filter
  死信消息
  结合Spring annotation使用的简单API
  提供丰富的监控指标
  接入OpenTracing
  分布式事务(即将开源)
  消息投递轨迹(即将开源)
  历史消息的自动备份(即将开源) 
  架构概览
  下图是QMQ中各组件及其交互图:
  meta server提供集群管理和集群发现的作用
  server 提供实时消息服务
  delay server 提供延时/定时消息服务,延时消息先在delay server排队,时间到之后再发送给server
  producer 消息生产者
  consumer 消息消费者
  根据图中的编号描述一下其交互过程:
  delay server 向meta server注册
  实时server 向meta server注册
  producer在发送消息前需要询问meta server获取server list
  meta server返回server list给producer(根据producer请求的消息类型返回不同的server list)
  producer发送延时/定时消息
  延时时间已到,delay server将消息投递给实时server
  producer发送实时消息
  consumer需要拉取消息,在拉取之前向meta server获取server list(只会获取实时server的list)
  meta server返回server list给consumer
  consumer向实时server发起pull请求
  实时server将消息返回给consumer
  快速入门
  发送消息
  消费消息
  消息队列是构建微服务架构很关键的基础设施,QMQ和市面上一些活跃的开源产品进行对比,还是有很大的一个优势,感兴趣的小伙伴们,可以尝试一下呢。
  转自:开源最前线
分享到:
×

微信扫一扫分享