1.什么是协议

我们都知道消息中间件负责数据的传递,存储和分发消费三个部分,数据的存储和分发过程中肯定要遵循某种约定成俗的规定,你是底层采用的TCP/IP还是UDP还是其他自定义的,而这些约定俗成的规范就是:协议

  1. 所谓协议是指:
  2. 1.计算机底层操作系统和应用程序通讯时共同遵守的一组规定,只有遵守相同的约定和规范,系统和底层操作系统之间才能相互交流
  3. 2.和一般的网络应用程序的不同,它主要负责数据的接受和传递,所以性能比较高
  4. 3.协议对数据格式和计算机之间交换数据都必须严格遵守

2.网络协议的三要素

  1. 1.语法。语法是用户数据和控制信息的结构和格式,以及数据出现的顺序
  2. 2.语义。语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息以及完成的动作和做出的响应
  3. 3.时序。时许是对事件发生顺序的详细说明

举例说明:http协议

  1. 1.语法:http协议规定了请求报文和响应报文的格式
  2. 2.语义:客户端主动发起请求称之为请求
  3. 3.时许:一个请求对应一个响应(一定是先有请求再有响应)

面试题:为什么消息中间件不使用 http协议呢?

  1. 1.因为 http 协议请求报文和响应报文头是比较复杂的,它包含了cookie,数据的加密解密,状态码,响应码等附加的功能,但是对于一个消息来说,并不需要这么复杂,也没有这个必要性,它只负责数据的传递,存储和分发,追求的是高性能,尽量简单
  2. 2.大部分情况下http协议是短链接的,在实际的交换过程中,一个请求到响应可能会中断,中断以后就不会进行持久化,造成请求的大量丢失,这样就不利于消息中间件的业务场景,因为消息中间件是一个长期获取消息的过程,出现问题和故障要对数据或消息进行持久化处理,为的就是保证消息的高可用和稳健的运行

3.AMQP协议

  1. AMQP:是一种高级消息协议,由摩根大通联合其他公司共同设计。是一个提供统一消息服务的应用层标准高级协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端和消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言的限制
  2. 特点:
  3. 1.分布式消息事务支持
  4. 2.持久化支持
  5. 3.高性能和高可靠的消息处理优势

4.MQTT协议

  1. MQTT:是由IBM开发的一个即时通讯协议,物联网系统架构的重要组成部分
  2. 特点:
  3. 1.轻量
  4. 2.结构简单
  5. 3.传输快,不支持事务
  6. 4.没有持久化设计
  7. 应用场景:
  8. 1.使用于计算能力有限
  9. 2.低带宽
  10. 3.网络不稳定的场景

5.OpenMessage协议

  1. 由阿里,雅虎和滴滴等公司联合进行开发的分布式消息中间件,流处理领域的应用开发标准
  2. 特点:
  3. 1.结构简单
  4. 2.解析速度块
  5. 3.支持事务和持久化

6.kafka协议

  1. kafka协议是基于 TCP/IP 的二进制协议,消息内部是通过长度来分割的,有一些基本的数据类型组成
  2. 特点:
  3. 1.结构简单
  4. 2.解析速度块
  5. 3.无事务支持
  6. 4.有持久化设计

7.小结

协议:是基于TCP/IP基础上构建的一种约定速成的规范和机制,它主要的目的就是可以让客户端进行沟通和通讯,并且在这种规范下具有持久性,高可靠,高可用