spring cloud alibaba nacos 註冊中心,配置中心組件

一、 nacos 下載及安裝

nacos 官網下載 nacos-server-1.2.0-beta.1.tar.gz 解壓

執行  startup.cmd 命令

訪問 localhost:8848/nacos

賬號: nacos

密碼: nacos

 

二、創建cloudalibaba-provider-payment9001 項目‘

1.添加 spring cloud alibaba nacos 依賴

   <dependencies>
        <!--  SpringCloud alibaba nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--  web組件      -->
        <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>com.sc2020</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </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
management:
  endpoints:
    web:
      exposure:
        include: "*"

3.啓動類添加 註解:@EnableDiscoveryClient

4.消費者服務也需要註冊到nacos註冊中心,使用restTemplate或者feign調用接口即可

5.  nacos 與 其他註冊中心特性對比

 6. Nacos 中 AP和CP模式的切換(NACOS支持AP和CP模式的切換)

C是 所有的節點在同一時間看到的數據是一致的,而A的定義是所有的請求都會收到響應。

 

何時選擇使用何種模式?

一般來說,

如果不需要存儲服務級別的信息且服務實例是通過nacos-client 註冊,並能夠保持心跳的上報,那麼就可以選擇AP模式。當前主流的服務如 spring cloud 和 duboo 服務,都適用於 AP模式,AP模式爲了服務的可能性而減弱了一致性,因此AP模式下只支持註冊臨時實例。

如果在服務級別編輯或者存儲配置信息,那麼CP是必須,K8S服務和DNS服務則適用於CP模式,CP模式下則支持註冊持久化實例,此時則是以Raft協議爲集羣運行模式,該模式註冊實例之前必須先註冊服務,如果服務不存在,則返回錯誤。

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

7. NACOS 作爲分佈式配置中心

(1)pom文件添加依賴

   <dependencies>
        <!--  SpringCloud alibaba nacos config   -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- SpringCloud alibaba nacos discovery -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--  web組件      -->
        <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>com.sc2020</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

(2)編寫 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格式的配置

# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

(3) 編寫 application.yml

spring:
  profiles:
    active: dev   #表示開發環境

(4) 服務啓動類添加 @EnableDiscoveryClient  

     控制層controller 添加  @RefreshScope 以支持nacos的動態刷新功能

    使用 @Value註解 即可讀取到 nacos 配置中心的配置項內容

最後公式 : ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

nacos ui 頁面創建配置項

 8. 命名空間 、分組和DataID 三者關係

 默認清庫:

   Namespace = public ,Group = DEFAULT_GROUP ,  默認cluster 是 DEFAULT. 

不使用默認的 group的情況下,可以在nacos 上創建 不同的 group,只需在bootstrap.yml文件中指定相應的 nacos config group 

配置項即可。

不使用 nacos 的默認命名空間的情況下,可以 新建其他的命名空間,新建完成之後  會生成一個命名空間序列號。如下所示在 bootstrap.yml中配置即可。

 9.nacos 的 集羣介紹

(1) nacos 默認自帶的是嵌入式數據庫derby,可以查看 https://github.com/alibaba/nacos/blob/develop/config/pom.xml 得知引入的有apache derby 數據庫依賴。

(2)derby 數據庫切換到 mysql 數據庫的配置步驟

nacos-server-1.1.4 /nacos/config 目錄下找到sql腳本 ,執行 nacos-mysql.sql腳本 建表。

創建的數據庫名稱爲:nacos_config

nacos-server-1.1.4/nacos/config 目錄下找到application.properties ,在最後面添加 mysql相關的配置項

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=1234

配置完成之後重啓 nacos 即可,此時可以看到一個全新的空記錄界面,之前是數據被記錄到derby中,現在是數據記錄到mysql 中。

10. Linux 版本nacos 集羣搭建

1個nginx + 3個nacos + 1個mysql 數據庫配置

正常情況下 高可用需要 多個nginx 實例,這裏爲了方只配置一個nginx實例。

(1)將nacos默認的數據庫derby 切換到 mysql。

下載安裝linux 版本的nacos ,解壓後 找到 config 目錄下的nacos-mysql.sql腳本並執行建表語句,修改 application.properties ,添加 同9(nacos集羣的介紹)中的mysql 相關配置項。

(2)複製 cluster.config.example 爲 cluster.config 配置文件

 cp  cluster.config.example cluster.config

向 cluster.config 配置文件中添加如下信息用來說明以下三個nacos節點作爲一個集羣。

192.168.100.120:3333
192.168.100.120:4444
192.168.100.120:5555

注意: 這裏的ip地址不能直接寫成127.0.0.1,則應寫成 linux命令hostname -i可以識別的ip地址。

(3) 複製 startup.sh 爲 startup.sh.bk 作爲一個備份文件,防止我們將startup.sh 修改壞了。

需要修改以下 三個地方:

添加    :p

          $PORT = $OPTARG;;

          -Dserver.port = ${PORT}

 

 執行命令依次啓動三個 nacos 節點:

startup -p 3333

startup -p 4444

startup -p 5555

(4) 配置 nginx 

啓動 nginx ,執行 nginx -c  /usr/local/nginx/conf/nginx.conf

訪問  http://192.168.100.120:1111/nacos/#/login  測試 通過nginx 訪問nacos

 執行命令 ps -ef | grep nacos | grep -v grep | wc -l  返回  3 ,說明三個nacos 節點已正常啓動。 

最後將 項目 的application.yml中的 nacos server-addr 修改爲 nginx 的訪問地址(192.168.100.120:1111)即可。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章