<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 請求處理 * Apache Kafka 自定義了一組請求協議 * 所有請求都是通過 TCP 以 Socket 的方式通訊 Kafka Broker 處理請求的全流程 * 順序處理請求 ``` Java while (true) { Request request = accept(connection); handle(request); } ``` * 缺陷:吞吐太差 --- * 每個請求使用單獨線程處理 ``` Java while (true) { Request = request = accept(connection); Thread thread = new Thread(() -> { handle(request);}); thread.start(); } ``` * 優點:吞吐大 * 缺點:資源開銷大 * 適合請求發送頻率低的場景 --- * Kafka 使用 Reactor 模式 Reactor 模式 * Reactor 模式是事件驅動架構的一種實現方式 * 適合應用于處理多個客戶端并發向服務器端發送請求的場景 * 參考:[http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf](http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf) ![](https://img.kancloud.cn/65/4b/654b83dc6b24d89c138938c15d2e8352_1950x627.png) * 多個 Clients 發送請求到 Reactor * Reactor 的請求分發線程 Dispatcher,i.e. Acceptor 將不同的請求下發到多個 worker 線程中 * Acceptor 只涉及分發,因此有很高的吞吐 * Worker 線程根據業務需求可以任意增減,動態調節系統負載能力 ![](https://img.kancloud.cn/e1/ae/e1ae8884999175dac0c6e21beb2f7e6e_1950x847.png) * Kafka Broker 端參數 `num.network.threads` 調整網絡線程池的線程數,默認為 3 * Acceptor 線程通過輪詢方式將入站請求公平的發送到所有網絡線程中 ![](https://img.kancloud.cn/d8/a7/d8a7d6f0bdf9dc3af4ff55ff79b42068_1950x1153.png) * 當網絡線程拿到請求后,不是自己處理,而是放到一個共享請求隊列中 * Broker 端 IO 線程池負責從該隊列中取出請求,執行真正處理 * 如果是 Produce 請求,將消息寫入到底層的磁盤日志中 * 如果是 Fetch 請求,則從磁盤或頁緩存中讀取消息 * IO 線程池中的線程是執行請求邏輯的真正線程 * Broker 端參數 `num.io.threads` 控制了該線程池中的線程數,默認值為 8 * IO 線程處理完后,將 response 發送到網絡線程池的響應隊列中 * 由對應的網絡線程負責將 response 返回給 client * 請求隊列是所有網絡線程共享,響應隊列是專屬的 Purgatory 組件 * 職責:緩存延時請求(Delayed Request) * 延時請求:一時未能滿足條件不能立刻處理的請求 * e.g. acks=all 的 Produce 請求 需要等待 ISR 中所有的副本都接收了消息才能返回,此時處理該請求的 IO 線程必須等其他 Broker 寫入結果 請求分類 * 數據類請求:Produce、Fetch 這類請求 * 控制類請求:LeaderAndLsr、StopReplica
                  <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>

                              哎呀哎呀视频在线观看