Nacos 注冊中心

2022-04-22 10:34 更新

Nacos 是 Dubbo 生態(tài)系統(tǒng)中重要的注冊中心實(shí)現(xiàn),其中 ?dubbo-registry-nacos? 則是 Dubbo 融合 Nacos 注冊中心的實(shí)現(xiàn)。

預(yù)備工作

當(dāng)您將 dubbo-registry-nacos  整合到您的 Dubbo 工程之前,請確保后臺(tái)已經(jīng)啟動(dòng) Nacos 服務(wù)。如果您尚且不熟悉 Nacos 的基本使用的話,可先行參考 Nacos 快速入門。建議使用 Nacos 1.0.0 及以上的版本。

快速上手

Dubbo 融合 Nacos 成為注冊中心的操作步驟非常簡單,大致步驟可分為“增加 Maven 依賴”以及“配置注冊中心“。

增加 Maven 依賴

首先,您需要將 dubbo-registry-nacos 的 Maven 依賴添加到您的項(xiàng)目 pom.xml 文件中,并且強(qiáng)烈地推薦您使用 Dubbo 2.6.5:

<dependencies>

    ...
        
    <!-- Dubbo Nacos registry dependency -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo-registry-nacos</artifactId>
        <version>0.0.2</version>
    </dependency>   
    
    <!-- Keep latest Nacos client version -->
    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
        <version>[0.6.1,)</version>
    </dependency>
    
    <!-- Dubbo dependency -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.6.5</version>
    </dependency>
    
    <!-- Alibaba Spring Context extension -->
    <dependency>
        <groupId>com.alibaba.spring</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>1.0.2</version>
    </dependency>

    ...
    
</dependencies>

當(dāng)項(xiàng)目中添加 dubbo-registry-nacos 后,您無需顯式地編程實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和注冊邏輯,實(shí)際實(shí)現(xiàn)由該三方包提供,接下來配置 Naocs 注冊中心。

配置注冊中心

假設(shè)您 Dubbo 應(yīng)用使用 Spring Framework 裝配,將有兩種配置方法可選,分別為:Dubbo Spring 外部化配置以及 Spring XML 配置文件,推薦前者。

Dubbo Spring 外部化配置

參考

Dubbo Spring 外部化配置是由 Dubbo 2.5.8 引入的新特性,可通過 Spring Environment 屬性自動(dòng)地生成并綁定 Dubbo 配置 Bean,實(shí)現(xiàn)配置簡化,并且降低微服務(wù)開發(fā)門檻。

假設(shè)您的 Nacos Server 同樣運(yùn)行在服務(wù)器 10.20.153.10 上,并使用默認(rèn) Nacos 服務(wù)端口 8848,您只需將 dubbo.registry.address 屬性調(diào)整如下:

## 其他屬性保持不變

## Nacos registry address
dubbo.registry.address = nacos://10.20.153.10:8848
...

隨后,重啟您的 Dubbo 應(yīng)用,Dubbo 的服務(wù)提供和消費(fèi)信息在 Nacos 控制臺(tái)中可以顯示:

dubbo-registry-nacos-1.png

如圖所示,服務(wù)名前綴為 providers: 的信息為服務(wù)提供者的元信息,consumers: 則代表服務(wù)消費(fèi)者的元信息。點(diǎn)擊“詳情”可查看服務(wù)狀態(tài)詳情:

image-dubbo-registry-nacos-2.png

如果您正在使用 Spring XML 配置文件裝配 Dubbo 注冊中心的話,請參考下一節(jié)。

Spring XML 配置文件

與 Dubbo Spring 外部化配置 配置類似,只需要調(diào)整 address 屬性配置即可:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
 
    <!-- 提供方應(yīng)用信息,用于計(jì)算依賴關(guān)系 -->
    <dubbo:application name="dubbo-provider-xml-demo"  />
 
    <!-- 使用 Nacos 注冊中心 -->
    <dubbo:registry address="nacos://10.20.153.10:8848" />
 	...
</beans>

重啟 Dubbo 應(yīng)用后,您同樣也能發(fā)現(xiàn)服務(wù)提供方和消費(fèi)方的注冊元信息呈現(xiàn)在 Nacos 控制臺(tái)中:

dubbo-registry-nacos-3.png

附加信息: 在nacos-server@1.0.0版本后,支持客戶端通過上報(bào)一些包含特定的元數(shù)據(jù)的實(shí)例到服務(wù)端來控制實(shí)例的一些行為。

例如:

preserved.heart.beat.timeout : 該實(shí)例在不發(fā)送心跳后,從健康到不健康的時(shí)間。(單位:毫秒) 

preserved.ip.delete.timeout : 該實(shí)例在不發(fā)送心跳后,被服務(wù)端下掉該實(shí)例的時(shí)間。(單位:毫秒) 

preserved.heart.beat.interval : 該實(shí)例在客戶端上報(bào)心跳的間隔時(shí)間。(單位:毫秒) 

preserved.instance.id.generator: 該實(shí)例的id生成策略,值為snowflake時(shí),從0開始增加。 

preserved.register.source : 保留鍵,目前未使用。

該功能將在Dubbo@2.7.10開始支持,通過在address中增加參數(shù)來進(jìn)行配置. 例如: nacos://10.20.153.10:8848?preserved.heart.beat.timeout=15000&preserved.ip.delete.timeout=30000&preserved.heart.beat.interval=10000


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)