spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

前言

在學習任何一個框架的時候,首先應該學習怎麼使用,怎麼正確地運用到生成環境中,只有知道如何正確地使用一個框架,才能更好的去學習底層的原理和實現細節,今天我們這個小節,將詳細地介紹在實際生產項目中,在spring boot項目中如何多樣地使用nacos配置中心的功能,最後能達到我們想要的目的

場景一:基本使用

基本使用,spring boot app客戶端根據groupId,dataId,nacos的服務端地址,去拉取kv值,這是一個最基本的原理場景,上一篇文章介紹過,一筆帶過,場景示例圖

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

使用步驟如下

  1. 首先在nacos服務端的管理頁面中新增一個dataId的配置如下,我們dataId叫做"bazinga",一般而言這個可以是我們的系統名稱,例如訂單系統,支付系統,供應鏈系統等等,dataId跟我們的系統名相匹配,這樣能夠更快地找到我們對應的配置,groupId我們沒有編輯,就是默認的"DEFAULT_GROUP",然後我們再新增了兩個KV配置
redis.host=192.168.1.21
redis.port=6378
spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

2.在我們spring boot的Hello world項目中的Spring boot的Main函數上,新增一個註解

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

3.寫一個很簡單的測試Controller類

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

4.在application.properties中指定nacos的地址,然後啟動項目,訪問localhost:8080/config/hello,可以看到控制檯成功打印我們nacos中配置的信息

nacos.config.server-addr=192.168.1.32:8848
spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

這個也是nacos最基本的功能,接下來我們做一些實際場景的變形使用示例

場景二:groupId的使用技巧

場景說明:在一個比較大的公司,研發中心很大,分成了產品中心,有例如無線部門中心,支付中心,信貸部門中心,每個中心都有自己的redis集群的地址,這樣可以做到多個大的開發部門中心,當各自的redis集群出問題的時候,不會導致整個公司的系統不可用,所以每一箇中心都會有自己的redis集群地址,redis的dataId都叫"redis",這個時候在使用nacos的時候,每個中心的子系統就可以使用不同的groupId來獲取到自己中心redis的地址了,場景示例圖如下:

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

使用步驟如下

1.在nacos的服務端管理控制檯中配置每個中心redis的配置信息

1.1 產品中心redis在nacos的配置

redis.host=192.168.1.33
redis.port=6378
spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

1.2 金融中心redis在nacos的配置

redis.host=192.168.1.44
redis.port=6380
spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

1.3 保存完的效果圖

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

2.在場景一的基礎上,刪除spring boot啟動main函數的nacos客戶端註解

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

2.1 產品中心的修改

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

重新運行,main函數,控制檯打印,可以看到我們在客戶端指定了groupId="product_center",我們就可以取到正確的配置

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

2.2 金融中心只需要將上述代碼的groupId修改一下就可以了

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

重新運行代碼的main函數,控制檯重新打印了金融中心的redis配置

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

我們通過簡單的修改groupId就可以獲取到不同的groupId下同一個dataId的配置,在我們實際生產場景中,是非常常見的,一種實際場景就是我剛才說的按照部門劃分,其他的場景也可以,這樣就可以做到同一個KV在不同的部分可以有不同的配置,這樣能夠做到相互不影響

場景三:nacos對不同環境的支持

場景說明:例如訂單系統,一般公司在開發過程中,會有不同的環境,例如開發階段有一套配置叫做"dev"環境,測試階段有一套代碼配置叫做"test"環境,線上還有一套環境叫做"prd"環境,等等,舉一個具體例子來說:同樣的一個系統,在開發,測試,線上階段,redis的地址是不一樣的,nacos對於我們這種場景也是支持的,如下圖示例

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

使用步驟如下

  1. 首先在nacos下新增對環境的支持,新建幾個namespace,就是我們說的"環境"

1.1 點擊nacos管理頁面的左側導航欄的"命名空間"

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

1.2 點擊右上角的"新增命名空間" 如下圖所示,新增"開發環境",然後如法炮製,測試環境和生產環境的namespace

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

1.3 最後創建成功後,如下圖所示,namespace下多了三個新增的環境

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

1.4 在對應的namespace下新增dataId為redis的配置信息,如下圖,nacos控制檯點擊"配置管理",點擊"dev"

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

發現在這個namespace下沒有任何dataId的配置,我們按照上面的方式新增redis的配置

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

新增保存完,可以看到dev的namespace下多了一個配置,同理在test和prd的namespace下同樣新增redis的配置

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

dev環境

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

test環境

2.修改spring boot客戶端代碼

2.1 spring boot客戶端代碼的修改非常簡單,只需要指定我們讀取哪個namespace下的環境就可以了,只需要在application.properties新增一行配置,例如我們讀取dev的配置的時候,如下就可以了,為啥是"21a130ad-e347-428d-9e8e-6b82d08c51ea",如下圖所示

nacos.namespace=21a130ad-e347-428d-9e8e-6b82d08c51ea
spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

2.2 修改為測試環境的namespace

nacos.namespace=3c838468-2d2f-4cf8-9c33-cb30aa312fd5

重新啟動運行代碼,可以看到我們的值也相應發生了改變

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

在真實的場景中nacos.namespace是不需要再application.properties寫的,而是運維在CICD中通過啟動參數來配置的,不需要開發人員來配置,大家要切記

場景四:局部變量配置覆蓋全局配置

場景說明:假如你身處產品中心,產品中心有一個公用的redis配置,但是你的項目的系統redis使用場景特別多,對redis的壓力也比較重,你希望自己特有的redis的配置,但是其他的配置還是用自己部門中心的公共配置

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

場景描述圖

具體舉例:你們部門的dev環境的公共配置的dataId叫做"product_common_config"

mongodb.host=mongo.product.center.dev.org
mongodb.port=27017
redis.host=redis.product.center.dev.org
redis.port=6379
spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

這個時候你想要有單獨的redis配置,但是你又想使用公共的MongoDB的配置,這個時候你需要新建一下你自己的redis配置和系統的一些其他變量配置如下

redis.host=redis.product.oms.org
redis.port=9999
happy=國慶快樂
spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

最後在產品中心下dev環境有2個配置

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

到此為止,nacos的服務端配置就結束了,接下來,我們只需要簡單地修改一下客戶端的代碼就可以了

修改spring boot的main函數,增加如下註解,表示整個項目優先讀取oms這個dataId的配置,最後都以oms的配置為準

@NacosPropertySource(dataId = "oms",groupId = "product_center", autoRefreshed = true)
spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

但是我們知道oms下沒有對mongoDB的配置,所以在局部代碼中,如下配置,我們在局部中再次指定dataId=product_common_config,這樣我們就可以在product_common_config的dataId找到mongodb的配置,並且product_common_config中的redis配置不會覆蓋oms全局的redis配置

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

測試,運行結果如下,可以看到redis讀取到的是oms的特定配置地址,mongodb地址是公有地址

spring boot2.x整合系列——Nacos在生產環境中的三個使用技巧

小結

本小節,詳細地介紹了nacos在實際項目中的使用方法,和各個場景,在最真實的實際生產開發中,場景二,三,四是融合在一起使用的,希望大家能夠完全掌握

如果大家能讀到結尾,希望大家點贊關注,收藏,方便大家在PC端觀看文檔,手機查看圖不是很清晰,您的支持是我最大的協作動力~

最後祝大家國慶快樂


分享到:


相關文章: