雖然兩者都提供了各自的優(yōu)勢,而且各自都非常有用,但是實際上您應(yīng)該使用這兩者中的哪一個呢?
每天?分享?最新?軟件?開發(fā)?,Devops,敏捷?,測試?以及?項目?管理?最新?,最熱門?的?文章?,每天?花?3分鐘?學(xué)習(xí)?何樂而不為?,希望?大家?點贊?,加?關(guān)注?,你的?支持?是我?最大?的?動力?。
目前使用的兩種最流行的消息代理是 Kafka 和基于 JMS 的消息代理。JMS 是一個由來已久的 JAVA API,通常用于開發(fā)消息傳遞應(yīng)用程序,其主要功能是能夠在兩個或多個客戶機(jī)之間發(fā)送消息。另一方面,Kafka 是一個分布式流媒體平臺,它提供了很多可伸縮性,對于實時數(shù)據(jù)處理非常有用。
雖然兩者都提供了各自的優(yōu)勢,而且各自都非常有用,但是實際上您應(yīng)該使用這兩者中的哪一個呢?
JMS vs. Kafka
JMS 出現(xiàn)的時候,程序需要一種方法來實現(xiàn)不同應(yīng)用程序或系統(tǒng)不同組件之間的異步通信。根據(jù) Red Hat Reactive Architect Clement Escopier 的說法,消息代理已經(jīng)相對老化了。
“過去20年來,JMS 已經(jīng)成功地解決了許多問題。而且我們在銀行系統(tǒng)中發(fā)現(xiàn)它,在異步很重要的較小的應(yīng)用程序中,例如訂購系統(tǒng)或物流,甚至物聯(lián)網(wǎng)。它在云計算、 Kube.NETes 或容器上運(yùn)行得相對較好,因為當(dāng)你有隊列時,它沒有任何消費(fèi)者限制,”他在接受《雞尾酒編碼》采訪時告訴我們。
埃斯科菲爾說,JMS 的優(yōu)勢之一是它以 Java 為中心。
你可以使用其他的協(xié)議。但這是一個明確的語義,當(dāng)你在 Java 中,你確切地知道它將如何工作,”他說。
雖然Kafka最近可能受到很多炒作,埃斯科菲爾說,JMS 仍然非常受歡迎。
“它仍然被大量使用。作為 Quarkus 團(tuán)隊的成員,我們對 JMS 有很多需求。很受歡迎的。Kafka是一項非??岬募夹g(shù),但當(dāng)人們在擁有更多遺留系統(tǒng)的情況下進(jìn)行遷移時,JMS 仍然是發(fā)生事情的地方。”
另一方面,Kafka是一種不同的技術(shù)。
“它是一個消息傳遞代理,因此可以將其與 JMS 進(jìn)行比較。再加上這個,這就是一個存儲系統(tǒng)。JMS 在一定程度上與此類似,但程度要小得多。除此之外,它還是一個Kafka連接的數(shù)據(jù)集成平臺。它也是一個流處理平臺與Kafka流。這些都是Apache Kafka下載的一部分,”他在Cocktails podcast Technology播客技術(shù)中說。
Waehner 補(bǔ)充說,Kafka 與 JMS 的不同之處在于,它是一個實現(xiàn),而不是一個標(biāo)準(zhǔn)。
“這不是一個有不同供應(yīng)商的標(biāo)準(zhǔn),而是一個實現(xiàn)。最重要的是,它不僅僅是信息傳遞。這就是區(qū)別。在將來,我們?nèi)匀粫吹竭@兩者,因為 JMS 和 Kafka 用于非常不同的用例。對于發(fā)布-訂閱消息傳遞來說,如果它沒有極大的伸縮性,那么至少 JMS 代理非常適合這種情況。其他方面,人們更多地使用Kafka。”
Waehner 說,Kafka 也偏離了10年前對大數(shù)據(jù)的初衷,現(xiàn)在用于分析和事務(wù)工作負(fù)載,這是 JMS 的原始領(lǐng)域。
”今天,我看到的用例中超過50% 是關(guān)于事務(wù)性工作負(fù)載的。有些人說‘我應(yīng)該一直使用 JMS 來處理事務(wù)性工作負(fù)載’,但事實并非如此。你需要明白,你也可以使用Kafka的事務(wù)性工作負(fù)載,”他解釋說。
選擇正確的技術(shù)
雖然兩個服務(wù)具有相同的意圖,但是 Kafka 和 JMS 具有關(guān)鍵的差異。在兩者之間做出選擇仍然取決于您的用例,并且在這樣做時需要考慮一些事情。在某些情況下,您甚至可以將它們一起使用,例如當(dāng)應(yīng)用程序同時調(diào)用消息傳遞和消息日志記錄時。
了解更多關(guān)于 JMS 和卡夫卡以及他們在Cocktails上編碼的其他用例——在這里,我們與世界領(lǐng)先的架構(gòu)、設(shè)計和促進(jìn)數(shù)字轉(zhuǎn)換的技術(shù)方面的專家交談,這些技術(shù)可以在蘋果、谷歌播客、 Spotify、 Soundcloud 和 Stitcher 上找到。