Nacos 服務注冊和配置中心


一、概述

1、簡介

​ 一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平台,可以替代Eureka做服務配置中心,替代Config做服務配置中心。官方文檔地址:https://nacos.io/en-us/docs/quick-start.html

2、安裝運行

​ 本地環境首先需要安裝好JDK1.8及以上,以及Maven,然后下載nacos。v1.2下載地址:https://github.com/alibaba/nacos/releases/tag/1.2.0 。根據系統版本下載完成后,解壓,運行。瀏覽器地址欄輸入 http://localhost:8848/nacos 看到以下界面便安裝成功。

二、服務注冊

1、新建一個模塊,在pom中加入以下依賴;

<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!--引入自己定義的包-->
    <dependency>
        <groupId>com.xhanglog.springcloud</groupId>
        <artifactId>cloud-api-commons</artifactId>
        <version>${project.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!--熱部署-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2、配置application.yml文件;

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置nacos地址

management:
  endpoints:
    web:
      exposure:
        include: "*"

3、主啟動類加上注解

@SpringBootApplication
@EnableDiscoveryClient

4、先啟動nacos,然后啟動服務提供者,打開nacos可以發現服務注冊成功,如下圖:

三、服務注冊中心

1、基礎配置

  • 新建一個項目,在pom中引入以下依賴;

    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--引入自己定義的包-->
        <dependency>
            <groupId>com.xhanglog.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--熱部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
  • 在配置文件bootstrap.yml中配置以下內容;

    # nacos 配置
    server:
      port: 3377
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #nacos服務地址
          config:
            server-addr: localhost:8848 #nacos作為注冊中心地址
            file-extension: yaml #指定yaml格式peizhi
    
  • 配置application.yml文件;

    spring:
      profiles:
        active: dev #表示開發環境
    
  • 在nacos中添加配置,其讀取配置的規則為${spring.application.name}-${spring.profile.active}.${sping.cloud.nacos.config.server-addr.file-extension},具體配置如下圖:

  • 在業務類要加上注解 @RefreshScope開啟動態刷新。

2、分類配置

  • 方式一:配置DataID

    指定spring.profile.active和配置文件文件的DataID來使不同環境讀取不同的配置,即默認空間+默認分組+不同的DataID。

  • 方式二:配置Group

    將相同的DataID放入不同的組,只需要在bootstrap.yml的config下加上配置group指定組名稱即可。

  • 方式三:配置命名空間

    建立不同的命名空間,在bootstrap.yml的config下加上配置namespace指定要使用的空間。

    四、LInux中集群和持久化

1、集群部署示意圖:

2、初始化 MySQL 數據庫,下載SQL語句源文件,下載地址:https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql

3、修改nacos的conf目錄下的application.properties文件,添加以下內容;

spring.datasource.platform=mysql
db.num=1

db.url.0=jdbc:mysql://1.1.1.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=user
db.password=password

3、配置集群配置文件cluster.conf,每行配置成ip:port(這個IP不能為127.0.0.1,必須是linux的hostname -i能夠識別的IP),配置3個或3個以上節點。如:

# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848

4、編輯nacos的啟動腳本,使它能夠接受不同的啟動端,修改內容如下圖;

​ 修改后的客戶端啟動命令為./startup.sh -p 端口號

5、配置Nginx,修改Nginx的配置文件nginx.conf,修改內容如下:

upstream cluster{
  server 上面配置的ip:端口號;
  server 上面配置的ip:端口號;
  server 上面配置的ip:端口號;
}
server{
  listen nginx的端口號;
  server_name localhost;
  location /{
  proxy_pass http://cluster;
  }
}

案例代碼地址:https://github.com/xhanglog/springcloud-learning


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM