ActiveMQ与Kafka分析笔记

activeMQ与kafka比较

前言

消息中间件的主要作用是:解耦、异步、削峰填谷
解耦:将接口调用依赖的两个服务解耦,方便分布式部署。
异步:服务器之间的不同接口调用会降低服务器执行性能,即每个接口都要等待返回,采用MQ可以异步完成接口调用
削峰填谷:MQ可以保存消息,在服务器处理消息压力大的时候存储消息,在服务器压力小的时候倾泻,可以提升服务器利用率。

简介

ActiveMQ简介

activeMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、 可扩展的、稳定的和安全的企业级消息通信

Kafka简介

Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。

特性

ActiveMQ特性

(1)事务
AMQ支持事务,在connection对象创建session的过程中可以选择是否支持事务,在支持事务的session中,生产者发送消息的时候会transactionId。broker收到消息后判断是否有transactionId,如果有就把message保存在transaction store中,等待commit或者rollback消息。
(2)在传统项目中,如果消息的量级不大,选择AMQ更优,AMQ拥有更好的系统支持能力,且安装配置简单,安装和维护成本低。

kafka特性

(1)利用zk实现负载均衡和leader选举,且支持高并发
(2)零拷贝技术,减少数据拷贝,提升性能。
(3)可进行持久化操作。将消息持久化到磁盘。
(4)分布式系统,易于向外扩展,无需停机,就可以横向扩展。
(5)一个topic可以分为多个partition,每个partition是一个有序的队列,partition物理上由多个segment组成,每个Segment存着message信息。
(6)支持批量发送,可以配置收集一定数量的消息然后再进行发送
(7)支持顺序生产,顺序消费:kafka生产者发消息的时候可以指定一个key,那么这个key对应的消息会发到相同的partition中,又因为partition是一个有序的队列,所以只要单个consumer来消费这个partition中key对应的消息,就可以保证这批消息的顺序。

特殊情况

kafka消息可能出现乱序的情况

生产者在发送消息的时候,若是异步发送给broker的,那么这个broker可能存在多个未确认的消息在同时发送的,也就是说,可能有三条有顺序要求的消息(m1,m2,m3)在发送,然后会存在消息发送成功状态未知的情况,有可能存在m1发送失败,m2,m3发送成功,如果m1进行了重试,重新发送后成功了,这个时候消息顺序就乱了(m2,m3,m1)。如果对于数据有严格顺序要求的,发送的时候可以配置参数max.in.flight.requests.per.connection为1,表示在后一条消息发送之前,就已经知道前面消息是否发送成功的状态。这样就可以避免前一条发送失败的情况下,后一条消息继续发送,导致的顺序错乱。

两者区别

(1)kafka是appendLog形式记录消息的,而AMQ类似于传统数据库形式记录消息,显然kafka这种形式的消息记录模式效率更高(磁盘追加写的性能要远高于随机写)。
(2)kafka可配置参数较多,对于熟练使用它的人来说,可以更灵活的处置。AMQ使用简单,配置较少,开箱即用,但灵活性较低。
(3)AMQ是被动接收消息的,kafka是主动拉取式的
(4)前期使用的时候kafka不支持SSL,而AMQ支持,所以选择AMQ的企业如果不想做改动也就不会选择kafka。
(5)kafka支持批量发送,它会在本地收集到一批消息之后再发送,而AMQ的批量需要客户端自己实现
(6)kafka在消息发送的时候可以选择partition数目,而AMQ只能发送到一个broker,kafka的容错能力比AMQ强
(7)kafka部署成本较高,维护要求比AMQ高
(8)AMQ社区不活跃,kafka社区活跃
(9)AMQ支持jdk1.6版本,有些老项目需要维护的还需要依赖它
(10)另外,AMQ历史悠久,支持的工具比较多
(11)AMQ采用的是kahadb,Kafka采用的是levelDb

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • Kafka史上最详细原理总结分为上下两部分,承上启下 Kafka史上最详细原理总结上 Kafka史上最详细原理总结...
    小波同学阅读 22,107评论 1 115
  • Kafka设计解析(六)- Kafka高性能架构之道 原创文章,转载请务必将下面这段话置于文章开头处。本文转发自技...
    小小少年Boy阅读 2,707评论 0 13
  • 一、前言,所谓消息队列 一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个...
    Megahorn阅读 889评论 0 0
  • 一、入门1、简介Kafka is a distributed,partitioned,replicated com...
    HxLiang阅读 3,338评论 0 9
  • 一、Kafka简介 Kafka (科技术语)。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规...
    边学边记阅读 1,704评论 0 14