一、語(yǔ)言不同
RabbitMQ是由內(nèi)在高并發(fā)的erlanng語(yǔ)言開發(fā)辐宾,用在實(shí)時(shí)的對(duì)可靠性要求比較高的消息傳遞上裤园。
kafka是采用Scala語(yǔ)言開發(fā),它主要用于處理活躍的流式數(shù)據(jù),大數(shù)據(jù)量的數(shù)據(jù)處理上
二绵脯、結(jié)構(gòu)不同
?RabbitMQ的broker由Exchange,Binding,queue組成
kafka采用mq結(jié)構(gòu):broker 有part 分區(qū)的概念
?三、Brokerr與Consume交互方式不同
RabbitMQ 采用push的方式
kafka采用pull的方式
四休里、在集群負(fù)載均衡方面蛆挫,
rabbitMQ的負(fù)載均衡需要單獨(dú)的loadbalancer進(jìn)行支持。
kafka采用zookeeper對(duì)集群中的broker妙黍、consumer進(jìn)行管理
五悴侵、使用場(chǎng)景
rabbitMQ支持對(duì)消息的可靠的傳遞,支持事務(wù)拭嫁,不支持批量的操作可免;基于存儲(chǔ)的可靠性的要求存儲(chǔ)可以采用內(nèi)存或者硬盤抓于。
金融場(chǎng)景中經(jīng)常使用
kafka具有高的吞吐量,內(nèi)部采用消息的批量處理浇借,zero-copy機(jī)制捉撮,數(shù)據(jù)的存儲(chǔ)和獲取是本地磁盤順序批量操作,具有O(1)的復(fù)雜度(與分區(qū)上的存儲(chǔ)大小無(wú)關(guān))妇垢,消息處理的效率很高巾遭。(大數(shù)據(jù))