项目简介
本项目是基于C++的分布式队列服务系统,提供支持优先级队列、消息确认机制、高可用复制等功能的消息队列服务。系统采用分布式架构,数据在多节点自动复制,通过master节点自动选举实现高可用,客户端可连接任意节点发起请求,请求会自动转发至master节点处理。
项目的主要特性和功能
- 支持TCP/UDP协议,可通过这两种协议进行消息的生产、消费和确认,数据格式为JSON。
- 支持消息的最多处理一次和最少处理一次语义,保障消息处理的可靠性。
- 支持消息的延迟处理、重试机制和有效期控制,满足不同业务需求。
- 以集群方式运行,数据在多节点间自动复制,少于一半节点失效时,服务不受影响且数据不丢失。
- 采用类Raft算法进行节点选举,确保集群高可用;节点间通过递增的trans_id进行数据同步,保证数据一致性。
- 支持多个真实队列绑定形成虚拟队列,简化消息生产操作。
安装使用步骤
编译安装
bash
$ make && make install
编译后的程序和配置文件生成在./deploy
目录下。
配置文件
编辑config.json
文件,配置日志前缀、日志级别、节点类型、节点ID、服务IP和端口、队列大小、队列日志容量、同步频率等参数。示例如下:
json
{
"log_prefix": "queue_server",
"log_level": 3,
"node_type": 10,
"node_id": 1,
"host": "0.0.0.0",
"port": 1111,
"queue_size": 100000,
"queue_log_size": 100000,
"queue_sync_rate": 3000,
"forward_request": 1,
"cluster_node_list": [
{"node_id": 1, "host": "127.0.0.1", "port": 1101},
{"node_id": 2, "host": "127.0.0.1", "port": 1102},
{"node_id": 3, "host": "127.0.0.1", "port": 1103}
],
"virtual_queue_list": [
{"name": "test", "queue_list": ["test1", "test2"]}
]
}
启动服务
在部署的服务器上启动服务,可通过命令行参数指定配置文件的路径。
使用客户端
通过提供的客户端API或命令行工具,发送请求到队列服务器,如生产消息、消费消息、确认消息等。请求和响应的格式为JSON对象。
监控和维护
使用监控工具或API监控队列状态、获取队列列表等,进行系统的维护和故障排查。
依赖
依赖protobuf 2.4及以上版本。
性能测试
系统在未优化的情况下,服务器TPS达到近14000/秒时,平均延迟在0.6毫秒。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】