Nacos
1 前置條件
- 了解 Dubbo 基本開發步驟
- 安裝並啟動 Nacos 服務
當 Dubbo 使用
3.0.0
及以上版本時,需要使用 Nacos2.0.0
及以上版本。
2 使用說明
在此處查看 完整範例程式碼
2.1 新增依賴
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>3.0.9</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>2.1.0</version>
</dependency>
<!-- Introduce Dubbo Nacos extension, or you can add Nacos dependency directly as shown above-->
<!--
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>3.0.9</version>
</dependency>
-->
</dependencies>
新增 Dubbo 和 Nacos 依賴
Dubbo
3.0.0
及以上版本需要 nacos-client2.0.0
及以上版本
2.2 設定並啟用 Nacos
# application.yml (Spring Boot)
dubbo
registry
address: nacos://localhost:8848
或
# dubbo.properties
dubbo.registry.address=nacos://localhost:8848
或
<dubbo:registry address="nacos://localhost:8848" />
要啟用應用程式,請查看註冊後的樣子或其工作方式,請參閱 [工作原理](#4-工作原理)。
3 進階設定
3.1 驗證
# application.yml (Spring Boot)
dubbo
registry
address: nacos://localhost:8848?username=nacos&password=nacos
或
# dubbo.properties
dubbo.registry.address: nacos://nacos:nacos@localhost:8848
3.2 自訂命名空間
# application.yml (Spring Boot)
dubbo:
registry:
address: nacos://localhost:8848?namespace=5cbb70a5-xxx-xxx-xxx-d43479ae0932
或
# application.yml (Spring Boot)
dubbo:
registry:
address: nacos://localhost:8848
parameters.namespace: 5cbb70a5-xxx-xxx-xxx-d43479ae0932
3.3 自訂分組
# application.yml
dubbo:
registry:
address: nacos://localhost:8848
group: dubbo
如果未設定,則分組由 Nacos 預設指定。分組和命名空間代表 Nacos 中不同的隔離級別。一般來說,命名空間用於隔離不同的使用者或環境,而分組用於在同一環境中進一步對資料進行分組。
3.4 註冊介面級別的消費者
Dubbo 3.0.0 之後,新增了是否註冊消費者的參數。如果需要將消費者註冊到 Nacos 註冊中心,需要將參數 (register-consumer-url) 設定為 true,預設值為 false。
# application.yml
dubbo:
registry:
address: nacos://localhost:8848?register-consumer-url=true
或
# application.yml
dubbo:
registry:
address: nacos://localhost:8848
parameters.register-consumer-url: true
3.5 更多設定
參數名稱 | 中文說明 | 預設值 |
---|---|---|
username | 連線到 Nacos 伺服器的使用者名稱 | nacos |
password | 連線到 Nacos 伺服器的密碼 | nacos |
backup | 備用地址 | null |
namespace | 命名空間 ID | public |
group | 分組名稱 | DEFAULT_GROUP |
register-consumer-url | 是否註冊消費者端 | false |
com.alibaba.nacos.naming.log.filename | 初始化日誌檔案名稱 | naming.log |
endpoint | 連線到 Nacos 伺服器指定的連接點,請參考 文件 | 空 |
endpointPort | 連線至 Nacos 伺服器指定的連接點端口,您可以參考文件 | 空 |
endpointQueryParams | 端點查詢參數查詢 | null |
isUseCloudNamespaceParsing | 是否解析雲環境中的命名空間參數 | true |
isUseEndpointParsingRule | 是否啟用端點參數規則解析 | true |
namingLoadCacheAtStart | 啟動時是否先讀取本地緩存 | true |
namingCacheRegistryDir | 指定緩存子目錄,位置為 …/nacos/{SUB_DIR}/naming | 空 |
namingClientBeatThreadCount | 客戶端心跳線程池大小 | 機器 CPU 數量的一半 |
namingPollingThreadCount | 用於數據更新的客戶端定時輪詢線程池大小 | 機器 CPU 數量的一半 |
namingRequestDomainMaxRetryCount | 客戶端通過 HTTP 向 Nacos 伺服器請求的重試次數 | 3 |
namingPushEmptyProtection | 當服務沒有有效的(健康的)實例時,是否啟用保護,啟用後將使用舊的服務實例 | false |
push.receiver.udp.port | 客戶端 UDP 的端口 | null |
在 nacos-server@1.0.0
版本之後,支持客戶端通過向伺服器報告一些包含特定元數據的實例來控制實例的一些行為。
參數名稱 | 中文說明 | 預設值 |
---|---|---|
preserved.heart.beat.timeout | 實例在未發送心跳後從健康狀態變為不健康狀態的時間(以毫秒為單位) | 15000 |
preserved.ip.delete.timeout | 實例在未發送心跳後被伺服器刪除的時間(以毫秒為單位) | 30000 |
preserved.heart.beat.interval | 實例在客戶端上報告心跳的時間間隔(以毫秒為單位) | 5000 |
preserved.instance.id.generator | 此實例的 ID 生成策略,當值為 snowflake 時,它將從 0 開始遞增 | simple |
preserved.register.source | 註冊實例註冊服務框架類型(例如 Dubbo、Spring Cloud 等) | 空 |
這些參數可以通過類似於 namespace
的參數擴展方式配置到 Nacos,例如
dubbo.registry.parameters.preserved.heart.beat.timeout=5000
4 工作原理
以下僅以 Nacos 作為 Dubbo 註冊中心的工作原理為例。建議使用Dubbo Admin 進行 Dubbo 服務的運維
4.1 Dubbo2 註冊數據
然後,重新啟動您的 Dubbo 應用程序,Dubbo 的服務提供和消費信息將會顯示在 Nacos 控制台中
如圖所示,以 providers:
為前綴的服務名稱是服務提供者的元信息,consumers:
代表服務消費者的元信息。點擊“詳情”查看服務狀態詳情
4.2 Dubbo3 註冊數據
應用級服務發現的“服務名稱”是應用程序名稱
Dubbo3 默认采用“应用级服务发现 + 接口级服务发现”的双注册模式,因此您会发现在 Nacos 控制台中会同时出现应用级服务(应用名称)和接口级服务(接口名称),您可以配置
dubbo.registry.register-mode=instance/interface/all
来改变注册行为。