42. 從零開始學(xué)springboot整合alibaba-nacos做注冊/配置中心

前言

隨著 服務(wù)化 的普及, 你會發(fā)現(xiàn)越來越多的公司開始服務(wù)化的調(diào)整, 那么有哪些變化呢?

你會發(fā)現(xiàn), 原來一個接口就實現(xiàn)了一套邏輯功能, 而服務(wù)化后, 服務(wù)拆分的維度更細(xì)了, 實現(xiàn)一個功能, 可能需要同時協(xié)同很多的服務(wù)接口!

服務(wù)的拆分維度更細(xì)當(dāng)然是有好處的, 服務(wù)間耦合度更低, 復(fù)用性更強, 但是隨之而來的是服務(wù)間配置及管理成本的上升!

所以, 為了解決這些服務(wù)治理成本, Nacos應(yīng)運而生.

Nacos 是阿里巴巴的開源項目,其核心定位是 動態(tài)服務(wù)發(fā)現(xiàn)太伊、配置和服務(wù)管理平臺

簡而言之 nacos兩個功能:

  • 服務(wù)發(fā)現(xiàn)及管理
  • 配置的管理

需要注意的是, Nacos本身是個獨立的服務(wù), 可以單獨部署!

下面, 我們來實踐下Nacos的部署,以及和Springboot的配合~

Docker 安裝Nacos

下載nacos鏡像

docker pull nacos/nacos-server

查看鏡像

docker images

以單機模式運行nacos

# 登錄密碼默認(rèn)nacos/nacos
# standalone代表著單機模式運行褐鸥,非集群模式
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server

訪問Nacos

http://localhost:8848/nacos
image.png

配置Nacos

訪問地址:http://localhost:8848/nacos
默認(rèn)賬號: nacos
默認(rèn)密碼: nacos

進(jìn)入配置頁面

創(chuàng)建一個新命名空間(你可以理解為一個組)

默認(rèn)有個public公共空間, 我新建了sb-alibaba-nacos空間


image.png

創(chuàng)建完成后我們就可以直接開始服務(wù)的配置了

把服務(wù)的相關(guān)配置加入此即可.

image.png

我們新增sb-alibaba-nacos服務(wù)的兩套環(huán)境的配置, dev 和 test

dev (服務(wù)端口: 8081):


image.png

test(服務(wù)端口: 8082):


image.png

再新建一個通用的配置(實際情況就是很多服務(wù),大部分的配置是共用的, 少部分是自定義的,
nacos支持這樣的配置) common


image.png

點擊發(fā)布即可.

Springboot 整合 alibaba nacos

我們引入依賴

    <properties>
        <spring-cloud.version>Hoxton.SR4</spring-cloud.version>
        <spring-cloud-alibaba-version>2.2.1.RELEASE</spring-cloud-alibaba-version>
    </properties>

<dependencyManagement>
        <dependencies>
            <!--SpringCloud依賴 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--SpringCloud Alibaba依賴 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>


    <dependencies>
        <!--Nacos服務(wù)注冊/發(fā)現(xiàn)依賴 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--Nacos配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

這里特別強調(diào)下, 必須要引入和springboot匹配版本的springcloud依賴哦, 否則會啟動報錯

org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'nacosAutoServiceRegistration' defined in classpath resource....

大致的版本對應(yīng)關(guān)系如下


image.png

更詳細(xì)的請去https://start.spring.io/actuator/info
查詢!

這里, 咸魚為了使用新特性, 所以spring-boot使用2.2.6.RELEASE版本, 所以對應(yīng)的spring-cloud版本為Hoxton.SR4, spring-cloud-alibaba版本為2.2.1.RELEASE!

注意, 低版本的springboot會出現(xiàn)無法注冊分組功能
也就是項目啟動后, 當(dāng)你在項目的alibaba nacos配置文件里填寫了分組名稱時,

image.png

在nacos 服務(wù)管理頁面會發(fā)現(xiàn)分組名稱并沒注冊上(也就是顯示為default, 并不是我們指定的dev)

image.png

配置springboot

