想寫這篇文章很久了,今天終于有時間總結一下,一個大型的系統里,消息中間件是必不可少的,它將并發環境處理的數據異步進行處理,有效的提高了系統的并發能力,有很多系統的瓶頸點都在于此,而消息中間件在這個時候就要登場了,它解決的問題也就是高并發的處理,將同步的阻塞變成異步的處理!
我們工作中經常使用到的消息組件有: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了,敬請期待!
文章列表