1.什么是协议
我们都知道消息中间件负责数据的传递,存储和分发消费三个部分,数据的存储和分发过程中肯定要遵循某种约定成俗的规定,你是底层采用的TCP/IP还是UDP还是其他自定义的,而这些约定俗成的规范就是:协议
所谓协议是指:
1.计算机底层操作系统和应用程序通讯时共同遵守的一组规定,只有遵守相同的约定和规范,系统和底层操作系统之间才能相互交流
2.和一般的网络应用程序的不同,它主要负责数据的接受和传递,所以性能比较高
3.协议对数据格式和计算机之间交换数据都必须严格遵守
2.网络协议的三要素
1.语法。语法是用户数据和控制信息的结构和格式,以及数据出现的顺序
2.语义。语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息以及完成的动作和做出的响应
3.时序。时许是对事件发生顺序的详细说明
举例说明:http协议
1.语法:http协议规定了请求报文和响应报文的格式
2.语义:客户端主动发起请求称之为请求
3.时许:一个请求对应一个响应(一定是先有请求再有响应)
面试题:为什么消息中间件不使用 http协议呢?
1.因为 http 协议请求报文和响应报文头是比较复杂的,它包含了cookie,数据的加密解密,状态码,响应码等附加的功能,但是对于一个消息来说,并不需要这么复杂,也没有这个必要性,它只负责数据的传递,存储和分发,追求的是高性能,尽量简单
2.大部分情况下http协议是短链接的,在实际的交换过程中,一个请求到响应可能会中断,中断以后就不会进行持久化,造成请求的大量丢失,这样就不利于消息中间件的业务场景,因为消息中间件是一个长期获取消息的过程,出现问题和故障要对数据或消息进行持久化处理,为的就是保证消息的高可用和稳健的运行
3.AMQP协议
AMQP:是一种高级消息协议,由摩根大通联合其他公司共同设计。是一个提供统一消息服务的应用层标准高级协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端和消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言的限制
特点:
1.分布式消息事务支持
2.持久化支持
3.高性能和高可靠的消息处理优势
4.MQTT协议
MQTT:是由IBM开发的一个即时通讯协议,物联网系统架构的重要组成部分
特点:
1.轻量
2.结构简单
3.传输快,不支持事务
4.没有持久化设计
应用场景:
1.使用于计算能力有限
2.低带宽
3.网络不稳定的场景
5.OpenMessage协议
由阿里,雅虎和滴滴等公司联合进行开发的分布式消息中间件,流处理领域的应用开发标准
特点:
1.结构简单
2.解析速度块
3.支持事务和持久化
6.kafka协议
kafka协议是基于 TCP/IP 的二进制协议,消息内部是通过长度来分割的,有一些基本的数据类型组成
特点:
1.结构简单
2.解析速度块
3.无事务支持
4.有持久化设计
7.小结
协议:是基于TCP/IP基础上构建的一种约定速成的规范和机制,它主要的目的就是可以让客户端进行沟通和通讯,并且在这种规范下具有持久性,高可靠,高可用