当前位置: 首页 > news >正文

第一章:项目简介

目录

第一节:项目介绍

第二节:整体设计思路

        2-1.服务器模块

                2-1-1.连接管理模块

                2-1-2.消费者管理模块

                2-1-3.虚拟机模块

                        2-1-3-1.交换机管理模块

                        2-1-3-2.队列管理模块

                        2-1-3-3.绑定管理模块

                        2-1-3-4.队列消息管理模块

        2-2.客户端模块

下期预告:


第一节:项目介绍

        该项目是一个简化版的仿RabbitMQ消息队列,其内部实现了消息队列服务器以及客户端的搭建,并支持不同主机间消息的发布与订阅、消息推送功能。

        项目所用到的技术:

        (1)基于muduo库实现的底层网络通信服务和客户端的搭建

        (2)基于protobuf协议的应用层协议接口

        (3)基于轻量数据库sqlite的数据持久化管理功能

        (4)基于AMQP模型(高级消息队列协议)实现整个消息队列模块的整合

        (5)使用gtest框架进行模块单元测试

第二节:整体设计思路

        消息队列是一个比较复杂的项目,它涉及的模块很多,但是它的每个功能模块化程度高、解耦程度高。所以只要将每个模块完成,做好单元测试,最后再整合所有模块,实现它也不是难事。然后我就一一介绍所需模块和每个模块的功能。

        2-1.服务器模块

        服务器模块就是提供服务的模块,它的功能是对收到的请求调用不同业务函数进行处理,它的构造如下:

                                        

        服务器模块的功能主要体现在它的3个子模块上。

                2-1-1.连接管理模块

        连接管理模块的功能是管理和服务器连接成功的所有连接,对于服务器来说,一个连接就是一个客户端,但是在AMQP中又把一个连接分成了多个信道(channel)。

        对于用户来说,一个channel就是一个连接,连接实现的功能channel都能实现,这是因为channel的底层也是使用连接来实现的,多个信道可以共用一个信道,就像进程对CPU的占用一样。

        信道的使用有诸多好处:

        (1)充分利用连接资源

       使用多个信道可以提高性能,因为它们可以在同一连接上共享底层网络连接。相比于为每个操作创建新的物理连接,使用信道可以减少网络开销和连接建立的时间。这种性能优化对于需要高效处理大量消息的应用程序来说尤为重要。

        (2)资源独立

        每个信道都具有独立的状态和资源隔离。这意味着一个信道上的操作不会影响其他信道,信道之间可以相互独立工作,不会相互干扰。这种资源隔离的特性有助于增强系统的稳定性和可靠性,因为一个信道上的问题不会导致其他信道或整个连接的中断。

        (3)容错性高

        如果一个信道上的操作出现错误,它不会影响其他信道。这有助于提高系统的容错性,因为一个故障的信道不会导致整个连接或应用程序的失败。这种错误处理的机制使得应用程序能够更加稳健地运行,即使在面对错误或异常情况时也能够保持一定的可用性。

        

        所以连接管理模块又由信道管理模块组成,它提供管理信道的诸多操作(信道的增删查)。实际上服务器不会自动增加信道,只有客户端增加一个信道时,服务器也会增加一个对应的信道,服务器和客户端的通信就依靠这两个信道完成。

                2-1-2.消费者管理模块

        消息队列肯定有一个保存各种消息的结构,这种结构叫队列,每个队列会保存属于自己的各种类型的消息。

        比如"音乐新闻"队列,就保存音乐相关消息;"体育新闻"队列,就保存体育相关消息。然后才能把这些消息推送给它们的订阅者,这里面的订阅者对于服务器来说就是消费者

        所以当一个消费者订阅了一个队列之后,就需要消费者管理模块将队列--消费者的映射保存起来,当该队列的新消息到来时,服务器才能找到这个队列的消费者,并把消息推送给这些消费者。

        当消费者取消订阅时,还需要把它从消费者管理模块中删除。 

        所以消费者管理模块提供的功能就是消费者的增、删、查。

                2-1-3.虚拟机模块

        虚拟机模块是最复杂的一个模块,它由交换机管理模块、队列管理模块、绑定管理模块、消息管理模块组成。

                        2-1-3-1.交换机管理模块

        要理解该模块的作用,首先要明确消息队列中,队列获得消息的流程:

        (1)生产者客户端发布消息        

        首先要创建一个信道,这个信道调用发布消息的函数将一条消息发布到服务器的交换机,此时该信道就是一个生产者。

        (2)交换机发布消息

        这条消息到服务器后,并不是直接给队列,而是先给到交换机,然后由交换机审核消息后将消息发送给交换机绑定的队列。

        例如有一个"新闻"队列和一个"文章"队列,都绑定了同一个交换机,当消息到来时,交换机将审核消息和所有和它绑定的队列,然后选择审核通过的队列发送这条消息。

        所以该模块的作用就是提供交换机的管理操作,包括交换机的增、删、查。

                        2-1-3-2.队列管理模块

        队列是保存消息的结构,但是该模块并不保存消息只保存队列的信息,当某个队列被声明时,它就将该队列的信息保存起来;某个队列被移除时,它就把该队列的信息删除。

        它相当于一个"凭证",即使某个队列的消息是存在的,但是只要该模块没有这个队列的信息,这个队列就是无效的(正常不会出现这种情况)。

        所以它的功能是提供队列信息的增删查。

                        2-1-3-3.绑定管理模块

        绑定管理模块用来保存交换机和队列的绑定信息,这样当交换机获得消息时,就从这个模块获取它的绑定信息,给绑定的、符合条件的队列发布消息。

        所以提供绑定信息的增删查即可。

                        2-1-3-4.队列消息管理模块

        这个模块才是真正保存各种消息的模块,它将队列与队列保存的消息建立起映射,并且每个队列都有一个文件保存自己的信息。

        它提供队列的增删查,还有指定队列消息的增删查。

        2-2.客户端模块

        客户端的实现就比服务器模块简单多了,只有一个信道管理模块。

        客户端只需要向服务器发送请求,只有收到订阅的消息后调用相应的函数就行了。

