訊息佇列簡史 美國隊長 發表於2020-12-12
1983年,Teknekron。 孟買26歲的工程師Vivek Ranadive設想一種軟體匯流排,同年Teknekron誕生了。 1985年,The Information Bus(TIB)。 用於高盛,用於解決金融交易。於是釋出訂閱模式(PubSub)誕生了,同時還誕生了世界上第一個現代訊息佇列軟體:Teknekron的The Information Bus(TIB)。 由於在那個時期金融交易行業門庭若市,因此TIB迅速傳播開來。它引起了電信特別是新聞機構的注意。這些行業也特別需要將資訊及時釋出給千變萬化的客戶。這也解釋了為什麼在1994年大型新聞機構路透社收購了Teknekron。 1993年,IBM MQ。 與此同時,這個迅猛發展的企業軟體也引起了藍色巨人的注意。畢竟IBM最大的幾位客戶都來自於金融服務行業。 因此,在20世紀80年代後期,IBM開始研究開發自己的訊息佇列軟體,實際開發工作始於1990年,三年後,訊息佇列伺服器軟體IBM MQ產品系列面世。17年後,MQ系列進化成了WebSphere MQ並統治著商業訊息佇列平臺市場。 1997年,MSMQ。 在那段時間,TIB並沒有消失在路透社腹中。相反,它仍然是企業通訊市場的主要參與者。並且在1997年Teknekron以TIBCO的形式作為一家獨立公司再度出現。 同年,微軟也在訊息通訊市場嶄露頭角:微軟訊息佇列MSMQ誕生。 2001年,Java Message Service(JMS)ActiveMQ。 通過這一系列的革新,訊息佇列(MQ)軟體主要留住了大型組織機構,它們需要可靠性、解耦以及實時訊息通訊。為什麼MQ不去尋找更大的市場呢? 因為:供應商壁壘。因為,商業MQ供應商想要解決應用互通的問題,而不是去建立標準介面來允許不同的MQ產品互通。供應商壁壘維持著足夠高的價格和利潤率,並使得這些商業MQ軟體對那些當今繁榮昌盛的初創公司和Web2.0公司來說遙不可及。 結果,中小技術公司並不是唯一一個對高價格MQ供應商感到不滿的。那些造就MQ產業的金融服務公司對此也激動不起來。越是大型的金融公司越不可避免地使用來自眾多供應商的MQ產品,來服務企業內部的不同應用。如果應用已經訂閱了TIBCO MQ訊息,若突然需要消費來自IBM MQ的訊息,則實現起來會非常困難。這些產品使用不同的API、不同的協議,因而毫無疑問無法聯合起來組成單一的匯流排。為了解決這個問題,Java Message Service(JMS)在2001年誕生了。 JMS試圖通過提供公共Java API的方式,隱藏單獨MQ產品供應商提供的實際介面,從而跨越了壁壘和解決了互通問題。從技術上講,Java應用程式只需針對JMS API程式設計,選擇合適的MQ驅動即可。JMS會打理好其他部分。 問題是你在嘗試使用單獨標準化介面來膠合眾多不同的介面。這就像是把不同型別的衣服黏在一起:縫合處終究會裂開,真想會暴露出來。使用JMS的應用程式會變得更加脆弱。我們需要新的訊息通訊標準化方案。 2003年,ActiveMQ. 時間回到2003年,一群開源開發者集合在一起形成了Apache Geronimo。之後,他們發現當前沒有好用的使用BSD-style許可協議的訊息代理器。Geronimo是由於java EE相容性需要一個JMS實現。所以一些開發者開始討論其可能性。擁有豐富MOMs經驗甚至自己建立過一些MOMs的這些開發者開始建立下一個偉大的開源訊息代理。ActiveMQ這麼快開始是因為當時市場上大多數的MOMs是商業,閉源而且購買和支援昂貴。市場上的MOMs已經廣泛地被使用,但是一些商業行為是買不起如此昂貴的軟體。這使得建立一個開源MOMs的需求更加大。很明顯,有一個市場急需一個開源的使用Apache License的MOM。最終就導致了Apache ActiveMQ的誕生。 2004年,AMQP. 2004年,救世主AMQP誕生了。AMQP從一開始就設計為開放標準,以解決眾多的訊息佇列需求和拓撲結構問題。憑藉開發,任何人都可以執行這一標準,針對標準編碼的任何人都可以和任意AMQP供應商提供的MQ伺服器進行互動。 2006年,RabbitMQ. 在2006年,Rabbit Technologies誕生了:其擁有著RabbitMQ的智慧財產權。之所以叫Rabbit這個名字,是因為他們覺得,兔子是行動非常迅速的動物,而且繁殖起來也非常瘋狂,把它用於分散式軟體的命名再合適不過了。 時機總是如此的恰到好處,就在此時,AMQP規範的第一份公開草案也公之於世了。作為一份新的規範,AMQP正快速修訂。這正是Erlang可以施展拳腳的地方。通過Erlang,RabbitMQ可以快速開發並跟上AMQP標準前進的節奏。核心開發人員Tony Garnock-Jones僅僅用了兩個半月就將RabbitMQ 1.0版本開發完成了。2007年RabbitMQ 1.0版本正式面世。 2011年,Kafka。 kafka的誕生,是為了解決linkedin的資料管道問題,起初linkedin採用了ActiveMQ來進行資料交換,大約是在2010年前後,那時的ActiveMQ還遠遠無法滿足linkedin對資料傳遞系統的要求,經常由於各種缺陷而導致訊息阻塞或者服務無法正常訪問,為了能夠解決這個問題,linkedin決定研發自己的訊息傳遞系統,當時linkedin的首席架構師jay kreps便開始組織團隊進行訊息傳遞系統的研發。 2012年,RocketMQ。 隨著 2011 年 Kafka 從 Apache 頂級專案畢業,其自研儲存引擎帶來的海量訊息堆積,高效的持久化特性走入我們的視野。但它特殊的日誌通道定位,是不能完全滿足阿里巴巴高頻的線上交易場景,為此團隊設計並研發了新一代訊息引擎 RocketMQ(內部叫 MetaQ),從最初的日誌傳輸領域到後來阿里集團全維度線上業務的支撐,RocketMQ 被廣泛用在交易,資料同步,快取同步,IM 通訊,流計算,IoT 等場景。 如果是應對一些高併發,高可靠以及高可用比較苛刻的場景,Apache RocketMQ 是一個不錯的選擇。最近留意到一個有趣的現象,國內一些中大型規模的公司普遍部署了兩套訊息引擎,一套選擇 Apache RocketMQ 用在交易,資料分發等核心鏈路上,一套選擇 Apache Kafka 用在大資料等線上、離線分析鏈路上。毫無疑問,Kafka 目前在大資料生態建設這塊,確實具備一定的先發優勢。 2018年,Pulsar。 Apache Pulsar 最初誕生於雅虎,當時就是為了解決雅虎內部各個部門之間資料的協調,所以多租戶特性顯得至關重用,Pulsar 從誕生之日起就考慮到多租戶這一特性,並在後續的實現過程中,將其不斷的完善。 多租戶這一特性,使得各個部門之間可以共享同一份資料,不用單獨部署獨立的系統來運算元據,很好的保證了各部門間資料一致性的問題,同時簡化維護成本。 發展歷程:2012年Yahoo內部啟動,2016年9月開源,2017年6月捐給Apache,2018年9月畢業成為頂級專案,目前40多家公司在生產上使用。