仿RabbitMQ实现消息队列(一)--项目介绍
消息队列
- 介绍
- 开发环境
- 技术支持
- 安装
介绍
在并发编程中,有一种特殊的队列叫阻塞队列,一般可以用来实现生产者-消费者模型。生产者生产数据到队列中,消费者取出数据进行处理。它存在诸多好处:
- 解耦合 支持开发 支持忙闲不均 削峰填谷
举个例子:食堂托盘架
1、后厨=>生产者 2、同学=>消费者 3、托盘架最多10个->有界容量
4、后厨看到架子满了->阻塞(休息),等同学拿走一个才被叫醒
5、同学发现架子空了->阻塞(休息),等后厨放新托盘才被叫醒
整个过程中:
- 没有人原地转圈(cpu 0%空转)
- 不会出现“发现架子空了”或“空架子却硬拿的错乱->这就是阻塞队列要干的全部事情
在实际后台开发中,尤其是分布式系统里,跨主机之间使用生产者-消费者模型,是非常普遍的需求。因此,我们通常会把阻塞队列封装成一个独立的服务器,并且赋予其丰富的功能。这样的服务器程序称为消息队列(Message Queue,MQ)。例如常见的消息队列:RabblitMQ Kafka RocketMQ ActiveMQ
开发环境
- Linux(Ubuntu-22.04)
- vscode/vim
- g++/gdb
- Makefile
技术支持
- 开发诸语言:C++
- 序列化框架:protobuf二进制序列化
- 网络通信:
自定义应用层协议+muduo库:对tcp长连接的封装,并且使用epoll事件驱动模式,实现高并发服务器与客户端 - 源数据信息数据库:SQLite3
- 单元测试框架:Gtest
安装
安装wget
sudo apt install wget
