首页 > 其他分享 >Kafka、RabbitMQ、RocketMQ差异

Kafka、RabbitMQ、RocketMQ差异

时间:2023-03-13 20:31:50浏览次数:30  
标签:队列 支持 Kafka 消息 RabbitMQ RocketMQ

消息中间件

消息中间件是分布式系统中重要的组件,本质就是一个具有接收消息、存储消息、分发消息的队列,应用程序通过读写队列消息来通信。

Kafka、RabbitMQ、RocketMQ差异_rocketmq

在电商中,如订单系统处理完订单后,把订单消息发送到消息中间件,由消息中间件将订单消息分发到下游子系统(如物流、积分、通知等)。订单系统和下游子系统通过消息中间件进行通信,减少他们之间的耦合,增加系统稳定性降低系统调用延迟。

Kafka、RabbitMQ、RocketMQ差异_消息中间件_02

概述

类别

简介特性

适用场景

Kafka

具有大规模、高可靠、高并发访问、可扩展

适用于日志采集、实时数据管道、流式数据处理、第三方解耦、流量削峰等场景

RabbitMQ

支持广播、事务消息、消息路由、死信队列、优先级队列

适用于秒杀、流控、系统解耦等场景

RocketMQ

提供顺序、延迟、定时、重投、死信、事务消息

适用于电商、金融等场景

对比分析

没有最好的技术,只有最合适的技术,每个消息中间件都有自己的优劣。

  • 性能

类别

QPS

Kafka

单机QPS能够达到百万级别,吞吐量比RabbitMQ要高出1\~2个数量级

RabbitMQ

单机QPS在万级别

RocketMQ

性能介于RabbitMQ与Kafka之间,单broker几万QPS

  • 数据可靠性

类别

可靠性

Kafka

采用多副本机制,数据可靠性较高

RabbitMQ

采用多副本机制,数据可靠性较高

RocketMQ

采用3副本机制,数据可靠性较高。采用Raft一致性协议,数据一致性高于另外2个。

  • 消息特殊功能

类别

功能特性

Kafka

支持持久化、事务消息、单分区级别的消息顺序性

RabbitMQ

支持持久化、事务消息、延迟队列、死信队列、优先级队列

RocketMQ

支持持久化、事务消息、延迟队列、死信队列、消息重试、单队列内消息有序

  • 消费模式功能

类别

功能特性

Kafka

支持消息过滤、客户端主动拉取的消费模式、按照offset和timestamp进行消息回溯、广播消费

RabbitMQ

支持客户端主动拉取和服务端推送的消费模式、广播消费、不支持消息回溯 消息被消费后就会被删除

RocketMQ

支持消息过滤、客户端主动拉取和服务端推送的消费模式、消息回溯、广播消费

  • 客户端支持

类别

功能特性

Kafka

只支持kafka自定义协议、采用Scalc和java编写支持多种语言的客户端、支持SSL/SASL认证和读写权限的控制

RabbitMQ

支持MQTT,STOMP等协议、采用Erlang编写支持多种语言客户端、支持SSL/SASL认证和读写权限的控制

RocketMQ

兼容RocketMQ协议、支持多种语言客户端、支持SSL/SASL认证

  • 服务可用性

类别

特性

Kafka

采用集群部署,分区与多副本的设计。使得单代理宕机对服务无影响,且支持消息容量的线性提升。

RabbitMQ

支持集群部署,集群代理数量有多种规格

RocketMQ

采用Raft一致性协议,单台机器宕机会重新选主,可用性高。

总结
  • kafka:采用拉取(Pull)方式消费消息,吞吐量相对更高。适用于海量数据收集与传递场景,例如日志采集和集中分析。
  • RabbitMQ:基于Erlang语言开发,不利于做二次开发和维护,适用于对路由、负载均衡、数据一致性、稳定性和可靠性要求很高,对性能和吞吐量的要求没那么高的场景。
  • RocketMQ:基于java语言开发,适用于对数据可靠性、数据实时性要求高、Topic数量非常多的场景。如订单、交易、充值、流计算、消息推送、日志流式处理、binlog分发等。

标签:队列,支持,Kafka,消息,RabbitMQ,RocketMQ
From: https://blog.51cto.com/somethingshare/6118658

相关文章

  • 3.docker 搭建kafka和kafka-manager集群
    1.搭建zookeeper集群docker-compose.yml文件version:'3.1'services:zoo1:image:zookeeperrestart:alwayshostname:zoo1ports:-2181:2181environment:ZOO_M......
  • kafka安装部署
    kafka安装部署 1、安装jdk(1)创建安装目录mkdir/usr/local/java(2)解压缩包到安装的目录下tar-zxvfjdk-8u51-linux-x64.tar.gz-C/usr/local/java/(3)修改环境变量v......
  • Zabbix监控Kafka中间件方案
    Kafka添加JMX监控端口登录bigdata113主机,执行如下命令,vi/opt/kafka_2.11-2.1.1/bin/kafka-server-start.sh打开Kafka启动脚本kafka-server-start.sh,如图: 添加JMX监......
  • kafka服务端搭建 无zookeeper
    前言kafka2.8以后得版本可以不依赖zookeeper搭建kafka集群,本文选用kafka3.3.1版本搭建kafka服务端,搭建环境:CentOS7、JDK17无JDK环境参考搭建:​​https://blog.51cto.com/u_......
  • kafka启动报错
    原kafka使用jdk8之后安装flink修改为jdk11,kafka启动报错......
  • 高级消息中间件rabbitmq
    rabbitmq   是一个在AMQP协议上实现的企业级消息系统。何谓消息系统,就是消息队列系统,消息队列是“”消费-生产者模型“”的一个典型的代表,一端往消息队列中不断写入消......
  • RabbitMQ图解
    之前学习过RabbitMQ,不过忘了,最近来复习下,发现效果不怎么好,于是画了一图来理解RabbitMQ,本文也不想贴代码。废话不多说,直接上图,如果有错误希望老铁指正!1、simple模式和wo......
  • Docker安装RabbitMQ
    Docker安装RabbitMQ1、准备工作准备挂载目录创建/opt/rabbitmq目录,集中管理RabbitMQ信息。特别注意目录权限问题。因为容器内RabbitMQ是以rabbitmq用户启动的,有些......
  • Kafka 云原生管控平台 Know Streaming
    1、Docker安装参考:https://www.cnblogs.com/a120608yby/p/9883175.html2、DockerCompose安装参考:https://www.cnblogs.com/a120608yby/p/14582853.html3、服务......
  • RocketMQ概念与架构
    一般rockerMQ有四部分组成nameserver 路由控制中心主要包括broker的管理和tpoic查询  producer和consumer通过那么server就可以查到topic在哪个broker上producer......