1.rabbitmq 的使用場景有哪些?前端
①. 跨系統的異步通訊,全部須要異步交互的地方均可以使用消息隊列。就像咱們除了打電話(同步)之外,還須要發短信,發電子郵件(異步)的通信方式。sql
②. 多個應用之間的耦合,因爲消息是平臺無關和語言無關的,並且語義上也再也不是函數調用,所以更適合做爲多個應用之間的鬆耦合的接口。基於消息隊列的耦合,不須要發送方和接收方同時在線。在企業應用集成(EAI)中,文件傳輸,共享數據庫,消息隊列,遠程過程調用均可以做爲集成的方法。數據庫
③. 應用內的同步變異步,好比訂單處理,就能夠由前端應用將訂單信息放到隊列,後端應用從隊列裏依次得到消息處理,高峯時的大量訂單能夠積壓在隊列裏慢慢處理掉。因爲同步一般意味着阻塞,而大量線程的阻塞會下降計算機的性能。後端
④. 消息驅動的架構(EDA),系統分解爲消息隊列,和消息製造者和消息消費者,一個處理流程能夠根據須要拆成多個階段(Stage),階段之間用隊列鏈接起來,前一個階段處理的結果放入隊列,後一個階段從隊列中獲取消息繼續處理。服務器
⑤. 應用須要更靈活的耦合方式,如發佈訂閱,好比能夠指定路由規則。cookie
⑥. 跨局域網,甚至跨城市的通信(CDN行業),好比北京機房與廣州機房的應用程序的通訊。架構
2. rabbitmq 有哪些重要的角色?異步
RabbitMQ 中重要的角色有:生產者、消費者和代理:tcp
3. rabbitmq 有哪些重要的組件?分佈式
4. rabbitmq 中 vhost 的做用是什麼?
vhost 能夠理解爲虛擬 broker ,即 mini-RabbitMQ server。其內部均含有獨立的 queue、exchange 和 binding 等,但最最重要的是,其擁有獨立的權限系統,能夠作到 vhost 範圍的用戶控制。固然,從 RabbitMQ 的全局角度,vhost 能夠做爲不一樣權限隔離的手段(一個典型的例子就是不一樣的應用能夠跑在不一樣的 vhost 中)。
5. rabbitmq 的消息是怎麼發送的?
首先客戶端必須鏈接到 RabbitMQ 服務器才能發佈和消費消息,客戶端和 rabbit server 之間會建立一個 tcp 鏈接,一旦 tcp 打開並經過了認證(認證就是你發送給 rabbit 服務器的用戶名和密碼),你的客戶端和 RabbitMQ 就建立了一條 amqp 信道(channel),信道是建立在「真實」 tcp 上的虛擬鏈接,amqp 命令都是經過信道發送出去的,每一個信道都會有一個惟一的 id,不管是發佈消息,訂閱隊列都是經過這個信道完成的。
6. rabbitmq 怎麼保證消息的穩定性?
7. rabbitmq 怎麼避免消息丟失?
8. 要保證消息持久化成功的條件有哪些?
以上四個條件都知足才能保證消息持久化成功。
9. rabbitmq 持久化有什麼缺點?
持久化的缺地就是下降了服務器的吞吐量,由於使用的是磁盤而非內存存儲,從而下降了吞吐量。可儘可能使用 ssd 硬盤來緩解吞吐量的問題。
10. rabbitmq 有幾種廣播類型?
三種廣播模式:
11. rabbitmq 怎麼實現延遲消息隊列?
12. rabbitmq 集羣有什麼用?
集羣主要有如下兩個用途:
13. rabbitmq 節點的類型有哪些?
14. rabbitmq 集羣搭建須要注意哪些問題?
15. rabbitmq 每一個節點是其餘節點的完整拷貝嗎?爲何?
不是,緣由有如下兩個:
16. rabbitmq 集羣中惟一一個磁盤節點崩潰了會發生什麼狀況?
若是惟一磁盤的磁盤節點崩潰了,不能進行如下操做:
惟一磁盤節點崩潰了,集羣是能夠保持運行的,但你不能更改任何東西。
17. rabbitmq 對集羣節點中止順序有要求嗎?
RabbitMQ 對集羣的中止的順序是有要求的,應該先關閉內存節點,最後再關閉磁盤節點。若是順序剛好相反的話,可能會形成消息的丟失。
總結:想成爲進階架構師,那麼資源確定也是少不了的,若是你對技術提高很感興趣,小編在這裏提供了一份針對架構進階視頻資料,資源分享包括但不限於(分佈式架構、高可擴展、高性能、高並 發、Jvm性能調優、Spring,MyBatis,Nginx源碼分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。
羣內提供免費的Java架構學習資料,扣扣君羊:643-459-718