Welcome to 9ilk's Code World

(๑•́ ₃ •̀๑) 个人主页: 9ilk
(๑•́ ₃ •̀๑) 文章专栏: 项目
本篇博客主要是对仿RabbitMQ消息队列这个组件项目的总体介绍。
为什么做这个项目
之前接触类似消息队列的概念,主要是在学习生产者消费者模型中了解到的阻塞队列。在学习分布式系统的时候,发现消息队列的应用较为广泛,它可以作为跨主机之间使用的生产者消费者模型,其中业界有不少成熟的消息队列中间件,比如RabbitMQ,Kafka,RocketMQ等,本项目主要是用来对消息队列内部主要工作和设计流程进行学习的一个组件项目。
**消息队列(Message Queue,MQ)**其实就是把阻塞队列封装为一个独立的服务器程序,并且赋予更丰富的功能,它主要用于异步传输数据,允许程序应用程序通过发送和接收消息来进行解耦、异步和可靠的通信。它有如下的好处:
- **异步:**发送方不需要等待接收方处理完成,有利于提升系统的响应速度。
- 解耦:发送方和接收方不直接依赖,系统更容易扩展和维护。
- 削峰填谷:高并发时,消息积压在队列中,后端系统可以慢慢处理,防止崩溃。
- 可靠性:消息可持久化,防止数据丢失。
技术栈
- 开发环境
- Linux(Ubuntu-22.04)
- VSCode
- g++ / gdb
- Makefile
- C++11
- 关键技术
- 编程语言:C++
- 序列化框架:Protobuf二进制序列化
- 网络库:Muduo库
- 源数据信息数据库:SQLite
- 单元测试框架:GTest
- C++11异步操作技术:future/async/packaged_test/promise
项目相关环境依赖
- 安装基础工具
- 安装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
- 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
- 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
- SQLite安装
cpp
sudo apt-get install sqlite3 libsqlite3-dev
sqlite3 --version
- GTest安装
bash
sudo apt-get install libgtest-dev