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