rabbitmq1-概述及其使用docker安裝
一、mq的應用場景:
這裡有一篇博文寫的非常的好,所以這裡直接給出這個博文的連線,MQ應用場景分析的十分好的一篇博文,在這裡我在補充一些應用場景;
- 1、其實上面的一篇博文中主要講的是應用的解耦,多個應用拆分開來各個環節互不干擾,同時提高效率
- 2、通知:例如通知所有後臺商家,週五晚上進行系統維護不要上架商品,這個時候就可以使用發MQ的布訂閱模式
- 3、限流(流量削峰):rabbitmq中有一個流控的東西觸發之後就可以限制訊息的傳送頻率,從而可達到限流的目的,可使用與秒殺等高併發的場景在恢復正常後依舊按照正常的思路去跑
- 4、分散式事務,在我的一篇博文中已經講到過分散式事務,由於rabbitmq只要訊息投遞成功就一定確保消費的機制,所以特別的適合解決分散式事務最終一致性的要求的特點,具體的可以檢視此篇博文裡面有一個流程的小例子,有可能還是依舊沒有講清楚後面的博文會繼續講到
二、幾種mq的對比
對比的分別有:rabbitmq、kafka、rocketmq
activemq現在不太活躍,同時官網好像在研究下一代產品apollo,所以這裡不做對比
- tps:kafka>rocketmq>rabbitmq
這個裡面主要是rabbitmq保證訊息的可靠性在吞吐量上做了取捨,這裡我們要一分為二的看待,假如我們要做日誌系這個時候吞吐量肯定使我們的首選kafka就是值得擁有,但是如果對於分散式事務或者對資料一致性有要求的那麼rabbitmq就是首選了,
- 成熟程度:rabbitmq>kafka>rocketmq
- 訊息延遲:rabbitmq 是微妙級、rocketmq和kafka是毫秒級,這意味著什麼大家想想。
- web控制檯的支援:只有rabbitmq有
具體的對比可以看看下面的圖
4、使用docker簡化安裝:
不會過多的講解docker的知識,只是為本篇服務,其次建議使用docker因為在本地安裝需要安裝erlang和rabbitmq如果哪一個安裝不成功需要清理登錄檔什麼的太淘神費力,同時容易把本地的環境給搞亂,直接使用官方給的映象。我們是開發不是運維所以在學習的時候建議吧關注點放到rabbitmq本身;
ps:下文以及所有後續的博文,MQ特指RabbitMQ
- 1、安裝docker
環境:centos6.8 x64
1、因為系統自帶的repo中不帶docker需要安裝epel
rpm -Uvh http://ftp.riken.jp/Linux/fedora/epel/6Server/x86_64/epel-release-6-8.noarch.rpm
2、安裝docker
yum install -y docker-io
3、啟動docker
service docker start
ps:網上前幾篇教程,千篇一律的都是需要升級kernel,依據我的實踐centos6.8可以不用升級kernel,按照上述步驟即可安裝成功。
- 2、拉去rabbitmq的映象:/rabbitmq/”>https://hub.docker.com//rabbitmq/
下面的是映象的tag,帶有alpine的是用最小linux映象構建的,體積最小可以達5M初學者不建議這麼折騰,而且 Alpine Linux使用了muslmusl實現的DNS服務不會使用resolv.conf檔案中的search和domain兩個配置,通過DNS來進行服務發現時需要注意。
,帶有-management的是帶有web控制檯的,點開其他的Dockerfile可以看到form rabbitmq 所以是包含有rabbitmq的就不用在安裝rabbitmq了(群裡面初學者問的),
本博文選用版本:rabbitmq:3.7.7-management
docker pull rabbitmq:3.7.7-management
出現下圖就算是成功
docker images 檢視映象是否安裝成功
- 3、啟動rabbitmq
1、docker images 檢視rabbitmq的映象id
2、docker run -d -p 15672:15672 -p 5672:5672 900c4b7b944e 執行
- 4、開啟控制檯:http://ip:15672
使用者名稱:guest
密碼:guest
新增新使用者,
設定virtual hosts
為使用者授權,剛新增的使用者是沒有授權的,如果你在連線的時候包no access相關的錯誤,你就要來這裡授權了
到此為止今天的博文就結束了。下一篇主要講解一些概念,然後就是開始操作了。