Spring Cloud Alibaba-Nacos(十二)

簡介

Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理官方文檔html

搭建步驟

  • nacos.client(springboot)git

    • 引依賴
    <!--子工程引入-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--父工程管理version-->
        <properties>
            <springcloudalibaba.version>0.9.0.RELEASE</springcloudalibaba.version>
        </properties>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${springcloudalibaba.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
         </dependencyManagement>
    複製代碼
    • 加註解
    複製代碼
    • 加配置
    # yml對縮進有嚴格的要求,務必一致
    spring:
      cloud:
        nacos:
          discovery:
            # 指定nacos server的地址
            server-addr: localhost:8848
      application:
        # 服務名稱儘可能用-,不要用_,不要用特殊字符
        name: user-center
    複製代碼
  • nacos.servergithub

    • 從spring-cloud-alibaba-dependencies找到client版本
    <nacos.client.version>1.0.0</nacos.client.version>
    複製代碼
    tar -xvf nacos-server-$version.tar.gz
    cd ./nacos/bin
    sh startup.sh -m standalone
    複製代碼

使用

原生寫(能夠經過整合ribbon,feign優化)spring

...
      private final DiscoveryClient discoveryClient;
...
       List<ServiceInstance> instances = discoveryClient.getInstances("lock-center");
        String url = instances.stream()
                .map(instance -> instance.getUri() + "/lock/test/{id}")
                .findFirst()
                .orElseThrow(() -> new IllegalArgumentException("沒有當前實例"));
        List<String> urls = instances.stream()
                .map(instance -> instance.getUri() + "/lock/test/{id}")
                .collect(Collectors.toList());
        int i = ThreadLocalRandom.current().nextInt(urls.size());
        log.info("請求的URl:{}",urls.get(i));
        TblCar tblCar = restTemplate.getForObject(urls.get(i), TblCar.class, 4000002L);
複製代碼

領域模型

  • 層級
    • Namespace:實現隔離,默認public
      • Namespace不一樣的服務沒法互相調用
    • Group:不一樣服務能夠分到同一組,默認DEFAULT-GROUP
    • Service:微服務
    • Cluster:對指定微服務的虛擬劃分,默認DEFAULT
    • Instance:微服務實例

元數據

  • 級別
    • 服務級別
    • 集羣級別
    • 實例級別
  • 設置
    • 控制檯
    • yml
      # yml對縮進有嚴格的要求,務必一致
      spring:
        cloud:
          nacos:
            discovery:
              metadata:
                version: v1
      複製代碼
相關文章
相關標籤/搜索