分佈式配置nacos搭建踩坑指南(上)

  網上有不少nacos搭建的文章,阿里巴巴甚至出了一本<<Spring Cloud Alibaba從入門到實戰>>的書,書名如下:

 

  裏面有講到nacos分佈式配置。不清楚是作者沒講清楚,還是nacos,spring cloud版本等的問題,按照這些配置來搭建,會碰到各種各樣的問題,讓你看不到預期的效果。本文章分上和下兩篇,上篇講典型的踩坑,下篇講詳細的搭建,並附上源代碼。

 踩坑1

  現象:nacos安裝文件下回來了,在windows dos下運行:startup.cmd,發現報異常:org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat,截圖如下

 

  解決方案:這種情況是由於在單機運行,我們需要指定單機運行模式,正確運行方式是:.\startup.cmd -m standalone

 

踩坑2

  現象:nacos運行起來了,在Spring Cloud中也能夠讀取到nacos中配置的數據,但當nacos刷新數據後,在Spring Cloud中居然讀不到,SpringCloud 控制檯Console輸出如下:

 o.s.c.e.event.RefreshEventListener :Refresh keys changed: [].仔細觀察日誌,發現應該是沒有keys刷新,要不然Refresh keys changed的數組不會是一個空值[].

  解決方案:在bootstrap.properties裏,一定要加上下面這幾行:

spring.cloud.nacos.config.namespace=bd1caf11-e4f1-4dd0-9a4b-2c32041c64e2 //指明命名空間id

spring.cloud.nacos.config.extension-configs[0].data-id=nacos-config-sample.properties//指明properties的名稱,否則獲取不到刷新後的配置

spring.cloud.nacos.config.extension-configs[0].refresh=true //設置刷新refresu=true

 上面的幾個配置說明如下:

 1)spring.cloud.nacos.config.namespace=bd1caf11-e4f1-4dd0-9a4b-2c32041c64e2   

  新建一個namespace,記住它的id,然後再此namespace下新建配置,例如下面新建了一個名爲testnamespace的namespace,它的ID爲bd1caf11-e4f1-4dd0-9a4b-2c32041c64e2,在這個namespace下,新建了一個名爲nacos-config-sample.properties的配置。那麼在spring cloud的bootstrap.properties裏需要指明config的namespace.

 

2)spring.cloud.nacos.config.extension-configs[0].data-id=nacos-config-sample.properties

  設置對應的data-id,格式是:應用名稱.properties,例如項目名爲:nacos-config-sample,故data-id爲nacos-config-sample.properties。如下所示:

 

 

 

3)spring.cloud.nacos.config.extension-configs[0].refresh=true 

  這個配置必須加上,否則獲取不到刷新後的配置。

 


 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章