<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                **十四、RabbitMQ** **135\. rabbitmq 的使用場景有哪些?** ①. 跨系統的異步通信,所有需要異步交互的地方都可以使用消息隊列。就像我們除了打電話(同步)以外,還需要發短信,發電子郵件(異步)的通訊方式。 ②. 多個應用之間的耦合,由于消息是平臺無關和語言無關的,而且語義上也不再是函數調用,因此更適合作為多個應用之間的松耦合的接口。基于消息隊列的耦合,不需要發送方和接收方同時在線。在企業應用集成(EAI)中,文件傳輸,共享數據庫,消息隊列,遠程過程調用都可以作為集成的方法。 ③. 應用內的同步變異步,比如訂單處理,就可以由前端應用將訂單信息放到隊列,后端應用從隊列里依次獲得消息處理,高峰時的大量訂單可以積壓在隊列里慢慢處理掉。由于同步通常意味著阻塞,而大量線程的阻塞會降低計算機的性能。 ④. 消息驅動的架構(EDA),系統分解為消息隊列,和消息制造者和消息消費者,一個處理流程可以根據需要拆成多個階段(Stage),階段之間用隊列連接起來,前一個階段處理的結果放入隊列,后一個階段從隊列中獲取消息繼續處理。 ⑤. 應用需要更靈活的耦合方式,如發布訂閱,比如可以指定路由規則。 ⑥. 跨局域網,甚至跨城市的通訊(CDN行業),比如北京機房與廣州機房的應用程序的通信。 **136\. rabbitmq 有哪些重要的角色?** RabbitMQ 中重要的角色有:生產者、消費者和代理: * 生產者:消息的創建者,負責創建和推送數據到消息服務器; * 消費者:消息的接收方,用于處理數據和確認消息; * 代理:就是 RabbitMQ 本身,用于扮演“快遞”的角色,本身不生產消息,只是扮演“快遞”的角色。 **137\. rabbitmq 有哪些重要的組件?** * ConnectionFactory(連接管理器):應用程序與Rabbit之間建立連接的管理器,程序代碼中使用。 * Channel(信道):消息推送使用的通道。 * Exchange(交換器):用于接受、分配消息。 * Queue(隊列):用于存儲生產者的消息。 * RoutingKey(路由鍵):用于把生成者的數據分配到交換器上。 * BindingKey(綁定鍵):用于把交換器的消息綁定到隊列上。 **138\. rabbitmq 中 vhost 的作用是什么?** vhost 可以理解為虛擬 broker ,即 mini-RabbitMQ? server。其內部均含有獨立的 queue、exchange 和 binding 等,但最最重要的是,其擁有獨立的權限系統,可以做到 vhost 范圍的用戶控制。當然,從 RabbitMQ 的全局角度,vhost 可以作為不同權限隔離的手段(一個典型的例子就是不同的應用可以跑在不同的 vhost 中)。? **139\. rabbitmq 的消息是怎么發送的?** 首先客戶端必須連接到 RabbitMQ 服務器才能發布和消費消息,客戶端和 rabbit server 之間會創建一個 tcp 連接,一旦 tcp 打開并通過了認證(認證就是你發送給 rabbit 服務器的用戶名和密碼),你的客戶端和 RabbitMQ 就創建了一條 amqp 信道(channel),信道是創建在“真實” tcp 上的虛擬連接,amqp 命令都是通過信道發送出去的,每個信道都會有一個唯一的 id,不論是發布消息,訂閱隊列都是通過這個信道完成的。 **140\. rabbitmq 怎么保證消息的穩定性?** * 提供了事務的功能。 * 通過將 channel 設置為 confirm(確認)模式。 **141\. rabbitmq 怎么避免消息丟失?** 1. #### 消息持久化 2. #### ACK確認機制 3. #### 設置集群鏡像模式 4. #### 消息補償機制 **142\. 要保證消息持久化成功的條件有哪些?** 1. 聲明隊列必須設置持久化 durable 設置為 true. 2. 消息推送投遞模式必須設置持久化,deliveryMode 設置為 2(持久)。 3. 消息已經到達持久化交換器。 4. 消息已經到達持久化隊列。 以上四個條件都滿足才能保證消息持久化成功。 **143\. rabbitmq 持久化有什么缺點?** 持久化的缺地就是降低了服務器的吞吐量,因為使用的是磁盤而非內存存儲,從而降低了吞吐量。可盡量使用 ssd 硬盤來緩解吞吐量的問題。 **144\. rabbitmq 有幾種廣播類型?** ### 三種廣播模式: 1. fanout: 所有bind到此exchange的queue都可以接收消息(純廣播,綁定到RabbitMQ的接受者都能收到消息); 2. direct: 通過routingKey和exchange決定的那個唯一的queue可以接收消息; 3. topic:所有符合routingKey(此時可以是一個表達式)的routingKey所bind的queue可以接收消息; **145\. rabbitmq 怎么實現延遲消息隊列?** 1. 通過消息過期后進入死信交換器,再由交換器轉發到延遲消費隊列,實現延遲功能; 2. 使用 RabbitMQ-delayed-message-exchange 插件實現延遲功能。 **146\. rabbitmq 集群有什么用?** 集群主要有以下兩個用途: * 高可用:某個服務器出現問題,整個 RabbitMQ 還可以繼續使用; * 高容量:集群可以承載更多的消息量。 **147\. rabbitmq 節點的類型有哪些?** * 磁盤節點:消息會存儲到磁盤。 * 內存節點:消息都存儲在內存中,重啟服務器消息丟失,性能高于磁盤類型。 **148\. rabbitmq 集群搭建需要注意哪些問題?** * 各節點之間使用“--link”連接,此屬性不能忽略。 * 各節點使用的 erlang cookie 值必須相同,此值相當于“秘鑰”的功能,用于各節點的認證。 * 整個集群中必須包含一個磁盤節點。 **149\. rabbitmq 每個節點是其他節點的完整拷貝嗎?為什么?** 不是,原因有以下兩個: 1. 存儲空間的考慮:如果每個節點都擁有所有隊列的完全拷貝,這樣新增節點不但沒有新增存儲空間,反而增加了更多的冗余數據; 2. 性能的考慮:如果每條消息都需要完整拷貝到每一個集群節點,那新增節點并沒有提升處理消息的能力,最多是保持和單節點相同的性能甚至是更糟。 **150\. rabbitmq 集群中唯一一個磁盤節點崩潰了會發生什么情況?** 如果唯一磁盤的磁盤節點崩潰了,不能進行以下操作: * 不能創建隊列 * 不能創建交換器 * 不能創建綁定 * 不能添加用戶 * 不能更改權限 * 不能添加和刪除集群節點 唯一磁盤節點崩潰了,集群是可以保持運行的,但你不能更改任何東西。 **151\. rabbitmq 對集群節點停止順序有要求嗎?** RabbitMQ 對集群的停止的順序是有要求的,應該先關閉內存節點,最后再關閉磁盤節點。如果順序恰好相反的話,可能會造成消息的丟失。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看