1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      nacosaddress中postCluster的原理及作用是什么

      本篇內(nèi)容介紹了“nacos address中postCluster的原理及作用是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

      成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供武昌網(wǎng)站建設、武昌做網(wǎng)站、武昌網(wǎng)站設計、武昌網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、武昌企業(yè)網(wǎng)站模板建站服務,十余年武昌做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

      本文主要研究一下nacos address的postCluster

      AddressServerClusterController

      nacos-1.1.3/address/src/main/java/com/alibaba/nacos/address/controller/AddressServerClusterController.java

      @RestController
      @RequestMapping({AddressServerConstants.ADDRESS_SERVER_REQUEST_URL + "/nodes"})
      public class AddressServerClusterController {
      
          @Autowired
          private ServiceManager serviceManager;
      
          @Autowired
          private AddressServerManager addressServerManager;
      
          @Autowired
          private AddressServerGeneratorManager addressServerGeneratorManager;
      
          /**
           * @param product Ip list of products to be associated
           * @param cluster Ip list of product cluster to be associated
           * @param ips     will post ip list.
           * @return
           */
          @RequestMapping(value = "", method = RequestMethod.POST)
          public ResponseEntity postCluster(@RequestParam(required = false) String product,
                                            @RequestParam(required = false) String cluster,
                                            @RequestParam(name = "ips") String ips) {
      
              //1. prepare the storage name for product and cluster
              String productName = addressServerGeneratorManager.generateProductName(product);
              String clusterName = addressServerManager.getDefaultClusterNameIfEmpty(cluster);
      
              //2. prepare the response name for product and cluster to client
              String rawProductName = addressServerManager.getRawProductName(product);
              String rawClusterName = addressServerManager.getRawClusterName(cluster);
              Loggers.addressLogger.info("put cluster node,the cluster name is " + cluster + "; the product name=" + product + "; the ip list=" + ips);
              ResponseEntity responseEntity;
              try {
                  String serviceName = addressServerGeneratorManager.generateNacosServiceName(productName);
      
                  Cluster clusterObj = new Cluster();
                  clusterObj.setName(clusterName);
                  clusterObj.setHealthChecker(new AbstractHealthChecker.None());
                  serviceManager.createServiceIfAbsent(Constants.DEFAULT_NAMESPACE_ID, serviceName, false, clusterObj);
                  String[] ipArray = addressServerManager.splitIps(ips);
                  String checkResult = AddressServerParamCheckUtil.checkIps(ipArray);
                  if (AddressServerParamCheckUtil.CHECK_OK.equals(checkResult)) {
                      List instanceList = addressServerGeneratorManager.generateInstancesByIps(serviceName, rawProductName, clusterName, ipArray);
                      for (Instance instance : instanceList) {
                          serviceManager.registerInstance(Constants.DEFAULT_NAMESPACE_ID, serviceName, instance);
                      }
                      responseEntity = ResponseEntity.ok("product=" + rawProductName + ",cluster=" + rawClusterName + "; put success with size=" + instanceList.size());
                  } else {
                      responseEntity = ResponseEntity.status(HttpStatus.BAD_REQUEST).body(checkResult);
                  }
              } catch (Exception e) {
                  responseEntity = ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
              }
      
              return responseEntity;
          }
      
          //......
      }
      • postCluster方法接收product、cluster、ips參數(shù);其中productName通過addressServerGeneratorManager.generateProductName(product)生成;clusterName通過addressServerManager.getDefaultClusterNameIfEmpty(cluster)生成

      • 之后通過通過addressServerGeneratorManager.generateNacosServiceName(productName)生成serviceName,然后通過serviceManager.createServiceIfAbsent創(chuàng)建service

      • 之后校驗下ip地址,校驗通過的話,會通過addressServerGeneratorManager.generateInstancesByIps(serviceName, rawProductName, clusterName, ipArray)生成instanceList,然后遍歷instanceList執(zhí)行naming模塊中的serviceManager的registerInstance方法

      AddressServerGeneratorManager

      nacos-1.1.3/address/src/main/java/com/alibaba/nacos/address/component/AddressServerGeneratorManager.java

      @Component
      public class AddressServerGeneratorManager {
      
          public String generateProductName(String name) {
      
              if (StringUtils.isBlank(name) || AddressServerConstants.DEFAULT_PRODUCT.equals(name)) {
      
                  return AddressServerConstants.ALIWARE_NACOS_DEFAULT_PRODUCT_NAME;
              }
      
              return String.format(AddressServerConstants.ALIWARE_NACOS_PRODUCT_DOM_TEMPLATE, name);
          }
      
          /**
           * @param rawServiceName the raw service name will not contains the {@Constans.DEFAULT_GROUP}
           * @return the nacos service name
           */
          public String generateNacosServiceName(String rawServiceName) {
      
              if (rawServiceName.indexOf(Constants.DEFAULT_GROUP) != -1) {
                  return rawServiceName;
              }
      
              return Constants.DEFAULT_GROUP + AddressServerConstants.GROUP_SERVICE_NAME_SEP + rawServiceName;
          }
      
          public List generateInstancesByIps(String serviceName, String rawProductName, String clusterName, String[] ipArray) {
              if (StringUtils.isEmpty(serviceName)
                  || StringUtils.isEmpty(clusterName)
                  || ipArray == null || ipArray.length == 0) {
                  return Collections.emptyList();
              }
      
              List instanceList = new ArrayList<>(ipArray.length);
              for (String ip : ipArray) {
                  String[] ipAndPort = generateIpAndPort(ip);
                  Instance instance = new Instance();
                  instance.setIp(ipAndPort[0]);
                  instance.setPort(Integer.valueOf(ipAndPort[1]));
                  instance.setClusterName(clusterName);
                  instance.setServiceName(serviceName);
                  instance.setTenant(Constants.DEFAULT_NAMESPACE_ID);
                  instance.setApp(rawProductName);
                  instance.setEphemeral(false);
                  instanceList.add(instance);
              }
      
              return instanceList;
          }
      
          //......
      }
      • AddressServerGeneratorManager的generateProductName方法對于name為空或者是nacos的,返回nacos.as.default,否則返回nacos.as.前綴加name

      • generateNacosServiceName會返回DEFAULT_GROUP@@加rawServiceName,默認rawServiceName是不包含DEFAULT_GROUP的

      • generateInstancesByIps方法遍歷ipArray,挨個創(chuàng)建instance,注意這里設置了ephemeral為false

      AddressServerManager

      nacos-1.1.3/address/src/main/java/com/alibaba/nacos/address/component/AddressServerManager.java

      @Component
      public class AddressServerManager {
      
          public String getRawProductName(String name) {
      
              if (StringUtils.isBlank(name) || AddressServerConstants.DEFAULT_PRODUCT.equals(name)) {
      
                  return AddressServerConstants.DEFAULT_PRODUCT;
              }
      
              return name;
          }
      
          public String getRawClusterName(String name) {
      
              return getDefaultClusterNameIfEmpty(name);
          }
      
          public String getDefaultClusterNameIfEmpty(String name) {
      
              if (StringUtils.isEmpty(name) || AddressServerConstants.DEFAULT_GET_CLUSTER.equals(name)) {
                  return AddressServerConstants.DEFAULT_GET_CLUSTER;
              }
      
              return name;
          }
      
          public String[] splitIps(String ips) {
      
              if (StringUtils.isBlank(ips)) {
      
                  return new String[0];
              }
      
              return ips.split(AddressServerConstants.MULTI_IPS_SEPARATOR);
          }
             
          //......
      }
      • getRawProductName方法對于name為空或者是name已經(jīng)是nacos的返回nacos,否則返回原值;getRawClusterName內(nèi)部調用的是getDefaultClusterNameIfEmpty方法,它對于name是空或者name已經(jīng)是serverlist的返回serverlist,否則返回原值;splitIps方法根據(jù)AddressServerConstants.MULTI_IPS_SEPARATOR來分割字符串為數(shù)組

      小結

      • postCluster方法接收product、cluster、ips參數(shù);其中productName通過addressServerGeneratorManager.generateProductName(product)生成;clusterName通過addressServerManager.getDefaultClusterNameIfEmpty(cluster)生成

      • 之后通過通過addressServerGeneratorManager.generateNacosServiceName(productName)生成serviceName,然后通過serviceManager.createServiceIfAbsent創(chuàng)建service

      • 之后校驗下ip地址,校驗通過的話,會通過addressServerGeneratorManager.generateInstancesByIps(serviceName, rawProductName, clusterName, ipArray)生成instanceList,然后遍歷instanceList執(zhí)行naming模塊中的serviceManager的registerInstance方法

      “nacos address中postCluster的原理及作用是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質量的實用文章!


      當前題目:nacosaddress中postCluster的原理及作用是什么
      當前網(wǎng)址:http://ef60e0e.cn/article/iggipg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        土默特左旗| 济宁市| 边坝县| 武威市| 上犹县| 祁连县| 石棉县| 隆子县| 桑植县| 工布江达县| 巍山| 荣成市| 赤峰市| 古田县| 沛县| 荣成市| 扎兰屯市| 政和县| 柳江县| 蒙阴县| 屏南县| 稻城县| 万宁市| 临邑县| 新泰市| 嘉祥县| 吉隆县| 绵竹市| 瑞丽市| 通化县| 报价| 乌鲁木齐县| 滨海县| 宝山区| 娱乐| 仁化县| 龙州县| 房产| 崇礼县| 丹凤县| 文成县|