要想springboot項目向nacos注冊以及從nacos讀取配置,我們就必須在項目中加上簡單的配置

首先在啟動類上加上注解@EnableDiscoveryClient

image.png

其次, 新建一個項目的配置文件bootstrap.properties (nacos的配置就在此, springboot會優(yōu)先讀取bootstrap.properties配置, 其次才是application.properties)

image.png
# 服務(wù)名, 會在nacos上顯示服務(wù)的名稱
spring.application.name=sb-alibaba-nacos

# 指定生效的配置為 dev
spring.profiles.active=dev

##################### Nacos基本配置
###### 1窟她、注冊中心配置
# Nacos注冊中心地址, 也就是nacos所在 ip:端口
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

# 配置注冊中心namespace id, 我們nacos創(chuàng)建空間時生成的唯一id
spring.cloud.nacos.discovery.namespace=070cc848-3106-49eb-a3be-3d5994701d96

# 指定注冊中心namespace的group, 這個group可以隨意指定, 會顯示在nacos上
spring.cloud.nacos.discovery.group=dev


##### 2、配置中心配置
# Nacos配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

# 指定讀取的配置文件后綴名,  我們nacos上新建配置時,配置的后綴格式
spring.cloud.nacos.config.file-extension=properties

# 指定命名空間, 必須指定id, 不能指定名稱
spring.cloud.nacos.config.namespace=070cc848-3106-49eb-a3be-3d5994701d96

# 指定Group
spring.cloud.nacos.config.group = sb-alibaba-nacos

#### 相同namespace耽梅,不同group下的服務(wù)共享配置
## common配置
spring.cloud.nacos.config.extension-configs[0].group=common
spring.cloud.nacos.config.extension-configs[0].data-id=common.properties
spring.cloud.nacos.config.extension-configs[0].refresh=true

### 日志配置
logging.level.com.alibaba.nacos.client.config=warn
spring.main.allow-bean-definition-overriding=true

最后,我們啟動springboot項目即可~

說明

注意, 從nacos讀取配置, 啟動業(yè)務(wù)服務(wù)后, 若修改了配置, 業(yè)務(wù)服務(wù)默認(rèn)不會實時生效的!
如果, 個別配置項你需要實時的生效, 也就是無需重啟業(yè)務(wù)服務(wù)就能生效, 請在項目中對應(yīng)讀取配置值的類上加上注解

@RefreshScope

項目地址

https://github.com/MrCoderStack/SpringBootDemo/tree/master/sb-alibaba-nacos

請關(guān)注我的訂閱號

訂閱號.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阳欲,更是在濱河造成了極大的恐慌,老刑警劉巖陋率,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件球化,死亡現(xiàn)場離奇詭異,居然都是意外死亡瓦糟,警方通過查閱死者的電腦和手機筒愚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菩浙,“玉大人巢掺,你說我怎么就攤上這事【Ⅱ撸” “怎么了陆淀?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長先嬉。 經(jīng)常有香客問我轧苫,道長,這世上最難降的妖魔是什么疫蔓? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任含懊,我火速辦了婚禮身冬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘岔乔。我一直安慰自己酥筝,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布重罪。 她就那樣靜靜地躺著樱哼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剿配。 梳的紋絲不亂的頭發(fā)上搅幅,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音呼胚,去河邊找鬼茄唐。 笑死,一個胖子當(dāng)著我的面吹牛蝇更,可吹牛的內(nèi)容都是我干的沪编。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼年扩,長吁一口氣:“原來是場噩夢啊……” “哼蚁廓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厨幻,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤相嵌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后况脆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饭宾,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年格了,在試婚紗的時候發(fā)現(xiàn)自己被綠了看铆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡盛末,死狀恐怖弹惦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悄但,我是刑警寧澤肤频,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站算墨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏汁雷。R本人自食惡果不足惜净嘀,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一报咳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挖藏,春花似錦暑刃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宵膨,卻和暖如春架谎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辟躏。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工谷扣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捎琐。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓会涎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瑞凑。 傳聞我的和親對象是個殘疾皇子末秃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359