littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于C++的分布式队列服务系统

项目简介

本项目是基于C++的分布式队列服务系统,提供支持优先级队列、消息确认机制、高可用复制等功能的消息队列服务。系统采用分布式架构,数据在多节点自动复制,通过master节点自动选举实现高可用,客户端可连接任意节点发起请求,请求会自动转发至master节点处理。

项目的主要特性和功能

  1. 支持TCP/UDP协议,可通过这两种协议进行消息的生产、消费和确认,数据格式为JSON。
  2. 支持消息的最多处理一次和最少处理一次语义,保障消息处理的可靠性。
  3. 支持消息的延迟处理、重试机制和有效期控制,满足不同业务需求。
  4. 以集群方式运行,数据在多节点间自动复制,少于一半节点失效时,服务不受影响且数据不丢失。
  5. 采用类Raft算法进行节点选举,确保集群高可用;节点间通过递增的trans_id进行数据同步,保证数据一致性。
  6. 支持多个真实队列绑定形成虚拟队列,简化消息生产操作。

安装使用步骤

编译安装

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】