写点什么

Java 开发基础不牢?什么是中间件?

发布于: 1 小时前

二、什么是协议



1、所谓协议

  1. 计算机底层操作系统和应用程序通讯时共同遵守的一组规定,只有遵循共同的约定和规范,系统和底层操作系统之间才能相互交流。

  2. 和一般的网络应用程序的不同之处是,协议主要负责数据的接收和传递,所以性能比较高。

  3. 协议对数据格式和计算机之间交换数据都必须遵守规范。

2、网络协议的三要素

  • 语义


语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。


  • 语法


语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。


  • 时序


时序是对事件发生顺序的详细说明。

3、为什么消息中间件不直接使用 http 协议?

  • 因为 http 请求报文头和响应报文头是比较复杂的,包含了 cookie,数据的加密解密,状态码,响应码等附加的功能,但是对于一个消息而言,我们并不需要这么复杂,也没有这个必要,因为 rabbitmq 只是负责数据传递、存储、分发就够了,一定要追求高性能,尽量简洁、快速。

  • http 大部分都是短连接,在实际的交互过程中,一个请求到响应很可能会被中断,中断以后也不会持久化,就会造成数据的丢失。这样就不适合在消息中间件中使用,因为消息中间件是一个长期的获取信息的过程,如果出现问题或故障,要进行持久化,目的是为了保证消息和数据的高可靠和高可用。

4、AMQP 协议

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


特性:


  1. 支持分布式事务

  2. 支持消息的持久化

  3. 高性能和高可靠的消息处理


三、消息队列持久化




持久化,简单的说就是将数据存入磁盘,而不是存在内存中,不会因为服务器的重启而消失,使护具能够永久保存。


rabbitmq 是以文件存储的形式进行持久化的。


四、消息的分发策略




rabbitmq 支持发布订阅、轮询分发、公平分发、重发、消息拉取。


五、消息队列高可用和高可靠




集群保证高可用;


持久化保证高可靠;


往期精彩内容:


Java知识体系总结

技术学习总结

学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。




最后面试分享

大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!




最后,若需要完整 pdf 版,可以点赞本文后点击这里免费领取

用户头像

还未添加个人签名 2021.07.29 加入

还未添加个人简介

评论

发布
暂无评论
Java开发基础不牢?什么是中间件?