Kafka与常见消息队列的对比

Kafka与常见消息队列的对比

RabbitMQ

  • Erlang编写
  • 支持很多的协议:AMQP,XMPP, SMTP, STOMP
  • 非常重量级,更适合于企业级的开发
  • 发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。

Redis

  • 基于Key-Value对的NoSQL数据库
  • 入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受;
  • 出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。

ZeroMQ

  • 号称最快的消息队列系统,尤其针对大吞吐量的需求场景。
  • 高级/复杂的队列,但是开发人员需要自己组合多种技术框架,技术上的复杂度是对这MQ能够应用成功的挑战。
  • 具有一个独特的非中间件的模式,不需要安装和运行一个消息服务器或中间件
  • ZeroMQ仅提供非持久性的队列,也就是说如果宕机,数据将会丢失。

ActiveMQ

  • 类似于ZeroMQ,它能够以代理人和点对点的技术实现队列。
  • 类似于RabbitMQ,它少量代码就可以高效地实现高级应用场景。

Kafka/Jafka

  • 高性能跨语言分布式发布/订阅消息队列系统
  • 快速持久化,可以在O(1)的系统开销下进行消息持久化;
  • 高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率;
  • 完全的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动实现负载均衡;
  • 支持Hadoop数据并行加载,对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka通过Hadoop的并行加载机制统一了在线和离线的消息处理。
  • 一个非常轻量级的消息系统,除了性能非常好之外,还是一个工作良好的分布式系统。
时间: 2024-08-02 04:38:19

Kafka与常见消息队列的对比的相关文章

数据存储-Kafka到底是消息队列还是日志收集系统?

问题描述 Kafka到底是消息队列还是日志收集系统? 消息队列中的永久存储是HDFS吗?消费者是拿到Broker临时数据存储系统中的数据存储到HDFS里面吗? 以上是我自己看资料的理解,最近在写论文,携程的消息中间件中使用到了Kafka,所以自己在理解的时候有些疑惑,引文又看到直接说Kafka是一个消息队列,有的说是日志收集系统的. 解决方案 是消息队列,当然可以完成日志收集的功能 解决方案二: kafka主要是消息队列,你的消费者可以自己再实现,决定把数据保存下来还是说转发给其他处理,比如St

Kafka和消息队列之间的超快速比较

本文的目的是让读者快速了解Kafka与消息队列之间的关系,告诉读者为什么会考虑使用它的原因.以下为译文. Kafka最初是由Linkedin社区开发的一项技术.简而言之,它有点像消息队列系统,但它与消息队列系统不同的就是它能够支持pub/sub,可以在许多服务器上进行扩展,并重新播放消息. 平时你可能不太关注这些问题,但是当你想要采用响应式编程风格而不是命令式编程风格时,上述这些就是你需要进行关注的了. 命令式编程和响应式编程之间的区别 命令式编程是我们一开始就采用的编程类型.当发生了一些事情,

几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程. 本文选自<架构解密:从分布式到微服务>. 本文盘点了四种常用的微服务架构方案,分别是ZeroC IceGrid.Spring Cloud.基于消息队列与Docker Swarm. ZeroC IceGrid微服

EQueue - 一个C#写的开源分布式消息队列的总体介绍

前言 本文想介绍一下前段时间在写enode时,顺便实现的一个分布式消息队列equeue.这个消息队列的思想不是我想出来的,而是通过学习阿里的rocketmq后,自己用c#实现了一个轻量级的简单版本.一方面可以通过写这个队列让自己更深入的掌握消息队列的一些常见问题:另一方面也可以用来和enode集成,为enode中的command和domain event的消息传递提供支持.目前在.net平台,比较好用的消息队列,最常见的是微软的MSMQ了吧,还有像rabbitmq也有.net的client端.这

分布式系统解决之道:目录、消息队列、事务系统及其他

目录服务(ZooKeeper)   分布式系统是一个由很多进程组成的整体,这个整体中每个成员部分,都会具备一些状态,比如自己的负责模块,自己的负载情况,对某些数据的掌握等等.而这些和其他进程相关的数据,在故障恢复.扩容缩容的时候变得非常重要.   简单的分布式系统,可以通过静态的配置文件,来记录这些数据:进程之间的连接对应关系,它们的IP地址和端口等等.然而,一个自动化程度高的分布式系统,必然要求这些状态数据都是动态保存的.这样才能让程序自己去做容灾和负载均衡的工作.   一些程序员会专门自己编

大型网站架构系列:消息队列(二) (转)

本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ,Kafka).[第二篇的内容大部分为网络资源的整理和汇总,供大家学习总结使用,最后有文章来源] 本次分享大纲 消息队列概述(见第一篇:大型网站架构系列:分布式消息队列(一)) 消息队列应用场景(见第一篇:大型网站架构系列:分布式消息队列(一)) 消息中间件示例(见第一篇:大型网站架构系列:分布式消息队列(一)) JMS消息服务 常用消息队列 参考(推荐)资料 本

大话消息队列的流派之争

这篇文章的标题很难起,网上一翻全是各种MQ的性能比较,很容易让人以为我也是这么"粗俗"的人.我这篇文章想要表达的是--它们根本不是一个东西,有毛的性能好比较?   MQ是什么?    Message Queue(MQ),消息队列中间件.很多人都说:MQ通过将消息的发送和接收分离来实现应用程序的异步和解偶,这个给人的直觉是--MQ是异步的,用来解耦的,但是这个只是MQ的效果而不是目的.   MQ真正的目的是为了通讯,屏蔽底层复杂的通讯协议,定义了一套应用层的.更加简单的通讯协议.一个分布

消息队列(MQ)重磅推出MQTT移动物联套件

消息队列(MQ)可应用在多个领域,包括异步通信解耦.企业解决方案.金融支付.电信.电子商务.快递物流.广告营销.社交.即时通信.移动应用.手游.视频.物联网.车联网等.近期,消息队列(MQ)推出顺序消息消息.MQTT移动物联套件.Kafka企业级消息服务.下述内容将解析消息队列(MQ)顺序消息.车联网.Kafka企业级消息服务的应用场景. 1. 消息类型及多种场景 消息队列支持多种消息类型: 普通消息:最大4M,消息越小,性能越高 事务消息:两阶段提交.解决分布式事务问题 定时消息:消息的延时或

EQueue - 一个纯C#写的分布式消息队列介绍2

一年前,当我第一次开发完EQueue后,写过一篇文章介绍了其整体架构,做这个框架的背景,以及架构中的所有基本概念.通过那篇文章,大家可以对EQueue有一个基本的了解.经过了1年多的完善,EQueue无论是功能上还是成熟性上都完善了不少.所以,希望再写一篇文章,介绍一下EQueue的整体架构和关键特性. EQueue架构 EQueue是一个分布式的.轻量级.高性能.具有一定可靠性,纯C#编写的消息队列,支持消费者集群消费模式. 主要包括三个部分:producer, broker, consume