【仿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
相关推荐
旺仔.29113 分钟前
僵死进程及Linux文件操作 详解
linux·运维·服务器
ShiJiuD66688899916 分钟前
mysql 基础笔记一
数据库·笔记·mysql
IMPYLH29 分钟前
Linux 的 comm 命令
linux·运维·算法
薛定谔的悦38 分钟前
嵌入式设备OTA升级实战:从MQTT命令到自动重启的全流程解析
linux·算法·ota·ems
睡醒的土豆39 分钟前
解决 Kafka 管理工具中文乱码问题
分布式·kafka
SimonKing1 小时前
全网爆火的OpenClaw保姆级教程Linux版,它来了。
java·后端·程序员
2501_926978331 小时前
“术“与“道“的平衡---“缺失“与“完整”的统一
经验分享·笔记·ai写作
智者知已应修善业1 小时前
【51单片机用两个定时计数器级联实现定时】2023-04-12
c语言·经验分享·笔记·算法·51单片机
青柠代码录1 小时前
【Linux】常用命令:sort
后端