【面试需了解之消息队列】RocketMQ、kafka、RabbitMQ概述

这篇具有很好参考价值的文章主要介绍了【面试需了解之消息队列】RocketMQ、kafka、RabbitMQ概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

消息队列说明:RocketMQ、kafka、RabbitMQ概述及关键概念

消息队列-Message Queue

概述

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量控制等问题。实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件

作用

  • 异构系统消息传递:上游系统C#>消息队列>下游系统Java
  • 基于“订阅发布”的一对多的数据分发:中国气象局==>消息队列==>网易、微博、微信
  • 削峰、限流、日志处理、流程跟踪:OA提供==>消息队列(限流)>公文系统>邮件服务商

几种消息队列中间件对比

  • ActiveMQ:出现最早,支持的功能多而不精
  • Kafka:吞吐量大==>大数据
  • RocketMQ:单个消息处理及时性高,响应快==>业务系统
  • RabbitMQ:延迟最低、基于erlang开发,并发能力极强

RocketMQ

概述

阿里开源的消息中间件产品,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点,性能强劲(零拷贝技术),支持海量堆积,在阿里内部进行大规模使用,适合在互联网与高并发系统中应用

关键概念

主题:Topic
  • RocketMQ的顶层存储,所有消息资源的定义都在主题内部完成,但主题是一个逻辑概念,并不是实际的消息容器
  • 主题内部由多个队列组成,消息的存储和水平扩展能力最终是由队列实现的,并且针对主题的所有约束和属性设置,最终也是通过主题内部的队列实现
消息队列:MessageQueue
  • 队列是消息存储和传输的容器,是消息的最小存储单元
  • 所有主题都是由多个队列组成,以此实现队列数量的水平拆分和队列内部的流式存储
消息:Message
  • 最小数据传输单元
  • 生产者将业务数据的负载和拓展属性包装成消息发送到服务端
  • 服务端按照相关语义将消息投递到消费端进行消费
生产者:Producer
  • 用来构建并传输消息到服务端的运行实体
  • 被集成在业务系统中,将业务消息按照要求封装成消息并发送到RocketMQ服务端
  • 生产者和主题的关系为多对多
消费者:Consumer
  • 用来接收并处理消息的运行实体
  • 被集成在业务系统中,从RocketMQ服务端获取消息,并将消息转化为业务可理解的信息,供业务逻辑处理
消费者分组:Consumer Group
  • RocketMQ系统中承载多个消费行为的消费者的负载均衡分组
  • 在RocketMQ中,通过消费者分组内初始化多个消费者实现消费性能的水平扩展以及高可用容灾

kafka

概述

  • 分布式、分区、多副本、多订阅者,基于zookeeper协调的消息队列系统

消息队列模式

  1. 点对点
    • 生产者发送一条消息到queue,只有一个消费者能收到
    • 一条消息只能被一个消费一次,消费者消费了某条数据后,该数据从消息队列中删除
  2. 发布-订阅模式
    • 生产者生产数据到一个topic中,消费者可以订阅一个或多个topic,消费者可以消费该topic中的所有数据。同一条数据可以被多个消费者消费,数据被消费后不会立马删除
    • 发布者发送到topic的消息,只有订阅了topic的订阅者才会收到消息

关键概念

节点-broker

Kafka集群包含一个或多个服务器,服务器节点称为broker

主题-Topic

每条发布到Kafka集群的消息都有一个类别,这个类别称为Topic。类似于数据库的表名

分片-partition

topic中的数据分割为一个或多个partition,每个topic至少有一个partition

生产者-Producer

生产者即数据的发布者,该角色将消息发布到Kafka的topic中,broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的segment

RabbitMQ

概述

高级消息队列协议:Advanced Message Queuing Protocol

开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据;用Erlang语言编写,基于AMQP协议

与SpringAMQP完美的整合,API丰富

集群模式丰富,表达式配置,HA模式,镜像队列模型文章来源地址https://www.toymoban.com/news/detail-497678.html

关键概念

服务应用:Server
  • 又称Broker,接受客户端的连接,实现AMQP实体服务
连接:Connection
  • 应用程序与Broker的网络连接
网络信道:Channel
  • 几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务
消息:Message
  • 服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body就是消息体内容
虚拟地址:Virtual host
  • 用于进行逻辑隔离,最上层的消息路由。一个Virtual host里面可以有若干个Exchange和Queue,同一个Virtual Host里面不能有相同名称的Exchange或Queue
交换机:Exchange
  • 接收消息,根据路由键转发消息到绑定的队列
绑定:Binding
  • Exchange和Queue之间的虚拟连接,binding中可以包含routing key
路由规则:Routing key
  • 一个路由规则,虚拟机可用它来确定如何路由一个特定消息

