Java学习路线:搬砖工逆袭Java架构师
简介:Java领域优质创作者、CSDN哪吒公众号作者✌ 、Java架构师奋斗者
扫描主页左侧二维码,一起学习、一起进步
欢迎点赞 收藏 ⭐留言
比如你有一个数据需要进行迁移或者请求并发过多的时候,比如你有10W的并发请求订单,我们可以在这些订单入库之前,把订单请求堆积到消息队列中,让它稳健可靠的入库和执行。
消息中间件负责数据的传递、存储和分发,所以性能上要高于普通服务和技术。
AMQP:全称Advanced Message Queuing Protocol,是高级消息队列协议。由摩根大通集团联合其他公司设计,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息中间件设计,基于此协议的客户端和消息中间件可传递消息,并不受客户端或中间件或不同的开发条件的限制。
特性:
在发送消息的过程中可能出现异常,或者网络抖动,故障等等原因,从而造成消息无法消费,比如用户下订单,消费MQ接受,订单系统出现故障,导致用户支付失败,那么这个时候就需要消息中间件支持消息重试机制策略。也就是支持:出现问题和故障的情况下,消息不丢失还可以进行重发。
ActiveMQ | RabbitMQ | Kafka | RocketMQ | |
发布订阅 | 支持 | 支持 | 支持 | 支持 |
轮询分发 | 支持 | 支持 | 支持 | / |
公平分发 | / | 支持 | 支持 | / |
重发 | 支持 | 支持 | / | 支持 |
消息拉取 | / | 支持 | 支持 | 支持 |
高可用是指产品在规定的条件和规定的时刻或时间内处于可执行规定功能的能力。
当业务量增加时,请求也过大,一台消息中间件服务器会触及硬件(CPU、内存、磁盘)的极限,一台消息服务器已经无法满足业务的需求,所以消息中间件必须支持集群部署,来达到高可用的目的。
(1)Master-slave主从共享数据的部署模式
生产者消费发送到Master节点,所有的都连接这个消息队列共享这块数据区域,Master节点负责写入,一旦Master挂掉,slave节点继续服务,从而形成高可用。
(2)Master-slave主从同步部署方式
这种模式写入消息同样在Master主节点上,但是主节点同步数据到slave节点形成副本,和zookeeper或者redis主从机制很类似。这样可以达到负载均衡的效果,如果消费者有多个这样就可以取不同的节点进行消费,消息的拷贝和同步会占用很大的宽带和网络资源,在后续的rabbitmq中也会使用。
(3)多主集群同步部署模式
(4)多主集群转发部署模式
如果插入的数据在broker1中,元数据信息会存储数据的相关描述和记录存放的位置。
它会对元数据信息进行同步,如果消费者在broker2中进行消费,但没有找到对应的信息,可以从对应的元数据信息中去匹配,如果得到了,可以直接返回,如果匹配不到,则转发这个请求到别的服务器询问,直到寻找到为止。
好处是减少数据资源的存储,不造成空间的浪费。
(5)Master-slave与Broker-cluster组合方案
总结:
1、通过协议来保证系统间数据解析的正确性。
2、通过持久化保证消息的可靠性。
联系作者,或者扫作者主页二维码加群,加入我们吧
往期精彩内容
Java学习路线总结❤️搬砖工逆袭Java架构师❤️(全网最强,建议收藏)
❤️连续面试失败后,我总结了57道面试真题❤️,如果时光可以倒流...(附答案,建议收藏)
10万字208道Java经典面试题总结(附答案,建议收藏)
MySql基础知识总结(2021版)
MySql基础知识总结(SQL优化篇)
【Vue基础知识总结 1】Vue入门
【100天算法入门 - 每日三题 - Day1】二叉树的中序遍历、两数之和、整数反转