Nacos 高級詳解:提升你的開發和部署效率
Nacos 高級
一 、服務集群
需求
-
服務提供者搭建集群

-
服務調用者,依次顯示集群中各服務的信息


搭建
- 修改服務提供方的controller,打印服務端端口號

package com.czxy.controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* @author 桐叔
* @email liangtong@itcast.cn
*/
@RestController
public class EchoController {
@Resource
private HttpServletRequest request;
@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
int serverPort = request.getServerPort();
return "Hello Nacos Discovery " + string + ":" + serverPort;
}
}
- 編寫yml配置

#端口號
server:
port: 8170
spring:
application:
name: service-provider #服務名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服務地址
#端口號
server:
port: 8270
spring:
application:
name: service-provider #服務名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服務地址
-
配置idea啟動項
-Dspring.profiles.active=8170


測試
-
啟動3個服務(2個服務提供,1個服務消費)

-
查看nacos控制臺

二、 加載配置文件順序
- 對
3.4.5章節/第4步內容進行詳解 - 加載配置文件的順序(第4步詳解)
nacos 配置 DataId 介紹
-
nacos 提供了3種方式,配置dataId的加載順序
A: 共享配置:(過時),使用 shared-configs 替代 ? spring.cloud.nacos.config.shared-dataids ? spring.cloud.nacos.config.refreshable-dataids B: 加載多配置:(過時),使用 extension-configs 替代 ? spring.cloud.nacos.config.ext-config[n] C: 內部規則拼接: ? spring.cloud.nacos.config.prefix ? spring.cloud.nacos.config.file-extension ? spring.cloud.nacos.config.group -
配置 yml 文件中的 DataId
spring: application: name: config-service # 服務名 cloud: nacos: config: server-addr: 127.0.0.1:8848 # nacos 服務地址 # shared-dataids: test1.yml # 4.1 共享配置 (已過時) # refreshable-dataids: test1.yml shared-configs: # 4.1 共享配置【最新】 - data-id: test1-1.yml group: DEFAULT_GROUP refresh: true - data-id: test1-2.yml group: DEFAULT_GROUP refresh: true # ext-config: # 4.2 配置多個 (已過時) # - data-id: test2-1.yml # group: DEFAULT_GROUP # refresh: true # - data-id: test2-2.yml # group: DEFAULT_GROUP # refresh: true extension-configs: # 4.2 配置多個 【最新】 - data-id: test2-1.yml group: DEFAULT_GROUP refresh: true - data-id: test2-2.yml group: DEFAULT_GROUP refresh: true prefix: ${spring.application.name} # 4.3 data ID的前綴,默認服務名 file-extension: yaml # data ID的后綴:config-service.yaml group: DEFAULT_GROUP # 組名 discovery: server-addr: 127.0.0.1:8848 #nacos服務地址
配置 console中的DataId
- nacos控制臺配置

測試
-
后面加載的dataId將覆蓋前面加載的dataId設置的內容
-
查看日志

Located property source: [
BootstrapPropertySource {name='bootstrapProperties-test3-demo.yaml'}, BootstrapPropertySource {name='bootstrapProperties-test3.yaml'}, BootstrapPropertySource {name='bootstrapProperties-test2-2.yml'}, BootstrapPropertySource {name='bootstrapProperties-test2-1.yml'}, BootstrapPropertySource {name='bootstrapProperties-test1.yml'}]
三、 多環境配置
介紹
在Nacos為不同的環境(開發、測試、生產等)中,提供了多個不同管理級別的概念,包括:Data ID、Group、Namespace。
| 概念 | 描述 |
|---|---|
| Data ID | 數據唯一標識,可理解為Spring Cloud應用的配置文件名 |
| Group | 用來對Data ID做集合管理,相當于小分類 |
| Namespace | 用于進行租戶粒度的配置隔離。相當于大分類 |
配置介紹
-
組group配置
spring.cloud.nacos.config.group= #組名稱 -
命名空間 namespace配置 注意:namespace的ID
spring.cloud.nacos.config.namespace= #namespace的ID

配置內容
- 在nacos 控制臺配置namespace

- 在nacos控制臺顯示namespace

數據持久化
- 在單機模式時
nacos默認使用嵌入式數據實現數據存儲,0.7版本后增加了mysql存儲數據。
初始化數據庫
-
在conf目錄下,提供了
nacos-mysql.sqlSQL語句,進行數據庫的初始化-
要求:5.6+ mysql
-
注意:如果使用mysql 5.5,需要修改sql語句

-
-
提供的SQL語句沒有創建database,手動創建nacos_config
開啟mysql存儲
- conf目錄下,提供了
application.properties可以修改數據庫配置信息

### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config_2_1?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1234
- 配合完成后,重啟nacos
測試
- 添加配置信息

- 檢查數據庫存儲

Nacos集群搭建
概述
-
3個或3個以上Nacos節點才能構成集群
-
配置數據源
-
使用內置數據源
startup.cmd -p embedded -
使用外置數據源(MySQL,參考4.4.2)
-
-
在一臺主機配置多個節點的端口號不能連續。
- 例如:8841/8842/8843 不可用
- 例如:8841/8843/8845 可用
配置步驟

-
節點1:配置Nacos8841
- 配置數據源
- 修改端口號:8841
- 配置集群配置文件
- 啟動服務:startup.cmd
-
節點2:復制Nacos8843
- 修改端口號:8843
- 啟動服務:startup.cmd
-
節點3:復制Nacos8845
- 修改端口號:8845
- 啟動服務:startup.cmd
配置詳情
配置節點1
-
拷貝nacos,并重命名
nacos-2.1.0-8841 -
配置數據源

-
修改端口號:8841

-
配置集群配置文件:拷貝
conf/cluster.conf.example,重名為cluster.conf

-
啟動服務:startup.cmd

-
成功啟動

配置節點2
-
復制節點nacos-2.1.0-8841,并重命名nacos-2.1.0-8843
-
修改端口號

- 啟動服務

配置節點3
-
復制節點nacos-2.1.0-8841,并重命名nacos-2.1.0-8845
-
修改端口號

-
啟動服務

配置成功

常見錯誤
- db.num is null
錯誤提示:db.num is null
原因:沒有配置數據庫

- unable to start embedded tomcat
錯誤提示:unable to start embedded tomcat
原因1:沒有編寫集群配置文件

原因2:安裝目錄有中文
- 內存不足
提示信息:
原因:內存不足,修改分配內存大小

- Cannot determine JNI library name for ARCH='x86' OS='windows 10' name='rocksdb'
提示信息:Cannot determine JNI library name for ARCH='x86' OS='windows 10' name='rocksdb'
原因:nacos與jdk 系統位數(64位和32位,)不一致
- JNI相關錯誤
提示信息: C:\Users\Administrator\AppData\Local\Temp\/librocksdbjni1411968517689619912.dll: Can't find dependent libraries
結語
原因:JAVA_HOME配置的jdk安裝目錄,而不是jre安裝目錄
在本文中,我們深入探討了 Nacos 高級版的功能和特性,展示了它如何提升開發和部署效率,為開發人員和運維團隊帶來更好的體驗。無論是在微服務架構中使用、進行多環境部署還是進行灰度發布,Nacos 高級版都是一個強大而可靠的選擇。如果你希望提升你的應用程序和服務的管理水平,不妨考慮嘗試 Nacos 高級版吧!

浙公網安備 33010602011771號