naocs 作為服務註冊與發現和配置中心

CyrusHuang發表於2024-08-15

下載和安裝

國內的軟體,去官網下就行了,下載好後到其 bin 目錄執行命令 startup.cmd -m standalone 服務就會啟動

naocs 作為服務註冊與發現和配置中心

瀏覽器訪問,能訪問到 nacos 介面

naocs 作為服務註冊與發現和配置中心

小試牛刀

  1. 工程匯入依賴

    <!-- 當前服務註冊到 nacos 需要 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    <!-- 當前服務如果需要呼叫別的服務就需要引入(如果不需要就無需引入) -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>
    
    <!-- 如果需要拉取 nacos 配置中心,需要加入這倆依賴(如果不需要就無需引入) -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
    
  2. 啟動類加註解

    // 注意沒用 @EnableFeignClients,因為當前工程不需要發起遠端呼叫,只是一個示例服務,只要能夠註冊到 nacos 就行
    @SpringBootApplication
    @EnableDiscoveryClient
    public class SpringbootApplication {
        public static void main(String[] args) {
            SpringApplication.run(SpringbootApplication.class, args);
        }
    }
    
  3. 讀取 nacos 配置檔案

    @RestController
    @RefreshScope
    public class TestController {
    
        // 讀取配置檔案的 test.username 值
        @Value("${test.username}")
        private String username;
    
        @GetMapping("/testGetConfig")
        public String testGetConfig(){
            return username;
        }
    }
    
  4. 配置檔案,同 consul 一樣,也會有兩個

    # application.yml,這裡配置工程自己的
    server:
      port: 9002
      profiles:
      	active: dev
            
            
    # bootrsap.yml,這裡配置 nacos 相關的
    spring:
      application:
        name: my-nacos-config-client
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 # Nacos 服務註冊中心地址
          config:
            server-addr: localhost:8848 # Nacos 配置中心地址
            file-extension: yaml # 指定 yaml 格式的配置
    
    
  5. 啟動服務,重新整理 nacos 頁面,就能看到我們的服務了

    naocs 作為服務註冊與發現和配置中心
  6. 建立配置,我們是 my-nacos-config-client 服務,環境是 dev,指定的格式是 yaml,當前工程就會到 nacos 拉取 my-nacos-config-client-dev.yaml 這個配置檔案

    naocs 作為服務註冊與發現和配置中心
  7. 訪問測試

    naocs 作為服務註冊與發現和配置中心

nacos 使用細節

  1. 註冊與發現的配置類:com.alibaba.cloud.nacos.NacosDiscoveryProperties
  2. 分散式配置中心的配置類:com.alibaba.cloud.nacos.NacosConfigProperties
  3. 服務分為持久例項和臨時例項
    1. 臨時(預設):資料儲存在記憶體中,客戶端主動傳送心跳到客戶端,5秒一次,連續 3 次(15s)心跳檢測失敗視為不健康,連續 6 次(30s)心跳檢測失敗剔除服務
    2. 持久:需要配置,持久化到磁碟中,服務端主動檢測客戶端心跳,20 秒一次,一次失敗就視為不健康
  4. 資料模型為三元模型:名稱空間(namespace,預設 public)、分組(group,預設 DEFAULT_GROUP)、服務(data id)

相關文章