跳至主要內容

分布式消息中间件实践

微信公众号:储凡2023/2/23大约 7 分钟

分布式消息中间件实践

消息队列

中间件:非底层操作系统软件、非业务应用软件,不是直接给最终用户使用的,不能直接带来价值的软件统称为中间件

消息协议

协议:计算机术语中的协议,就是一个达成一致的并受规则支配的交互集合,例如计算机网络中的七层网络协议,http协议等-----> protocol

计算机领域中 ,只要涉及不同计算机之间要共同完成一件事情的时候,就肯定会有协议的存在,就好比我们说话、沟通用某种语言一样,不用的计算机之间必须要使用相同的语言才能够正常通信、交流

消息协议:用于实现消息队列功能时所涉及的协议。

按照是否向行业开放消息规范文档,可以将消息分为:

  • 开发协议(AMQP、MQTT、STOMP、XMPP等)
  • 私有协议

有些特殊框架(例如:Redis、Kafka、ZeroMQ)更具自身需要未严格遵循MQ规范,而是基于TCP/IP封装的一套协议,通过网络Socket接口进行传输,实现了MQ功能。【这里的协议可以理解为双方通信的一个约定】

AMQP协议

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。百度百科

目前AMQP协议的版本是用两个或者三个数字表示的,格式为:major-minor[-revision]major.minor[.revision],其中:

  • major:主版本号
  • minor:次版本号
  • revision:可选的修订版本号

都是可以用0~99之间的一个数字表示,100以上的数字都被保留下来了,用于内部测试和开发

例如:

  • RabbitMQ支持AMQP 0-9-1 协议
  • ActiveMQ、Apollo、Qpid支持AMQP 0-9-10 协议

一般来说,将AMQP分为三个部分:

  • 基础概念:内部定义的各组件及组件的功能说明
  • `功能命令:协议所定义的一系列的命令,应用程序可以基于这些命令来实现相应的功能。
  • 传输层协议:网络级协议,定义了数据的传输格式,消息队列的客户端可以基于这个协议与消息代理和AMQP的相关模型进行交互通信【包括:数据帧处理、信道复用、内容编码、心跳检测、数据表示和错误处理等。】

基础概念

核心组件的声明周期

更新日志

2024/7/29 15:43
查看所有更新日志
  • 5a2b2-feat: 移除markdown-cli模块,采用prettier校验文档格式
  • c0f2d-refactor: 升级vuepress相关版本,优化项目结构 (#137)
  • e6a79-feat: 大幅新增设计模式、Linux命令、ORM框架教程文档
  • b0275-feat(markdownlint-cli): 添加markdown文档校验,支持lint脚本自动格式化文档
  • 5f1e1-feat: 导航栏、侧边栏内容修改,新增目录对应的文档
  • b8caf-docs: 读书整理相关文档
  • 02ab1-style: 文档目录调整,修改mdEnhance配置
  • a23ce-refactor: 新增manuscript目录,优化文稿结构
  • 0ef50-docs: 新增一些文档,修复启动异常
  • e34c0-style(code): 代码风格eslint格式化,新增部分文档