最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從dubbo zookeeper注冊(cè)地址提取出zookeeper地址的方法

 更新時(shí)間:2018年12月25日 08:36:05   作者:isea533  
今天小編就為大家分享一篇關(guān)于從dubbo zookeeper注冊(cè)地址提取出zookeeper地址的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

用途

項(xiàng)目中使用了 dubbo,注冊(cè)中心使用的 zookeeper,使用 zookeeper 實(shí)現(xiàn)了一個(gè)簡單的分布式鎖(依賴 curator),因?yàn)榕渲梦募嬖?dubbo.registry 配置,為了直接使用這個(gè)地址來創(chuàng)建分布式鎖,寫了一個(gè)簡單的方法來提取 zookeeper 地址。

效果

dubbo.registry 有多種配置方式,支持所有情況,下面是常見的例子和提取結(jié)果:

zookeeper://localhost:2181
zookeeper://localhost:2181?client=zkclient
zookeeper://localhost:2181?backup=localhost:2182,localhost:2183
zookeeper://localhost:2181?client=zkclient&backup=localhost:2182,localhost:2183
------------結(jié)果------------
Optional[localhost:2181]
Optional[localhost:2181]
Optional[localhost:2181,localhost:2182,localhost:2182]
Optional[localhost:2181,localhost:2183,localhost:2183]

代碼

import java.util.Optional;
public class ZookeeperURL {
  public static final String PREFIX = "zookeeper://";
  public static final String BACKUP = "backup=";
  public static Optional<String> convertDubboRegistryToZookeeperURL(String dubboRegistry){
    StringBuilder zookeeperURL = new StringBuilder();
    if(dubboRegistry != null && dubboRegistry.startsWith(PREFIX)){
      dubboRegistry = dubboRegistry.substring(PREFIX.length());
      int index = dubboRegistry.indexOf("?");
      if(index > 0){
        zookeeperURL.append(dubboRegistry.substring(0, index));
        dubboRegistry = dubboRegistry.substring(index + 1);
        String[] dubboRegistries = dubboRegistry.split("&");
        for (int i = 0; i < dubboRegistries.length; i++) {
          if(dubboRegistries[i].startsWith(BACKUP)){
            String[] backups = dubboRegistries[i].substring(BACKUP.length()).split(",");
            for (int j = 0; j < backups.length; j++) {
              zookeeperURL.append(",").append(backups[i]);
            }
          }
        }
      } else {
        zookeeperURL.append(dubboRegistry);
      }
      return Optional.of(zookeeperURL.toString());
    }
    return Optional.empty();
  }
  public static void main(String[] args) {
    System.out.println(convertDubboRegistryToZookeeperURL("zookeeper://localhost:2181"));
    System.out.println(convertDubboRegistryToZookeeperURL("zookeeper://localhost:2181?client=zkclient"));
    System.out.println(convertDubboRegistryToZookeeperURL("zookeeper://localhost:2181?backup=localhost:2182,localhost:2183"));
    System.out.println(convertDubboRegistryToZookeeperURL("zookeeper://localhost:2181?client=zkclient&backup=localhost:2182,localhost:2183"));
  }
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

最新評(píng)論

陆良县| 宜兴市| 扎赉特旗| 宁海县| 望奎县| 四平市| 闽侯县| 商河县| 登封市| 商河县| 敖汉旗| 花莲县| 博爱县| 苗栗县| 平凉市| 太康县| 宣化县| 申扎县| 乾安县| 龙岩市| 文水县| 剑阁县| 建宁县| 湖口县| 两当县| 汪清县| 承德市| 大理市| 高尔夫| 柘荣县| 淄博市| 三门县| 中山市| 理塘县| 莒南县| 东乡族自治县| 英吉沙县| 合阳县| 民勤县| 临洮县| 昌宁县|