屏蔽操作系统的复杂性,屏蔽技术之间的局限性,使框架更加灵活。
4、什么时候使用中间件
选择中间件的时候,一定是业务的驱使,项目的驱动,一定要思考到底要不要使用,不要盲目的选择与跟从,如果使用不当,则会造成学习成本的浪费、人员结构的复杂化、维护和服务器成本的加剧。
MySQL其实就是一个应用广泛的中间件。
二、什么是协议
1、所谓协议
-
计算机底层操作系统和应用程序通讯时共同遵守的一组规定,只有遵循共同的约定和规范,系统和底层操作系统之间才能相互交流。
-
和一般的网络应用程序的不同之处是,协议主要负责数据的接收和传递,所以性能比较高。
-
协议对数据格式和计算机之间交换数据都必须遵守规范。
2、网络协议的三要素
- 语义
语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
- 语法
语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。
- 时序
时序是对事件发生顺序的详细说明。
3、为什么消息中间件不直接使用http协议?
-
因为http请求报文头和响应报文头是比较复杂的,包含了cookie,数据的加密解密,状态码,响应码等附加的功能,但是对于一个消息而言,我们并不需要这么复杂,也没有这个必要,因为rabbitmq只是负责数据传递、存储、分发就够了,一定要追求高性能,尽量简洁、快速。
-
http大部分都是短连接,在实际的交互过程中,一个请求到响应很可能会被中断,中断以后也不会持久化,就会造成数据的丢失。这样就不适合在消息中间件中使用,因为消息中间件是一个长期的获取信息的过程,如果出现问题或故障,要进行持久化,目的是为了保证消息和数据的高可靠和高可用。
4、AMQP协议
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。
特性:
-
支持分布式事务
-
支持消息的持久化
-
高性能和高可靠的消息处理
三、消息队列持久化
持久化,简单的说就是将数据存入磁盘,而不是存在内存中,不会因为服务器的重启而消失,使护具能够永久保存。
rabbitmq是以文件存储的形式进行持久化的。
四、消息的分发策略
rabbitmq支持发布订阅、轮询分发、公平分发、重发、消息拉取。
五、消息队列高可用和高可靠
集群保证高可用;
持久化保证高可靠;
往期精彩内容:
最后
做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。
更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务
如何获得这套优质的资料呢?
52105187)]
[外链图片转存中…(img-4wxKI5QQ-1628152105189)]
[外链图片转存中…(img-cMseAf8Y-1628152105191)]
[外链图片转存中…(img-Ebdmywha-1628152105193)]
如何获得这套优质的资料呢?