MQ 的诞生历程
我們要去用MQ,先來了解一下MQ 是怎么誕生的,這樣對于它解決了什么問題理解會更加深刻。大家知不知道世界上第一個MQ 叫什么名字,是什么時候誕生的?
1983 年的時候,有個在MIT 工作的印度小伙突發奇想,以前我們的軟件相互通信,都是點對點的,而且要實現相同的協議,能不能有一種專門用來通信的中間件,就像主板(BUS)一樣,把不同的軟件集成起來呢?于是他搞了一家公司(Teknekron),開發了世界上第一個消息隊列軟件The Information Bus(TIB)。最開始的時候,它被高盛這些公司用在金融交易里面。因為TIB 實現了發布訂閱(Publish/Subscribe)模型,信息的生產者和消費者可以完全解耦,這個特性引起了電信行業特別是新聞機構的注意。1994年路透社收購了Teknekron。
TIB 的成功馬上引起了業界大佬IBM 的注意,他們研發了自己的IBM MQ(IBMWesphere)。后面微軟也加入了這場戰斗,研發了MSMQ。這個時候,每個廠商的產品是孤立的,大家都有自己的技術壁壘。比如一個應用訂閱了IBM MQ 的消息,如果有要訂閱MSMQ 的消息,因為協議、API 不同,又要重復去實現。為什么大家都不愿意去創建標準接口,來實現不同的MQ 產品的互通呢?跟現在微信里面不能打開淘寶頁面是一個道理(商業競爭)。
JDBC 協議大家非常熟悉吧?J2EE 制定了JDBC 的規范,那么那么各個數據庫廠商自己去實現協議,提供jar 包,在Java 里面就可以使用相同的API 做操作不同的數據庫了。MQ 產品的問題也是一樣的,2001 年的時候,SUN 公司發布了JMS 規范,它想要在各大廠商的MQ 上面統一包裝一層Java 的規范,大家都只需要針對API 編程就可以了,不需要關注使用了什么樣的消息中間件,只要選擇合適的MQ 驅動。但是JMS 只適用于Java 語言,它是跟語言綁定的,沒有從根本上解決這個問題(只是一個API)。
所以在06 年的時候,AMQP 規范發布了。它是跨語言和跨平臺的,真正地促進了消息隊列的繁榮發展。
07 年的時候,Rabbit 技術公司基于AMQP 開發了RabbitMQ 1.0。為什么要用Erlang 語言呢?因為Erlang 是作者Matthias 擅長的開發語言。第二個就是Erlang 是為電話交換機編寫的語言,天生適合分布式和高并發。
為什么要取Rabbit Technologies 這個名字呢?因為兔子跑得很快,而且繁殖起來很瘋狂。
從最開始用在金融行業里面,現在RabbitMQ 已經在世界各地的公司中遍地開花。國內的絕大部分大廠都在用RabbitMQ,包括頭條,美團,滴滴(TMD),去哪兒,藝龍,淘寶也有用。
?
總結
- 上一篇: Kafka消息的可靠性
- 下一篇: MQ 的本质是什么呢?