到了这里,关于【面试需了解之消息队列】RocketMQ、kafka、RabbitMQ概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RabbitMQ与RocketMQ:消息队列的两大强者对比

    在现代分布式系统中,消息队列已成为不可或缺的一部分,它们帮助我们在不同的服务之间实现异步通信、解耦和流量削峰。在众多消息队列中间件中,RabbitMQ和RocketMQ是两个备受瞩目的选项。本文将对它们进行深入对比,帮助大家根据实际需求选择合适的消息队列中间件。

    2024年04月28日
    浏览(26)
  • mq 消息队列 mqtt emqx ActiveMQ RabbitMQ RocketMQ

    十几年前,淘宝的notify,借鉴ActiveMQ。京东的ActiveMQ集群几百台,后面改成JMQ。 Linkedin的kafka,因为是scala,国内很多人不熟。淘宝的人把kafka用java写了一遍,取名metaq,后来再改名RocketMQ。 总的来说,三大原因,语言、潮流、生态。 MQ这种东西,当你的消息量不大的时候,用啥

    2024年02月12日
    浏览(44)
  • 了解ActiveMQ、RabbitMQ、RocketMQ和Kafka的特点

    ActiveMQ是一种基于JMS(Java消息服务)规范的消息中间件,由Apache基金会开发和维护 核心组件和特点: Broker(代理):ActiveMQ的核心组件是Broker,它负责接收、存储和路由消息,可以配置为单个实例或者集群,提供高可用性和可扩展性。 Producer(生产者)和Consumer(消费者):

    2024年02月07日
    浏览(35)
  • Kafka、RocketMQ、RabbitMQ如何保证消息的顺序消费?

    一、1个Topic(主题)只创建1个Partition (分区),这样生产者的所有数据都发送到了一个Partition (分区),保证了消息的消费顺序; 二、生产者在发送消息的时候指定要发送到哪个 Partition,这样同一个 Partition 的数据会被同一个消费者消费,从而保证了消息的消费顺序。 实现思路

    2024年02月09日
    浏览(43)
  • ActiveMQ、RabbitMQ、Kafka、RocketMQ消息中间件技术选型

    消息中间件是分布式系统中重要的组件之一,用于实现异步通信、解耦系统、提高系统可靠性和扩展性。在做消息中间件技术选型时,需要考虑多个因素,包括可靠性、性能、可扩展性、功能丰富性、社区支持和成本等。本文将五种流行的消息中间件技术:ActiveMQ、RabbitMQ、

    2024年02月11日
    浏览(44)
  • 【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka

    作者简介 前言 博主之前写过一个完整的MQ系列,包含RabbitMQ、RocketMQ、Kafka,从安装使用到底层机制、原理。专栏地址: https://blog.csdn.net/joker_zjn/category_12142400.html?spm=1001.2014.3001.5482 本文是该系列的清单综述,会拉通来聊一下三大MQ的特点和各种适合的场景。 目录 1.概述 1.1.M

    2024年02月09日
    浏览(47)
  • SpringBoot整合消息中间件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)

    消息的发送方:生产者 消息的接收方:消费者 同步消息:发送方发送消息到接收方,接收方有所回应后才能够进行下一次的消息发送 异步消息:不需要接收方回应就可以进行下一步的发送 什么是消息队列? 当此时有很多个用户同时访问服务器,需要服务器进行操作,但此

    2024年04月27日
    浏览(46)
  • kafka消息丢失面试题,RocketMQ消息丢失场景及解决办法

    互联网行业更新换代非常快,行业常态便是不断学习,因此这些主流技术你一个都不能落下! ①并发编程 Java并发编程是整个Java开发体系中最难以理解,但也是最重要的知识点之一,因此学习起来比较费劲,从而导致很多人望而却步,但是无论是职场面试还是高并发高流量的

    2024年03月17日
    浏览(40)
  • 消息中间件(MQ)对比:RabbitMQ、Kafka、ActiveMQ 和 RocketMQ

    前言 在构建分布式系统时,选择适合的消息中间件是至关重要的决策。RabbitMQ、Kafka、ActiveMQ 和 RocketMQ 是当前流行的消息中间件之一,它们各自具有独特的特点和适用场景。本文将对这四种消息中间件进行综合比较,帮助您在项目中作出明智的选择。 1. RabbitMQ 特点: 消息模

    2024年02月20日
    浏览(44)
  • 【深入浅出RocketMQ原理及实战】「消息队列架构分析」帮你梳理RocketMQ或Kafka的选择理由以及二者PK

    前提背景 大家都知道,市面上有许多开源的MQ,例如,RocketMQ、Kafka、RabbitMQ等等,现在Pulsar也开始发光,今天我们谈谈笔者最常用的RocketMQ和Kafka,想必大家早就知道二者之间的特点以及区别,但是在实际场景中,二者的选取有可能会范迷惑,那么今天笔者就带领大家分析一下

    2024年02月19日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包