亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 基礎知識 > 正文

Mycat 連接池模型源碼

2024-09-12 20:30:04
字體:
來源:轉載
供稿:網友

  PhysicalDBNode 是Mycat集群(Datanode)的對應,引用一個連接池對象 PhysicalDBPool,
  PhysicalDBPool 里面引用了真正的連接池對象 PhysicalDatasource,PhysicalDBPool 里面把該
  集群的讀節點,寫節點寫入各自的 PhysicalDatasource 數組,通過負載均衡決定走哪個節點
  負載均衡策略:隨機選擇,按權重設置隨機概率
  代碼:randomSelect
  節點權重計算公式String weightStr = node.getAttribute("weight");
  int weight = "".equals(weightStr) ? PhysicalDBPool.WEIGHT : Integer.parseInt(weightStr) ;
  負載均衡:offset -= okSources.get(i).getConfig().getWeight();
  沒明白為什么這么分配,難道可用達到權重越大,分配可能性越?????
 
  public PhysicalDatasource randomSelect(ArrayList<PhysicalDatasource> okSources) {
 
     if (okSources.isEmpty()) {
        return this.getSource();
 
     } else {      
 
        int length = okSources.size();     // 總個數
          int totalWeight = 0;         // 總權重
          boolean sameWeight = true;        // 權重是否都一樣
          for (int i = 0; i < length; i++) {            
              int weight = okSources.get(i).getConfig().getWeight();
              totalWeight += weight;        // 累計總權重               
              if (sameWeight && i > 0
                    && weight != okSources.get(i-1).getConfig().getWeight() ) {      // 計算所有權重是否一樣                              
                  sameWeight = false;    
              }
          }
 
          if (totalWeight > 0 && !sameWeight ) {
 
             // 如果權重不相同且權重大于0則按總權重數隨機
              int offset = random.nextInt(totalWeight);
 
              // 并確定隨機值落在哪個片斷上
              for (int i = 0; i < length; i++) {
                  offset -= okSources.get(i).getConfig().getWeight();
                  if (offset < 0) {
                      return okSources.get(i);
                  }
              }
          }
 
          // 如果權重相同或權重為0則均等隨機
          return okSources.get( random.nextInt(length) );    
 
        //int index = Math.abs(random.nextInt()) % okSources.size();
        //return okSources.get(index);
     }
  }
  PhysicalDatasource 連接池對象保存該連接的可用連接使用的數據結構是,ConMap,主要功能是獲取當前節點的可用連接,首先從當前database上獲取可用連接,如果沒有,則從其他 database 上獲取可用連接
 
  public BackendConnection tryTakeCon(final String schema, boolean autoCommit) {
     final ConQueue queue = items.get(schema);
     BackendConnection con = tryTakeCon(queue, autoCommit);
     if (con != null) {
        return con;
     } else {
        for (ConQueue queue2 : items.values()) {
           if (queue != queue2) {
              con = tryTakeCon(queue2, autoCommit);
              if (con != null) {
                 return con;
              }
           }
        }
     }
     return null;
 
  }
  private BackendConnection tryTakeCon(ConQueue queue, boolean autoCommit) {
 
     BackendConnection con = null;
     if (queue != null && ((con = queue.takeIdleCon(autoCommit)) != null)) {
        return con;
     } else {
        return null;
     }
 
  }
  database的可用連接是存放在數據結構ConQueue中的,可用連接分為自動提交,手動提交,所以ConQueue由2個ConcurrentLinkedQueue組成,autoCommitCons 自動提交隊列,manCommitCons 手動提交隊列
  分配可用連接:先從提交方式隊列隊首分配,分配失敗,從另一個隊列分配,分配失敗,從其他databse 分配。猜想:此處分配完成應該不是最種的可用連接,還需要做事務隔離級別、事務模式、字符集、Database 等等處理和校驗,才能執行具體的 sql 指令,這些應該是在MySQLConnection 類中進行的
 
  public BackendConnection takeIdleCon(boolean autoCommit) {
     ConcurrentLinkedQueue<BackendConnection> f1 = autoCommitCons;
     ConcurrentLinkedQueue<BackendConnection> f2 = manCommitCons;
 
     if (!autoCommit) {
        f1 = manCommitCons;
        f2 = autoCommitCons;
 
     }
     BackendConnection con = f1.poll();
     if (con == null || con.isClosedOrQuit()) {
        con = f2.poll();
     }
     if (con == null || con.isClosedOrQuit()) {
        return null;
     } else {
        return con;
     }

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品av电影| 91精品国产777在线观看| 国产在线日韩在线| 九九热在线精品视频| 亚洲人成电影网站色…| 久久91精品国产91久久跳| 欧美www视频在线观看| 欧美精品第一页在线播放| 成人免费网视频| 久久久免费观看视频| 色多多国产成人永久免费网站| 日韩精品视频在线免费观看| 日韩av免费在线看| 日本久久久久亚洲中字幕| 一本大道香蕉久在线播放29| 亚洲视频国产视频| 成人精品aaaa网站| 91精品久久久久久久久中文字幕| 92裸体在线视频网站| 亚洲无线码在线一区观看| 成人午夜黄色影院| 国产成人在线播放| 欧美日韩xxxxx| 精品久久久久久电影| 色偷偷噜噜噜亚洲男人的天堂| 久久亚洲精品毛片| 久久久亚洲国产| 亚洲欧美变态国产另类| 国产午夜一区二区| 51色欧美片视频在线观看| 亚洲另类xxxx| 超碰91人人草人人干| 亚洲乱码国产乱码精品精天堂| 亚洲欧美国产精品久久久久久久| 亚洲免费视频网站| 欧美性做爰毛片| 亚洲人成网站999久久久综合| 国产综合视频在线观看| 中文字幕久久亚洲| 欧美精品video| 国产香蕉97碰碰久久人人| 欧美日韩aaaa| 色综合天天狠天天透天天伊人| 另类图片亚洲另类| 久久久精品2019中文字幕神马| 日韩av在线影院| 亚洲欧美日韩精品久久亚洲区| 亚洲成人精品久久久| 91香蕉国产在线观看| 7777kkkk成人观看| 欧美激情亚洲视频| 亚洲精品www久久久| 成人国产精品一区| 亚洲成人精品视频在线观看| 欧美性色19p| 韩国精品美女www爽爽爽视频| 欧美黑人xxxx| 国产精品第1页| 日韩精品视频在线| 成人精品一区二区三区电影免费| 亚洲精品美女在线观看播放| 国产欧美在线视频| 中文字幕久热精品在线视频| 国产精品久久激情| 欧美国产日产韩国视频| 日韩av电影在线网| www.日韩系列| 91福利视频在线观看| 久久国产精品久久久久久| 亚洲www视频| 欧美日韩国产页| 日本三级久久久| 国产午夜精品美女视频明星a级| 亚洲无亚洲人成网站77777| 亚洲成人网在线| 亚洲精品电影网| 伊人伊人伊人久久| 亚洲欧美国产精品va在线观看| 中文字幕日韩免费视频| 日韩动漫免费观看电视剧高清| 亚洲va国产va天堂va久久| 欧美日韩亚洲系列| 国产一区二区成人| 97超碰国产精品女人人人爽| 亚洲jizzjizz日本少妇| 成人免费视频在线观看超级碰| 国产成人精品一区二区三区| 美女性感视频久久久| 欧美极品少妇xxxxⅹ裸体艺术| 日韩大片在线观看视频| 国产精品普通话| 亚洲国产精品久久久久| 亚洲欧美在线x视频| 欧美最猛性xxxxx亚洲精品| 成人欧美一区二区三区在线湿哒哒| 久久视频免费在线播放| 亚洲2020天天堂在线观看| 精品亚洲一区二区三区| 亚洲精品电影网站| 日韩免费高清在线观看| 日韩美女写真福利在线观看| 国产成人亚洲综合青青| 国产在线高清精品| 久久精品91久久久久久再现| 日韩有码在线播放| 少妇av一区二区三区| 国产亚洲精品久久| 欧美日韩视频免费播放| 97在线精品国自产拍中文| 亚洲精品电影久久久| 姬川优奈aav一区二区| 国产成人精品免高潮费视频| 91av在线免费观看| 日韩av色在线| 视频在线观看一区二区| 精品亚洲一区二区三区在线观看| 亚洲视频电影图片偷拍一区| 亚洲国产91精品在线观看| 欧美中文字幕视频在线观看| 久久亚洲一区二区三区四区五区高| 亚洲女人天堂av| 亚洲女人天堂网| 精品少妇一区二区30p| 91久久久久久久久久久久久| 国产欧美日韩高清| 国产视频精品自拍| 国产日韩精品视频| 中文字幕欧美日韩va免费视频| 亚洲的天堂在线中文字幕| 亚洲欧美激情另类校园| 国产精品日韩欧美大师| 成人日韩在线电影| 热草久综合在线| 久久精品国产亚洲精品| 综合网日日天干夜夜久久| 亚洲理论在线a中文字幕| 国产91成人在在线播放| 欧美日韩黄色大片| 久久99亚洲热视| 亚洲国产成人久久| 国产欧美一区二区三区久久| 国产午夜精品麻豆| 欧美高清视频免费观看| 国产精品视频一区国模私拍| 亚洲精品福利在线观看| 亚洲国产黄色片| 国产成人精品视| 亚洲精品久久久久久久久久久| 亚洲精品国产免费| 国产一区二区精品丝袜| 中文字幕在线国产精品| 国产成人jvid在线播放| 久久激情视频久久| 亚洲最大福利网| 精品国产一区二区三区久久久狼| 欧美成人黑人xx视频免费观看| 国产精品扒开腿做爽爽爽视频| 亚洲自拍偷拍区| 亚洲欧美国产一区二区三区| 日本久久亚洲电影| 成人看片人aa| 日韩免费不卡av| 91av在线播放视频| 97色在线观看|