關(guān)于Eureka和Nacos的優(yōu)劣比較這里就不談了,我選擇從Eurake遷移到Nacos,主要是為了用Nacos 的配置中心溪王,所以重點講如何遷移毕箍。
具體改動
因為之前項目Springboot版本比較舊弛房,所以為了迎合Springboot,SpringCloud和Nacos不能用太高的版本
- Spring Cloud 從 Dalston.RELEASE 升級到了Edgware.RELEASE而柑,代碼幾乎不用改動
- 刪除了Eurake的starter 依賴文捶,引入了nacos的依賴
- 刪除現(xiàn)有全部配置,新加 bootstrap.properties
1. 引入nacos依賴
如果是單體工程媒咳,直接將下面所有配置都放到一個 pom.xml 里即可
父工程引入依賴
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.1.2.RELEASE</version>
</dependency>
<!-- 解決啟動報 Error creating bean with name 'nacosAutoServiceRegistration -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
公共工程引入依賴
<!-- Nacos -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2. 刪除eurake依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
3. 添加新配置文件
每個工程中添加引導(dǎo)配置文件 : bootstrap.properties粹排,這個里面配置和本項目相關(guān)的屬性,如工程名稱涩澡、端口號顽耳、配置中心地址等。
其他數(shù)據(jù)庫妙同、Redis射富、ES等屬于公共配置,都放在配置中心上粥帚,按照不同環(huán)境把配置分為:
- 公共配置 public.properties
- 開發(fā)環(huán)境 public-dev.properties
- 測試環(huán)境 public-test.properties
- 預(yù)發(fā)布環(huán)境 public-pre.properties
- 生產(chǎn)環(huán)境 public-prod.properties
如需修改配置辉浦,請訪問: http://192.168.x.x:8848/nacos/
spring.application.name=api-gateway
spring.profiles.active=dev
server.port=8085
# 注冊中心地址,最好在本地hosts文件中配置成映射地址
spring.cloud.nacos.config.server-addr=nacos:8848
# 命名空間默認是 public
# 1. 可以添加 dev prod test 相當于 第一層 互相隔離 每個命名空間下面有自己的組
# 2. java -Dspring.cloud.nacos.config.namespace=ns_dev ....
# 組默認是DEFAULT_GROUP
# 1. 相當于多個項目組,每個分組下有xxx-dev.yaml茎辐、xxx-prod.yaml
# 2. java -Dspring.profiles.active=dev -Dspring.cloud.nacos.config.group=TEST_GROUP
# dataid 相當于文件名 默認下是服務(wù)名宪郊,文件格式:${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${file-extension:properties}
#\u30001. 默認prefix等于${spring.application.name},假設(shè)項目名為xxx
# 2. 在每個分組下面互相隔離
# 3. java -Dspring.profiles.active=dev ..掂恕,命令將查找xxx-dev.yaml的配置文件
spring.cloud.nacos.config.prefix=public
# 指定配置的后綴,支持 properties弛槐、yaml懊亡、yml,默認為 properties
spring.cloud.nacos.config.file-extension=properties
########################################################
跟本項目相關(guān)的其他配置
4. 接入自動化部署平臺
- 先到 http://192.168.x.x:9090 注冊新用戶乎串,創(chuàng)建工程店枣,工程創(chuàng)建好后,需要把token記錄下叹誉,接入自動化部署平臺填入到Gitlab Token里
image.png
- 請訪問: http://192.168.x.x:8888/index.html 申請自動化部署配置文件鸯两,申請成功后放到工程根目錄
image.png
springboot、微服務(wù)項目注意事項:
必須保證工程目錄名长豁、artifactId钧唐、finalName一致
-
項目名稱必須是小寫(k8s要求),例如上面樣例中artifactId叫apigeteway匠襟,那么工程也必須叫apigeteway钝侠,這樣打包后會生成一個 apigeteway.jar
apigeteway ├─src │ ├─main │ │ ├─java │ │ │ └─com │ │ └─resources │ └─test │ └─java └─pom.xml
項目必須以 jar 形式 打包,不支持war包
配置中心以域名方式配置酸舍,不要用IP帅韧,如果本地調(diào)試在hosts文件中映射一下
spring.cloud.nacos.config.server-addr=nacos:8848
自動化部署平臺目前支持 SpringBoot、SpringCloud啃勉、Vue項目忽舟,理論上支持任何語言。