作者:大宽宽
链接:https://www.zhihu.com/question/272186518/answer/367644663
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Active MQ被称为“传统”mq。所谓“传统”是指,

  1. 他要支持一些标准接口,比如AMQP, STOMP等
  2. 需要维护consumer的状态。即当前consumer读到哪个数据了,是active mq来维护的。
  3. active mq最早用来做企业级别的系统整合。要支持所谓的“企业级队列模式“,但请原谅我搞到最后也没理解这个企业级到底怎么企业级了,也许现在的大多数企业早已不像10多年前那样设计系统了?
  4. active mq因为支持XA协议,所以可以和JDBC一起实现2PC分布式事务,但我基本没见过有人这么用,大概是因为太慢和太难维护的原因。
  5. active mq支持对事物处理的commit(自动+手动),但是如果你理解分布式一致性的话就能明白单一系统能够commit还是无法满足一致性的要求

其实我看到过有人用它,完全是因为他是java这个圈子里第一个广泛被使用的mq(之后又有rabbit mq),是一种习惯。

而Kakfa一开始被设计就是以高吞吐+高性能+HA来实现的。我的压测显示Kafka的吞吐量大概高于active mq两个数量级。即使Kafka配置了全同步的复制,也会比Active MQ高5~6倍。

Kafka的核心设计是append log file。即不断追加写log文件来实现消息数据的写入(对比一下,active mq的内部更偏向一个传统数据库,不过active mq最近的版本开始用level db)。磁盘追加写的性能要远高于随机写。Kafka允许consumer自己维护自己读取到了的位置,还允许随时调整这个位置做“message replay”。

Kafka围绕topic和partition的模型解决了message的分发和HA的问题,并且能够通过配置来支持全异步,半同步,全同步的复制。

最近Kafka提供了一个新的Stream API,顺便还支持了事务(但限制在数据处理这个步骤)

总体来讲Kafka特别适合的场景是实时数据分析,log分析等场景。但是如果用来做业务事件的分发,也非常适合。

如果业务场景压力不大,又比较传统,需要那些老的message协议,用Active MQ完全够用,但同时也可以考虑一下同类的Rabbit MQ;但是如果吞吐量的要求很大,那么Kafka几乎可能是自研之外,非常理想的选择了。

需要更多教程,微信扫码即可

activemq和kafka的区别相关推荐

  1. 消息中间件(RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ等)的定义、组成、特点、优缺点、应用场景面试题

    大家都参与过网上电商平台的秒杀活动吧,一般的秒杀活动辄几百万的参与人数,而"双十一"的参与人数更是已"亿"为计量单位.那么这些电商平台的系统架构是怎样的,它们是 ...

  2. 消息队列ActiveMQ, RabbitMQ, Kafka, MSMQ等对比介绍

    ActiveMQ和RabbitMQ的区别? 关于文章没多少内容,请进链接:https://blog.csdn.net/qq_30764991/article/details/80573352, htt ...

  3. ServiceMix部署自定义开发程序(ActiveMQ和Kafka实现)

    上一篇整理了ServiceMix环境的搭建过程,接下来介绍在ServiceMix平台下如何开发程序并部署到Karaf容器内,同时介绍下karaf容器内置的ActiveMQ消息组件的发送和接收,以及目前 ...

  4. ActiveMQ RabbitMQ KafKa对比

    前言: ActiveMQ和 RabbitMq 以及Kafka在之前的项目中都有陆续使用过,当然对于三者没有进行过具体的对比,以下摘抄了一些网上关于这三者的对比情况,我自己看过之后感觉还 是可以的,比较 ...

  5. ActiveMQ—Queue与Topic区别

    Queue与Topic区别 转自:http://blog.csdn.net/qq_21033663/article/details/52458305 队列(Queue)和主题(Topic)是JMS支持 ...

  6. ibm linux mq 发送消息_RabbitMq、ActiveMq、Kafka和Redis做Mq对比

    一.RabbitMq RabbitMQ是一个Advanced Message Queuing Protocol(AMQP)的开源实现,由以高性能.可伸缩性出名的Erlang写成.RabbitMQ Se ...

  7. Kafka、 RabbitMQ、Redis、 ZeroMQ、 ActiveMQ、 Kafka/Jafka 对比

    Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能. 高吞吐率.即使在非常廉价 ...

  8. tomcat,zookeeper,activeMQ,Kafka设置jvm参数

    1,tomcat设置jvm参数 设置方法: 在tomcat bin 目录增加配置:setenv.sh #add tomcat pid CATALINA_PID="$CATALINA_BASE ...

  9. RabbitMQ和Kafka的区别

    前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特性,在进行工程选择时,往往眼花缭乱,不知所措.对于RabbitMQ和Kafka,到底应该选哪个? Rabbi ...

最新文章

  1. linux下搭建hadoop环境步骤分享
  2. 【AI白身境】学AI必备的python基础
  3. VC++制作DLL具体解释
  4. leetcode 523. 连续的子数组和
  5. 【基于注解方式】Spring整合Kafka
  6. php7扩展安装奇葩事
  7. java批处理框架 pdf_史上最轻松入门之Spring Batch - 轻量级批处理框架实践
  8. c# WPF设置软件界面背景为MediaElement并播放视频
  9. 欧姆龙cp1h指令讲解_欧姆龙cp1h常用指令学习(六)功能块、子程序
  10. css设置文本(上下)居中显示
  11. 微信小程序请求接口提示Provisional headers are shown
  12. html的3d旋转木马插件,js 3D旋转木马特效插件
  13. 81章 老子1章到_国学经典《老子*道德经》全文及翻译(全文共81章)。(此第7部分:61-70章)...
  14. 100以内的所有质数的输出
  15. 了解cuda和显卡等基本概念
  16. SSH免密登陆功能配置
  17. Git实用教程 4.0:回到过去
  18. idea java手册
  19. 萤火虫算法以及避障算法path planning in uncertain environment by using firefly algorithm(萤火虫算法在实际中的应用)
  20. ESP8266桌面时钟总结

热门文章

  1. 打开新经济大门 淘宝直播如何打造最有价值的直播平台?
  2. “我在B站有套房”成真:云蹦迪、不停学还健身
  3. 真香!AirPods Pro美国全网脱销,网友:而我内心却毫无波澜
  4. 期待!华为P40渲染图再曝光:前置打孔双摄+6.5英寸大屏
  5. 高通首席技术官:5G+AI是至关重要的组合
  6. 索尼发布Xperia 8手机:采用骁龙630处理器
  7. vivo V15 Pro宣传片放出:前置3200万像素弹出式摄像头
  8. 【点阵液晶编程连载五】液晶驱动代码的移植
  9. 比Postman更好用!在国产接口调试工具Apipost中使用Mock
  10. 常见的软件测试缺陷分类:遇到测试缺陷怎么处理?