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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 連接池核心接口與實現 連接池ConnectionPool主要有三個核心接口: 1. Init:初始化好Array[DBClientConnection],這個接口只在服務啟動時調用一次 2. GetConnection:請求每次需要訪問數據庫時,不是connect一個連接,而是通過連接池的這個接口來拿 3. FreeConnection:請求每次訪問完數據庫時,不是close一個連接,而是把這個連接放回連接池 連接池核心數據結構: 1. 連接數組Array DBClientConnection [N] 2. 互斥鎖數組Array lock[N] ## init() ``` Init(){ for i = 1 to N { Array DBClientConnection [i] = new(); Array DBClientConnection [i]->connect(); Array lock[i] = 0; } } ``` > 把所有連接和互斥鎖初始化,0表示沒鎖,1表示鎖 ### GetConnection() ``` GetConnection(){ for i = 1 to N { if(Array lock[i] == 0){ Array lock[i] = 1; return Array DBClientConnection[i]; } } } ``` > 找一個可用的連接(狀態為 0),鎖住,并返回連接 ### FreeConnection(c) ``` FreeConnection(c) for i = 1 to N { if(Array DBClientConnection [i] == c){ Array lock[i] = 0; } } } ``` > 找到連接,把鎖釋放 ## 其他問題 1. 如果連接全部被占用,是返回失敗,還是讓上游等待 2. 需要實施連接可用性檢測 3. 為了讓調用方更友好,可能還需要包裝一層DAO層,讓“連接”這個東西對調用方都是黑盒的 3. 通過freeArray,connectionMap可以讓取連接和放回連接都達到O(1)時間復雜度 3. 可以通過hash實現id串行化 3. 負載均衡、故障轉移、服務自動擴容都可以在這一層實現
                  <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>

                              哎呀哎呀视频在线观看