本文以Nacos配置管理的Demo應用為例,介紹如何在本地開發、調試Spring Cloud應用,使用Spring Cloud Alibaba Nacos Config實現配置管理,并通過SAE進行配置管理與推送。
前提條件
在開發前,確保您已完成以下工作:
下載Maven并設置環境變量。
啟動Nacos Server。
下載并解壓Nacos Server。
進入nacos/bin目錄,啟動Nacos Server。
Linux、Unix、macOS系統:執行命令
sudo sh startup.sh -m standalone
。Windows系統:執行命令
startup.cmd -m standalone
。
說明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
配置內容:test.name=nacos-config-test
背景信息
在開發Spring Cloud應用時,您可以在本地使用Nacos實現應用的配置管理。由于SAE集成Nacos的應用配置管理ACM的開源版本,在應用部署到SAE后,您可以通過SAE對應用進行配置的管理和推送。
本文以Spring Cloud應用開發過程為例,使用Spring Cloud Alibaba Nacos Config實現配置管理。您可以下載該應用示例的nacos-config-example.zip進行操作。
Spring Cloud Alibaba Nacos Config對Nacos與Spring Cloud的框架進行整合,支持Spring Cloud的配置注入規范。
步驟一:使用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函數,啟動應用。
步驟二:部署到SAE
在本地完成應用的開發和測試后,您可以將應用程序部署到SAE。具體操作,請參見應用托管概述。
SAE配置管理中心提供正式商用版本的Nacos Server。當您將應用部署到SAE時,SAE會通過優先級更高的方式去設置Nacos Server服務端地址和服務端口,以及namespace、access-key、secret-key和context-path信息。您無需進行任何額外的配置,原有的配置內容可以選擇保留或刪除。
您初次在SAE控制臺進行部署時,如果選擇JAR包部署,在創建應用時,應用運行環境必須選擇標準Java應用運行環境。
在部署應用前,請使用SAE的配置管理功能,創建與本地Nacos Server中相同的應用配置。
登錄SAE控制臺。
在左側導航欄,選擇 ,在頂部菜單欄選擇地域。
在配置列表頁面,選擇命名空間并單擊創建配置。
在創建配置面板,配置相關參數,單擊創建。
配置項
說明
Data ID
配置ID,以nacos-config-example.properties為例。
采用類似
package.class
(如com.taobao.tc.refund.log.level
)的命名規則保證全局唯一性。建議根據配置的業務含義定義class部分。Group
配置分組(命名空間),以DEFAULT_GROUP為例。
建議填寫
產品名:模塊名
(如ACM:Test
)保證唯一性。后續可以根據Group進行鑒權。數據加密
配置數據是否加密。如果您的配置中包含敏感數據,建議您使用加密存儲功能,降低配置泄露風險。
重要ACM數據加密功能依賴密鑰管理服務,因此使用前必須開通密鑰管理服務,并授權ACM使用密鑰管理服務進行加解密。加密配置的Data ID均以cipher-開頭,具體操作,請參見創建和使用加密配置。
配置格式
選擇配置格式,以TEXT為例。
配置內容
輸入配置的內容,以test.name=nacos-config-test為例。
配置描述
配置描述信息,便于理解配置含義。
更多配置
應用
配置歸屬的應用名稱。
標簽
配置標簽。方便您根據自己的維度管理配置,最多支持5個標簽。
步驟三:結果驗證
部署完成后,您可以通過查看日志確認應用是否啟動成功。
執行命令
curl http://<應用實例 IP>:<服務端口>
。例如
curl http://192.168.0.34:8080
,查看是否返回配置內容nacos-config-test
。登錄SAE控制臺,將原有配置內容修改為
nacos-config-test2
,再執行命令curl http://<應用實例 IP>:<服務端口>
。例如
curl http://192.168.0.34:8080
,查看是否返回變更后的配置內容nacos-config-test2
。
配置項參考
如果有其它需求,可以參照下表在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文檔。