HTTP协议级消息队列服务组件 UCMQ

GPLv2
C/C++
Linux
2013-06-08
红薯
UCMQ 正在参加 2019 年度最受欢迎开源中国软件评选,请投票支持!
UCMQ 在 2019 年度最受欢迎开源中国软件评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票赢奖品
已投票

UCMQ是一款轻量的HTTP协议级消息队列服务组件,项目的最初原型来自“张宴”的HTTPSQS

基本特性:

  • 支持标准的HTTP协议( GET/POST方法),支持长连接(keep-alive);
  • 请求响应非常快速,入队列、出队列速度超过10000次/秒;
  • 每个UCMQ实例支持多队列,队列通过操作接口自动创建;
  • 单个队列默认限制存储100w未读消息,可以不限制(非必要建议限制);
  • 可以在不停止服务的情况下便捷地修改单个队列的属性(大小限制/只读锁/延时队列/同步频率);
  • 可以实时查看队列属性(入队列数量、出队列数量、未读消息数量、消息积压数量)。
  • 每个队列有独立的数据文件易管理易搬迁。

 

常见部署:

UCMQ逻辑架构中通常会涉及到三个角色:生产者(producer)/异步消息队列(UCMQ)/消费者(consumer),而三者间都以http协议作为通讯方式,如下图:

逻辑部署图

【UCMQ部署逻辑架构图】

【说明】 在整个部署架构中“生产者”和“消费者”都被视为UCMQ的客户端。“生产者”和“消费者”通过设定的负载均衡机制访问UCMQ服务端。每个客户端(生产 者/消费者)均可注册一个或多个服务端(在客户端配置文件添加每个UCMQ服务端监听地址),如果注册多个则可以“业务容灾”和“负载均衡”。

内部结构: 

MQ内部模块图(主备)

【UCMQ内部结构图】

 【说明】

控制模块:负责UCMQ内部流程的控制;

主从复制模块:将数据变更使用binlog方式同步到备机实现容灾(本版本暂不实现);

http协议处理模块:http处理模块负责http协议的解析和封装;

libevent网络事件驱动模块:负责异步事件的接收和分发;

MQ队列管理模块:管理所有队列的rtag信息和队列使用状态信息;

数据存储模块:负责消息持久化(当前数据文件mmap到缓存,所以持久化由系统 辅助完成),清理垃圾数据文件(一个队列中可有多个文件);负责准确和完整的存/取队列的rtag信息。

存储设计

由于HTTP_SQS项目是基于TC存储数据,众所周知TC的数据文件是从头开始map到缓存的,由于数据量的扩大不能被缓存的数据将很大程度上影 响服务的性能和稳定性。所以UCMQ摒弃了TC,使用日志文件方式存储消息,数据缓存被顺序读取至内存中,且缓存区域随读写指针移动,这样既节省了内存使 用也保证了性能。设计原理如图: 

数据存储模块图

【UCMQ存储设计图】

加载中

评论(6)

红薯
红薯
来自UC的HTTP消息队列服务组件 —— UCMQ
鉴客
鉴客
这个速度的限制会不会更多是在 HTTP 这层上呢? UCMQ
Howard.L.Huang
Howard.L.Huang
选择HTTP的理由是? UCMQ
dfar2008
dfar2008
这图是用什么软件画的? UCMQ
西水源头
西水源头
靠谱 UCMQ
Jorben
Jorben
比“张宴”的HTTPSQS 好在哪些地方呢? UCMQ

暂无资讯

1
回答
关于UCMQ数据可靠性的问题

@shaneyuan 你好,想跟你请教个问题:UCMQ支持主从同步吗?主从同步支持同步双写吗?

2014/09/02 16:24
5
回答
消息队列如何选型,各有什么优缺点,和适用场景

,想知道这几个的优缺点和适用场景! 求指导。

2014/05/12 16:10
2
回答
UCMQ客户端php代码如何实现多实例负载均衡

@shaneyuan 你好,想跟你请教个问题:UCMQ客户端php代码如何实现多实例负载均衡

2013/07/12 22:41
1
回答
ucmq多实例负载均衡

@shaneyuan 你好,想跟你请教个问题: 博主的博客原文: 每个客户端(生产 者/消费者)均可注册一个或多个服务端(在客户端配置文件添加每个UCMQ...

2013/07/17 18:56
73
回答
OSChina 第 37 期高手问答 —— 消息队列服务

OSCHINA 本期高手问答我们请来了 @shaneyuan 为大家解答关于消息队列服务应用和开发方面的问题。 @shaneyuan 现就职于广州 UC ...

2013/06/17 10:51

没有更多内容

加载失败,请刷新页面

没有更多内容

UCMQ FAQ

此文主要记录和整理了UCMQ项目在“高手问答”中大家提到的问题。如有错漏请指正。谢谢! 源博客地址:http://tech.uc.cn/?p=1344 项目地址:https://github.com/ucweb/ucmq 使用指南:http:...

2013/06/17 14:16
3.5K
2
轻量级消息队列

1. UCMQ简介 UCMQ是一款支持简单HTTP协议的轻量级消息队列服务,基本特性如下: l 支持HTTP协议的GET/POST方法,支持长连接(keep-alive); l 请求响应非常快速,入队列、出队列速度超过100...

2013/06/27 11:26
2.3K
0
支撑高并发业务的开源项目精选(不断更新中)

Web服务器: Nginx ----------- 动态脚本语言: PHP/Python ----------- WEB缓存系统: Varnish ----------- 负载均衡: HAProxy ----------- NoSQL及K/V缓存系统: Memcached/Redis/MongoD...

2013/12/29 16:42
520
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部