Nacos 是阿里開(kāi)源的 RCP 服務(wù)注冊(cè)發(fā)現(xiàn)粥惧、配置中心等功能的一個(gè)框架。
使用Nacos可以作為spring cloud 服務(wù)注冊(cè)中心和配置中心,如果在生成環(huán)境使用肝劲,需要搭建集群,實(shí)現(xiàn)高可用郭宝,并且通過(guò)域名實(shí)現(xiàn)負(fù)載均衡辞槐。?
官方參考文檔:?Nacos集群部署
Nginx配置
upstream nacos {
????? server 127.0.0.1:8848;
? ????server 127.0.0.1:8849;
????? server 127.0.0.1:8850;
}
server {
? ????listen 80;
? ????server_name? nacos.com;
????? location / {
? ? ????????proxy_pass http://nacos;
????? }
}
Spring Cloud 項(xiàng)目集成Nacos
maven依賴:
<dependencyManagement>
? ? <dependencies>
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.springframework.cloud</groupId>
? ? ? ? ? ? <artifactId>spring-cloud-alibaba-dependencies</artifactId>? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? <version>0.9.0.RELEASE</version>
? ? ? ? ? ? <type>pom</type>
? ? ? ? ? ? <scope>import</scope>
? ? ? ? </dependency>
? ? </dependencies>
</dependencyManagement>
<dependencies>
? ? <!-- nacos-服務(wù)注冊(cè)發(fā)現(xiàn) -->
? ? <dependency>
? ? ? ? <groupId>org.springframework.cloud</groupId>
? ? ? ? <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
? ? </dependency>
? ? <!-- nacos-配置中心 -->
? ? <dependency>
? ? ? ? <groupId>org.springframework.cloud</groupId>
? ? ? ? <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
? ? </dependency>
</dependencies>
配置:
1. bootstrap.properties
spring.cloud.nacos.config.server-addr=nacos.com:80
spring.application.name=demo-core
2. application.yml
server:
????port: 9000
spring:
? profiles:
? ? active: @profileActive@
? cloud:
? ? nacos:
? ? ? discovery:
? ? ? ? server-addr: nacos.com:80
? ? ? ? group: DEFAULT_GROUP
? ? ? config:
? ? ? ? group: DEFAULT_GROUP
? ? ? ? file-extension: properties
3. application-dev.properties
根據(jù)不同的環(huán)境,可以創(chuàng)建命名空間粘室,命名空間namespace配置的是ID,不是名稱
#nacos 命名空間
spring.cloud.nacos.discovery.namespace=8b4cd4e4-c018-42a7-a8e2-e3c724e6d80b
spring.cloud.nacos.config.namespace=8b4cd4e4-c018-42a7-a8e2-e3c724e6d80b
啟動(dòng)類
@SpringCloudApplication
@EnableDiscoveryClient
@EnableFeignClients
@Slf4j
public class CoreApplication {
? ? public static void main(String[] args) {
? ? ? ? SpringApplication.run(CoreApplication.class, args);
? ? ? ? log.info("----------- CoreApplication Start Success ------------");
? ? }
? ? @Bean
? ? @LoadBalanced
? ? RestTemplate restTemplate() {
? ? ? ? return new RestTemplate();
? ? }
}
啟動(dòng)后催蝗,可以在Nacos控制臺(tái)查看
配置文件data id 文件名規(guī)則:${prefix}-${spring.profile.active}.${file-extension}
prefix?默認(rèn)為?spring.application.name?的值,也可以通過(guò)配置
注意
1. server-addr= 域名+port育特,如果只配置server-addr=nacos.com丙号,Nacos 代碼生成的路徑中先朦,會(huì)在域名后加端口8848,訪問(wèn)路徑不對(duì)犬缨。
2. Spring cloud 項(xiàng)目配置文件加載順序喳魏,最先加載bootstrap.properties,項(xiàng)目中要有bootstrap.properties文件怀薛,并在bootstrap.properties中包含配置中心地址
3. Nacos 目前有個(gè)bug刺彩,服務(wù)注冊(cè)時(shí),group默認(rèn)DEFAULT_GROUP枝恋,如果自定義group创倔,注冊(cè)后發(fā)現(xiàn)還是DEFAULT_GROUP,自定義的不生效焚碌。
4. 使用Nacos作為配置中心時(shí)畦攘,命名空間默認(rèn)就是public, 其他自定義的命名空間無(wú)效,只有服務(wù)注冊(cè)發(fā)現(xiàn)才區(qū)分命名空間十电。因?yàn)閷?duì)于配置知押,阿里最初命名空間用來(lái)區(qū)分不同業(yè)務(wù)開(kāi)發(fā)場(chǎng)景的,不是用來(lái)區(qū)分開(kāi)發(fā)鹃骂、測(cè)試台盯、線上環(huán)境的,因?yàn)榕渲梦募鹍ata id 已經(jīng)可以區(qū)分環(huán)境畏线,官方目前也沒(méi)有對(duì)該問(wèn)題作出修改静盅,我試了如下最新版也不可以。
<dependency>
????<groupId>com.alibaba.cloud</groupId>
????<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
? ? <version>2.2.1.RELEASE</version>
</dependency>