消息系統(tǒng)非消息隊(duì)列,Kafka具有消息隊(duì)列和發(fā)布/訂閱兩種模式,兩種傳統(tǒng)的消息模式,但重要的是,Kafka同時(shí)兼容兩種,而且靈活,強(qiáng)大
單獨(dú)看這兩種模式:
隊(duì)列模式
可以替代MQ的原因,估計(jì)也是很多人的第一印象:大數(shù)據(jù)的MQ,高吞吐的MQ。
一組的Kafka消費(fèi)者讀取一個Kafka Topic, 每條消息只被其中的一個消費(fèi)者消費(fèi)一次。這樣就能切分?jǐn)?shù)據(jù)流由多個消費(fèi)者實(shí)例來進(jìn)行處理,處理能力水平擴(kuò)展。
發(fā)布/訂閱模式
廣播模式,一條消息可以廣播給所有的消費(fèi)者,可以實(shí)現(xiàn)多個應(yīng)用的并發(fā)加載。
可以說兩種模式都不是Kafka獨(dú)有的,有各種MQ,也有Redis可以進(jìn)行發(fā)布/訂閱。其實(shí)Kafka取勝點(diǎn)就是大和快:高吞吐和低延遲。因?yàn)樘焐哂蟹植际教匦裕ㄟ^消費(fèi)者組的概念每個主題都能同時(shí)采用了兩種模式(不是常見那種模式A或模式B,而是模式AB),這樣既能實(shí)現(xiàn)順序的時(shí)間消費(fèi),又能支持多實(shí)例的處理,還能夠確保可水平擴(kuò)展,高可用。簡單說理由,就是“我全都要”。這也是大數(shù)據(jù)和未來人工智能的一種趨勢,專注但必須要突破之前想象的限制。Kafka不能說處處有優(yōu)勢,有時(shí)在業(yè)務(wù)上比傳統(tǒng)方法顯得“單純可愛”,但在大和快上更有創(chuàng)造空間。猶如貨車和跑車的發(fā)動機(jī),并不是量的區(qū)別。
另外,相比傳統(tǒng)消息系統(tǒng),kafka有更強(qiáng)的消息序列保證,更適合多實(shí)例并發(fā)的場景。比如:MQ架構(gòu)里一個系統(tǒng)掛掉導(dǎo)致消息隊(duì)列堵塞進(jìn)而影響其它系統(tǒng)。