【仿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
相关推荐
Bs_MoneyMagnet3 分钟前
基于springboot+vue的非遗物质文化遗产系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
是Dream呀15 分钟前
Harness 工程:让 Agent 真正把任务做完
人工智能·分布式·缓存·agent
打工仔折腾 AI27 分钟前
Prometheus 告警推钉钉:从单群 Webhook 到跨网络 Alertmanager 实战
人工智能·后端·python·性能优化
console.log('npc')36 分钟前
06 — Model 层:数据模型与操作
前端·后端·node.js·express
yt004yt39 分钟前
绿岛数字化平台搭建:VOCs 监测与能碳数据一体化方案
大数据·分布式
aramae1 小时前
模拟实现memset()(C语言)
c语言·开发语言·后端
2501_933923251 小时前
Spring Bean作用域揭秘:单例、原型、请求与会话的区别
java·后端·spring·java-ee
傲世仙尊1 小时前
IO流起步-从fopen到文件描述符fd
linux
Rabitebla1 小时前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法
人工智能培训2 小时前
大语言模型:从语言理解到通用智能的跃迁
linux·服务器·前端·人工智能