想寫這篇文章很久了,今天終於有時間總結一下,一個大型的系統里,消息中間件是必不可少的,它將併發環境處理的數據非同步進行處理,有效的提高了系統的併發能力,有很多系統的瓶頸點都在於此,而消息中間件在這個時候就要登場了,它解決的問題也就是高併發的處理,將同步的阻塞變成非同步的處理! 我們工作中經常使用到的消息 ...
想寫這篇文章很久了,今天終於有時間總結一下,一個大型的系統里,消息中間件是必不可少的,它將併發環境處理的數據非同步進行處理,有效的提高了系統的併發能力,有很多系統的瓶頸點都在於此,而消息中間件在這個時候就要登場了,它解決的問題也就是高併發的處理,將同步的阻塞變成非同步的處理!
我們工作中經常使用到的消息組件有:RabbitMQ,Equeue,ActiveMQ,Kafka等,最近大叔自己也寫了一套,取名為LindMQ,各位有時間可以多關註!
下麵我們以RabbitMQ來說說它的安裝與部署:
1 Erlang
是一種通用的面向併發的編程語言,它由瑞典電信設備製造商愛立信所轄的CS-Lab開發,目的是創造一種可以應對大規模併發活動的編程語言和運行環境.
OTP 19.2 Source File (101028910)
OTP 19.2 Windows 32-bit Binary File (101028910)
OTP 19.2 Windows 64-bit Binary File (101891457)
OTP 19.2 HTML Documentation File (34761971)
OTP 19.2 Man Pages File (1409661)
2 RabbitMQServer
是一種應用程式對應用程式的通信方法。應用程式通過讀寫出入隊列的消息(針對應用程式的數據)來通信,而無需專用連接來鏈接它們。消息傳遞指的是程式之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用於諸如遠程過程調用的技術。排隊指的是應用程式通過 隊列來通信。隊列的使用除去了接收和發送應用程式同時執行的要求.
3 安裝完成後,開啟rabbitMQ的服務,然後它會去監聽一些埠,用來進行數據通訊
-
埠4369 (epmd), 25672 (Erlang distribution)
-
Epmd是Erlang Port Mapper Daemon的縮寫,在Erlang集群中的感化相當於dns的作用,供給節點名稱到埠的查詢辦事,epmd綁定在總所周知的4369埠上。
-
埠5672, 5671 (AMQP 0-9-1 without and with TLS)
-
AMQP,即Advanced Message Queuing Protocol,一個提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,為面向消息的中間件設計。基於此協議的客戶端與消息中間件可傳遞消息,並不受客戶端/中間件不同產品,不同的開發語言等條件的限制。Erlang中的實現有 RabbitMQ等。
-
埠15672 (if management plugin is enabled)
-
通過http://serverip:15672訪問RabbitMQ的Web管理界面,預設用戶名密碼都是guest。(註意:RabbitMQ 3.0之前的版本預設埠是55672,下同)
-
埠61613, 61614 (if STOMP is enabled)
-
Stomp是一個簡單的消息文本協議,它的設計核心理念就是簡單與可用性,官方文檔:http://stomp.github.com/stomp-specification-1.1.html
現在我們就來實踐一下Stomp協議,你需要的是:
1.一個支持stomp消息協議的messaging server(譬如activemq,rabbitmq);
2.一個終端(譬如linux shell);
3.一些基本命令與操作(譬如nc,telnet)
-
埠1883, 8883 (if MQTT is enabled)
MQTT只是IBM推出的一個消息協議,基於TCP/IP的。兩個App端發送和接收消息需要中間人,這個中間人就是消息伺服器(比如ActiveMQ/RabbitMQ),三者通信協議就是MQTT
好了,介紹了這些多,相信大家也是心裡癢癢了,下一講,咱們開始寫RabbitMQ的demo了,敬請期待!