【仿RabbitMQ的发布订阅式消息队列】--- 介绍

Welcome to 9ilk's Code World

(๑•́ ₃ •̀๑) 个人主页: 9ilk

(๑•́ ₃ •̀๑) 文章专栏: 项目


本篇博客主要是对仿RabbitMQ消息队列这个组件项目的总体介绍。

为什么做这个项目

之前接触类似消息队列的概念,主要是在学习生产者消费者模型中了解到的阻塞队列。在学习分布式系统的时候,发现消息队列的应用较为广泛,它可以作为跨主机之间使用的生产者消费者模型,其中业界有不少成熟的消息队列中间件,比如RabbitMQ,Kafka,RocketMQ等,本项目主要是用来对消息队列内部主要工作和设计流程进行学习的一个组件项目。

**消息队列(Message Queue,MQ)**其实就是把阻塞队列封装为一个独立的服务器程序,并且赋予更丰富的功能,它主要用于异步传输数据,允许程序应用程序通过发送和接收消息来进行解耦、异步和可靠的通信。它有如下的好处:

  • **异步:**发送方不需要等待接收方处理完成,有利于提升系统的响应速度。
  • 解耦:发送方和接收方不直接依赖,系统更容易扩展和维护。
  • 削峰填谷:高并发时,消息积压在队列中,后端系统可以慢慢处理,防止崩溃。
  • 可靠性:消息可持久化,防止数据丢失。

技术栈

  1. 开发环境
  • Linux(Ubuntu-22.04)
  • VSCode
  • g++ / gdb
  • Makefile
  • C++11
  1. 关键技术
  • 编程语言:C++
  • 序列化框架:Protobuf二进制序列化
  • 网络库:Muduo库
  • 源数据信息数据库:SQLite
  • 单元测试框架:GTest
  • C++11异步操作技术:future/async/packaged_test/promise

项目相关环境依赖

  1. 安装基础工具
  • 安装wget
bash 复制代码
sudo apt-get install wget 
  • 安装lszrz传输工具
cpp 复制代码
sudo apt-get install lrzsz
  • 安装g++编译器
cpp 复制代码
sudo apt-get install g++ gcc
  • 安装构建工具make和调试工具gdb
cpp 复制代码
sudo apt-get install make
sudo apt-get install gdb
  • 安装git
bash 复制代码
sudo apt-get install git
  • 安装cmake
cpp 复制代码
sudo apt-get install cmake
  1. protobuf安装
  • 安装Protobuf依赖库
cpp 复制代码
sudo apt-get install autoconf automake libtool curl unzip gzip
  • 下载Protobuf包,并编译安装
bash 复制代码
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.20.2/protobuf-all-3.20.2.tar.gz
//解压缩
tar -xzf protobuf-all-3.20.2.tar.gz 
//切换目录
cd protobuf-3.20.2/
//环境检测
./autogen.sh
//配置安装路径 默认安装在/usr/local目录,lib、bin都是分散的
./configure
//开始编译
make
//开始安装
sudo make install
//确认是否安装成功
protoc --version
  1. muduo库安装
  • 通过git下载Muduo库的源码或使用备用下载链接
cpp 复制代码
git clone https://github.com/chenshuo/muduo.git
wget https://gitee.com/hansionz/mq/raw/master/resource/muduo-master.zip
  • 安装依赖环境,并运行脚本编译安装
cpp 复制代码
sudo apt-get install libz-dev libboost-all-dev
./build.sh
./build.sh intsall //库文件打包到一起

//测试
#切换编译目录 bin
root@VM-8-14-ubuntu:~/build/release-cpp11# cd bin
#运行protobuf-demo服务端
./protobuf_server  9091
#运行protobuf-demo服务端
./protobuf_client  0.0.0.0 9091    
  1. SQLite安装
cpp 复制代码
sudo apt-get install sqlite3 libsqlite3-dev
sqlite3 --version
  1. GTest安装
bash 复制代码
sudo apt-get install libgtest-dev
相关推荐
Tech有道3 小时前
字节跳动面试:Redis 数据结构有哪些?分别怎么实现的?
后端·面试
Tech有道3 小时前
滴滴面试题:一道“轮询算法”的面试题,让我意识到自己太天真了
后端·面试
golang学习记3 小时前
Go 1.25 Flight Recorder:线上偶发问题的“时间回放”利器
后端
馨谙3 小时前
OpenSSH 安全配置核心概念解析
linux·服务器·网络
半桔3 小时前
【IO多路转接】IO 多路复用之 select:从接口解析到服务器实战
linux·服务器·c++·github·php
ZZHHWW4 小时前
Redis 主从复制详解
后端
ink@re4 小时前
Linux iptables:四表五链 + 实用配置
linux·运维·服务器
ZZHHWW4 小时前
Redis 集群模式详解(上篇)
后端
EMQX4 小时前
技术实践:在基于 RISC-V 的 ESP32 上运行 MQTT over QUIC
后端