首页 > 其他分享 >RabbitMQ、RocketMQ、Kafka对比(消息组件的作用)

RabbitMQ、RocketMQ、Kafka对比(消息组件的作用)

时间:2024-05-28 23:29:43浏览次数:25  
标签:处理 写入 RabbitMQ Kafka 消息 组件 数据 RocketMQ 刷盘

在高并发的系统中,消息组件是最为常见的一款应用

对比

RacketMQ要比RabbitMQ性能高,但是不合适进行日志数据的采集(大数据采集最好别用)

利用消息组件可以有效地实现数据缓冲的处理操作,例如:现在有一个抢购系系统,是需要考虑高并发状态下的用户请求正常处理问题

服务器一旦接收远超过访问量的并发访问时,服务器可能会宕机,此时最佳的做法就是使用消息组件。

用户发出的消息由消息系统立即回应,但消息并非立即处理,而是进入到了消息系统中等待其他相关子系统处理。

这样一来就可以极大程度减少服务器处理时间,也可以提高项目的吞吐量,起到一个业务操作缓冲功能,而这就是消息组件的重要作用。

 在整个的消息组件的处理流程之中需要提供有消息的生产者以及消息的消费者,两个不同的端点,这两端之中基于消息队列进行管理(Java基础学习的队列结构、或者是J.U.C之中学习过延迟队列)。
消息组件是一种基于队列处理模式的服务端应用,在消息组件中分为消息生产者与消息消费者两个处理终端。不管生产者生产了多少个消息,这些消息都会保存在消息组件之中,可以很好的实现削峰填谷的处理效果,避免大规模用户请求所带来的服务瘫痪等相关问题的出现。所有保存在消息组件中的消息数据可以依据自身的业务逻辑需要由消费端按顺序进行处理,这样就可以保证整个业务处理逻辑的可靠性以及服务运行的稳定性,同时基于消息处理机制的方式还可以使得各种第三方平台的接入更加的方便。

 

落盘主要是为了保证数据持久化,这样即使服务器出现了宕机也不会导致数据丢失,但是由于IO的限制,导致处理性能较差。


刷盘会将数据先写入到内存缓冲区之中,而后由操作系统决定何时写入到磁盘之中进行持久化存储,但是一旦出现服务宕机时,那些保存在内存中未写入的数据就有可能丢失,由于此种形式主要对内存进行读写,处理性能较高。
    ·同步刷盘(SYNC_FLUSH):当数据写入到缓存后立刻刷盘,在保证刷盘成功的前提下进行客户端响应,此种操作拥有较高的数据可靠性;
    ·异步刷盘(ASYNC_FLUSH):写入处理速度快,吞吐量大,缓存数据积累到一定时快速写入,但是不能够保证数据的可靠性;

标签:处理,写入,RabbitMQ,Kafka,消息,组件,数据,RocketMQ,刷盘
From: https://blog.csdn.net/weixin_74027659/article/details/139279456

相关文章

  • kafka多线程顺序消费
    一、单线程顺序消费为了避免有的小伙伴第一次接触顺序消费的概念,我还是先介绍一下顺序消费是个什么东西。双十一,大量的用户抢在0点下订单。为了用户的友好体验,我们把订单生成逻辑与支付逻辑包装成一个个的MQ消息发送到Kafka中,让kafka积压部分消息,防止瞬间的流量压垮服务。那么......
  • kafka解决重复消费问题
    Kafka避免消息重复消费通常依赖于以下策略和机制:  总结就是通过消费者组+手动提交偏移量+处理消息的幂等性(数据库redis分布式锁等)1.ConsumerGroupIDKafka使用ConsumerGroupID来跟踪每个消费者所读取的消息。确保每个消费者都具有唯一的GroupID。如果多个消费者属......
  • kafka 保证消息有序性
    具体需要从生产者和消费者两个方面来讲:生产者:1.分区机制:Kafka的核心机制之一是分区(Partition)。每个主题(Topic)可以被分割成多个分区,而消息在发布时会被追加到特定的分区中。在每个分区内部,消息是按照它们被追加的顺序来存储的,因此保证了分区内的消息顺序性。 2.分区器:生......
  • docker 安装 rocketmq 5.2.0
    sudomkdir-p/opt/rocketmq/conf/brokersudomkdir-p/opt/rocketmq/conf/namesrvsudomkdir-p/opt/rocketmq/data/broker###nameservice.conflistenPort:9876storePathRootDir:/opt/rocketmq-5.2.0/store###broker.conf#集群名称brokerClusterName=Default......
  • springboot整合Kafka的快速使用教程
        目录一、引入Kafka的依赖二、配置Kafka三、创建主题1、自动创建(不推荐)2、手动动创建四、生产者代码五、消费者代码 六、常用的KafKa的命令    Kafka是一个高性能、分布式的消息发布-订阅系统,被广泛应用于大数据处理、实时日志分析等场景。S......
  • 【C++】开源:RabbitMQ安装与配置使用(SimpleAmqpClient)
    ......
  • SpringBoot-kafka集成
    代码运行版本springboot.version=2.7.7spring-kafka.version=2.8.111POM<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <!--springboot依赖管理中有kafka的预管理版本,这里不用写版本就可以--> <v......
  • 配置RabbitMQ
    配置:1.1RabbitMQ集群环境搭建和环境变量:每台服务器安装RabbitMQ,下载地址:https://www.rabbitmq.com/docs/install-windows#installer环境变量Path 值添加:rabbitmq安装目录的sbin目录1.2安装Erlang和配置环境变量每台服务器安装Erlang,下载地址:https://www.erlang.org/downloa......
  • RabbitMQ(python)
     一、认识MQMQ全称为MessageQueue消息队列(MQ)是一种应用程序对应用程序的通信方法。MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。这样发布者和使用者都不用知道对方的存在。生产者消费者模式是通过一个容器来解决生......
  • MQ和RabbitMQ
    一、微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。Feign调用就属于同步方式,虽然调用可以实时得到结果,但存在下面的问题:1.耦合度高2.性能下降3.浪费资源4.级联失败.总结:同步调......