消息中间件有哪些

消息中间件有哪些1 学习中间件的方式和技巧理解中间件在项目架构中的作用 以及各中间件的底层实现 可以使用一些类比的生活概念去理解中间件 使用一些主流图或者脑图的方式去梳理各个中间件在架构中的作用 尝试使用 Java 技术去实现中间件 静下来去思考中间件在项目中设计和使用的原因 如何找到对应的替代方案 尝试编写博客总结类同中间件技术的对比和使用场景 学会查看中间件的源码以及开源项目和博客 2 消息中间件的应用场景跨系统数据传递 高并发的流量削峰 数据的分发和异步处理 大数据分析与传递 分布式事务比

? Java学习路线:搬砖工逆袭Java架构师

 

? 简介:Java领域优质创作者?、CSDN哪吒公众号作者✌ 、Java架构师奋斗者

? 扫描主页左侧二维码,一起学习、一起进步

? 欢迎点赞 ? 收藏 ⭐留言 ?   

一、学习中间件的方式和技巧

  1. 理解中间件在项目架构中的作用,以及各中间件的底层实现
  2. 可以使用一些类比的生活概念去理解中间件
  3. 使用一些主流图或者脑图的方式去梳理各个中间件在架构中的作用
  4. 尝试使用Java技术去实现中间件
  5. 静下来去思考中间件在项目中设计和使用的原因
  6. 如何找到对应的替代方案
  7. 尝试编写博客总结类同中间件技术的对比和使用场景
  8. 学会查看中间件的源码以及开源项目和博客

二、消息中间件的应用场景

  1. 跨系统数据传递
  2. 高并发的流量削峰
  3. 数据的分发和异步处理
  4. 大数据分析与传递
  5. 分布式事务

比如你有一个数据需要进行迁移或者请求并发过多的时候,比如你有10W的并发请求订单,我们可以在这些订单入库之前,把订单请求堆积到消息队列中,让它稳健可靠的入库和执行。

消息中间件负责数据的传递、存储和分发,所以性能上要高于普通服务和技术。

三、消息中间件的核心组成部分

  1. 消息的协议
  2. 消息的持久化机制
  3. 消息的分发策略
  4. 消息的高可用,高可靠
  5. 消息的容错机制

四、网络协议的三要素

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

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

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

六、AMQP协议

AMQP:全称Advanced Message Queuing Protocol,是高级消息队列协议。由摩根大通集团联合其他公司设计,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息中间件设计,基于此协议的客户端和消息中间件可传递消息,并不受客户端或中间件或不同的开发条件的限制。

特性:

  1. 分布式事务支持
  2. 消息的持久化支持
  3. 高性能和高可靠的消息处理优势

七、消息的分发策略

1、MQ消息队列有如下几个角色

  1. 生产者
  2. 存储消息
  3. 消费者

在发送消息的过程中可能出现异常,或者网络抖动,故障等等原因,从而造成消息无法消费,比如用户下订单,消费MQ接受,订单系统出现故障,导致用户支付失败,那么这个时候就需要消息中间件支持消息重试机制策略。也就是支持:出现问题和故障的情况下,消息不丢失还可以进行重发。

2、消息分发策略的机制和对比

ActiveMQ RabbitMQ Kafka RocketMQ
发布订阅 支持 支持 支持 支持
轮询分发        支持 支持 支持 /
公平分发 / 支持 支持 /
重发 支持 支持 / 支持
消息拉取 / 支持 支持 支持

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

1、什么是高可用机制

高可用是指产品在规定的条件和规定的时刻或时间内处于可执行规定功能的能力。

当业务量增加时,请求也过大,一台消息中间件服务器会触及硬件(CPU、内存、磁盘)的极限,一台消息服务器已经无法满足业务的需求,所以消息中间件必须支持集群部署,来达到高可用的目的。

2、集群模式

(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. 要么消息同步
  3. 要么元数据共享

九、什么是高可靠机制

1、通过协议来保证系统间数据解析的正确性。

2、通过持久化保证消息的可靠性。

?联系作者,或者扫作者主页二维码加群,加入我们吧?

往期精彩内容

Java学习路线总结❤️搬砖工逆袭Java架构师❤️(全网最强,建议收藏)

❤️连续面试失败后,我总结了57道面试真题❤️,如果时光可以倒流…(附答案,建议收藏)

10万字208道Java经典面试题总结(附答案,建议收藏)

MySql基础知识总结(2021版)

MySql基础知识总结(SQL优化篇)

【Vue基础知识总结 1】Vue入门

【100天算法入门 – 每日三题 – Day1】二叉树的中序遍历、两数之和、整数反转

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231012.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 过滤器与拦截器详解图_过滤器 拦截器

    过滤器与拦截器详解图_过滤器 拦截器过滤器详解依赖于servlet容器,实现基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,过滤器一般用于登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换等等操作,便于代码重用,不必每个servlet中进行冗余操作。Java中的Filter并不是一个标准的Servlet,它…

    2022年8月23日
    7
  • GoLand 2021.5.1 x64激活码(最新序列号破解)

    GoLand 2021.5.1 x64激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    170
  • python对csv文件的读写

    python对csv文件的读写首先先简单说一下csv文件,csv的全称是Comma-SeparatedValues,意思是逗号分隔值,通俗点说就是一组用逗号分隔的数据。CSV文件可以用excel打开,会显示如下图所示:这个文件用notepad打开显示是这样的,这是它原始的样子:好了,下班我们来用python对csv文件进行读写操作1.读文件如何用Python像操作Excel一样提取其中的一列,即一个字段,利用Py…

    2022年7月21日
    18
  • 自编码器原理和实现

    自编码器原理和实现自编码器一、原理:将图像进行压缩,压缩的特征图能够保存原图像的主要特征,即根据特征图能够再次恢复原始图像。二、具体实现方法:自编码器分为两部分:编码和解码。编码可以使用任一卷积网络,可以根据训练数据选择,像MNIST手写数字可以选用简单的神经网络,比如LeNet。解码部分就是反向的神经网络,这样输入和输出图像大小相同,可以直接利用误差平方作为损失函数进行训练。三、实验结果:(1)生成20幅图像:当然这里肯定是要输入20幅原始图像,然后才能查看生成的图像,否则自己设定的隐空间变量生成的图像可能没有

    2022年10月1日
    4
  • php 一句话木马简介

    php 一句话木马简介一句话木马就是一段简单的代码,就这短短的一行代码,就能做到和大马相当的功能。一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。一句话木马工作原理<?php@eval($_POST[‘shell’]);?>这是php的一句话后门中最普遍的一种。它的工作原理是:首先存在一个名为shell的变量,shell的取值为HTTP的POST方式。Web服务器对shell取值以后,然后通过eval()函数执行shell里面的内容。实例:<?php@ev

    2022年5月11日
    87
  • linux配置ipv6静态路由,IPv6静态路由配置

    linux配置ipv6静态路由,IPv6静态路由配置IPv6 静态路由命令 R1 config ipv6unicast routing 启用 IPv6 路由 R1 config if ipv6address2 1111 1 64 手工配置 IPv6 地址 R1 config if ipv6address2 1111 1 64eui 64 自动配置 IPv6 地址 R1 config ipv6route200 2323 6

    2025年9月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号