在開發Spring Cloud應用時,您可以使用Nacos在本地實現應用的組態管理。由於Nacos是Application Configuration ManangementACM的開源版本,在將應用部署到EDAS後,即可通過EDAS整合的ACM對應用進行配置的管理和推送。
您可以按照文檔從零開發該應用樣本,並使用Spring Cloud Alibaba Nacos Config實現組態管理。也可以直接下載該應用樣本的Demo:nacos-config-example。
Spring Cloud Alibaba Nacos Config完成了Nacos與Spring Cloud架構的整合,支援Spring Cloud的配置注入規範。
EDAS提供的組態管理與開源產品(Nacos)的組態管理功能不衝突。
準備工作
在開始開發前,請確保您已經完成以下工作:
下載Maven並設定環境變數。
下載最新版本的Nacos Server。
啟動Nacos Server。
解壓下載的Nacos Server壓縮包。
進入nacos/bin目錄,啟動Nacos Server。
Linux/Unix/Mac系統:執行命令
sh startup.sh -m standalone
。Windows系統:雙擊執行startup.cmd檔案。
說明standalone
表示單機模式運行,非叢集模式。startup.cmd檔案預設以叢集模式啟動,因此您在使用Windows系統時,如果直接雙擊執行startup.cmd檔案會導致啟動失敗,此時需要在startup.cmd檔案內設定MODE="standalone"
。 更多資訊,請參見Nacos快速開始。
在本地Nacos Server控制台建立配置。
登入本地Nacos Server控制台(使用者名稱和密碼預設同為nacos)。
在左側導覽列中單擊配置列表,在配置列表頁面右上方單擊建立配置表徵圖
。
在建立配置頁面填入以下資訊,單擊發布。
Data ID:nacos-config-example.properties
Group:DEFAULT_GROUP
配置格式:Properties
配置內容:test.name=nacos-config-test
使用Nacos Config實現組態管理
建立一個Maven工程,命名為nacos-config-example。
在pom.xml檔案中添加依賴。
以Spring Boot 2.1.4.RELEASE和Spring Cloud Greenwich.SR1為例。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.1.RELEASE</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
樣本中使用的版本為Spring Cloud Greenwich ,對應Spring Cloud Alibaba版本為2.1.1.RELEASE。
如果使用Spring Cloud Finchley版本,對應Spring Cloud Alibaba版本為2.0.1.RELEASE。
如果使用Spring Cloud Edgware版本,對應Spring Cloud Alibaba版本為1.5.1.RELEASE。
說明Spring Cloud Edgware版本的生命週期已結束,不推薦使用這個版本開發應用。
在src\main\java下,建立Package
com.aliware.edas
。在Package
com.aliware.edas
中建立nacos-config-example
的啟動類NacosConfigExampleApplication
。import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class NacosConfigExampleApplication { public static void main(String[] args) { SpringApplication.run(NacosConfigExampleApplication.class, args); } }
在Package
com.aliware.edas
中建立一個簡單的ControllerEchoController
,自動注入一個屬性userName
,且通過@Value
註解指定從配置中取Key為test.name的值。import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RefreshScope public class EchoController { @Value("${test.name}") private String userName; @RequestMapping(value = "/") public String echo() { return userName; } }
在
src\main\resources
路徑下建立設定檔bootstrap.properties
,在bootstrap.properties
中添加如下配置,指定Nacos Server的地址。其中
127.0.0.1:8848
為Nacos Server的地址,18081
為服務連接埠。如果您的Nacos Server部署在另外一台機器,則需要修改成對應的IP和連接埠。如果有其它需求,可以在bootstrap.properties檔案中增加配置。具體操作,請參考配置項參考
spring.application.name=nacos-config-example server.port=18081 spring.cloud.nacos.config.server-addr=127.0.0.1:8848
執行
NacosConfigExampleApplication
中的main函數,啟動應用。
本地結果驗證
在瀏覽器上訪問http://127.0.0.1:18081 ,可以看到傳回值為nacos-config-test
,該值即為在本地Nacos Server中建立配置中的配置內容,即test.name的值。
將應用部署到EDAS
將應用部署到EDAS前,需要先在EDAS的組態管理中建立和本地Nacos Server一致的配置,以便應用部署後可以同步配置,然後再將應用部署到EDAS。
在EDAS中建立和本地Nacos Server相同的配置。
登入EDAS控制台。
在左側導覽列,選擇应用管理 > 微服务配置。
在配置列表頁面頂部功能表列選擇地區,在頁面上方選擇微服務空間,然後單擊创建配置。
在创建配置面板,設定和本地Nacos Server相同的參數配置,然後單擊建立。
Data ID:nacos-config-example.properties
Group:DEFAULT_GROUP
配置格式:Properties
配置內容:test.name=nacos-config-test
說明所屬地區和微服務空間在配置列表中選擇,該面板中不可設定。
後續操作
您的應用在部署到EDAS後,還需要持續迭代、升級。如果每次都要在本地啟動Nacos Server、升級應用、本地驗證再部署到EDAS進行線上驗證,會影響開發效率。所以,EDAS提供了端雲互聯功能,開啟端雲互聯的應用在本地啟動後,和部署到EDAS的效果一致,可以直接讀取EDAS組態管理中的配置並和雲端的其他應用相互調用。
配置項參考
如果有其他需求,可以參照下表在bootstrap.properties檔案中增加配置。
配置項 | key | 預設值 | 說明 |
服務端地址 | spring.cloud.nacos.config.server-addr | 無 | 無。 |
DataId首碼 | spring.cloud.nacos.config.prefix | ${spring.application.name} | Data ID的首碼。 |
Group | spring.cloud.nacos.config.group | DEFAULT_GROUP | 分組。 |
Data ID尾碼及內容檔案格式 | spring.cloud.nacos.config.file-extension | properties | Data ID的尾碼,同時也是配置內容的檔案格式,預設是properties,也支援YAML和YML格式。 |
配置內容的編碼方式 | spring.cloud.nacos.config.encode | UTF-8 | 配置的編碼。 |
擷取配置的逾時時間 | spring.cloud.nacos.config.timeout | 3000 | 單位為ms。 |
配置的命名空間 | spring.cloud.nacos.config.namespace | 常用情境之一是不同環境的配置的區分隔離,例如開發測試環境和生產環境的資源隔離等。 | |
相對路徑 | spring.cloud.nacos.config.context-path | 服務端API的相對路徑。 | |
存取點 | spring.cloud.nacos.config.endpoint | UTF-8 | 地區的某個服務的入口網域名稱,通過此網域名稱可以動態地擷取服務端地址。 |
是否開啟監聽和自動重新整理 | spring.cloud.nacos.config.refresh.enabled | true | 預設為true,不需要修改。 |
更多配置項,請參考開源版本的Spring Cloud Alibaba Nacos Config文檔。