下期预告:

        介绍完消息队列后,需要一些类来辅助完成各种模块,这些辅助类包括:

        (1)日志宏函数:打印信息,帮助错误定位、信息提示

        (2)文件操作类:用于文件操作

        (3)sqlite数据库操作类:用于操作sqlite数据库

        (4)随机id生成类:用于给交换机、队列、消息等生成一个唯一的标识码

        (5)字符串切割类:将字符串安装某个字符切成多段,与交换机的消息审核有关

        (6)工作线程池

        然后还要使用protobuf定义一些属性。

相关文章:

  • 非结构化数据管理平台如何解决企业数据孤岛问题?
  • 物联网综合实训室建设方案的探讨(职业院校物联网综合实训室建设方案)
  • 朝天椒 USB 服务器解决投标CA盾异地连接
  • django框架使用
  • 希尔排序:突破插入排序的局限
  • 嵌入式开发:傅里叶变换(4):在 STM32上面实现FFT(基于STM32L071KZT6 HAL库+DSP库)
  • 【nginx】nginx.conf配置详解
  • 编写第一个 C++ 程序 – Hello World 示例
  • 【YOLOv8】YOLOv8改进系列(3)----替换主干网络之ConvNeXt V2
  • Nginx的安装和部署以及Nginx的反向代理与负载均衡
  • 芯旺微KF32A156芯片CANFD过滤配置
  • 【数据结构】顺序表和链表
  • PHP Zip 文件处理指南
  • 计算机毕设-基于springboot的人工智能领域复合型人才校企协同培养管理系统的设计与实现(附源码+lw+ppt+开题报告)
  • xcLeigh 博主:全栈领域优质创作者,博客专家
  • LabVIEW 中 codeGenEngine.llb 工具库
  • 简单理解Oracle中的latch
  • bat命令在b站下载单个音视频
  • 【GO】学习笔记
  • leetcode_动态规划/递归 509. 斐波那契数
  • 俄乌代表团抵达谈判会场
  • 淄博一酒店房间内被曝发现摄像头,当地警方已立案调查
  • 媒体评欧阳娜娜遭民进党当局威胁:艺人表达国家认同是民族大义
  • 商人运作亿元“茅台酒庞氏骗局”,俩客户自认受害人不服“从犯”判决提申诉
  • 4月份全国企业销售收入同比增长4.3%
  • 违法违规收集使用个人信息,爱奇艺、轻颜等65款App被点名