Nacos(一):springcloud使用Nacos做为注册中心/配置中心
各注册中心对比|特性NacosEurekaConsulZookeeper一致性协议CP+APAPCPCP雪崩保护支持(保护阈值)支持--负载均衡权重(nacos控制台实例配置)ribbonfabio-自动注销实例支持支持--跨注册中心同步支持-支持-spingcloud集成支持支持支持-Dubbo集成支持--支持K8s集成支持-支持-springcloud集成nacos
·
各注册中心对比|
特性 | Nacos | Eureka | Consul | Zookeeper |
---|---|---|---|---|
一致性协议 | CP+AP | AP | CP | CP |
雪崩保护 | 支持(保护阈值) | 支持 | - | - |
负载均衡 | 权重(nacos控制台实例配置) | ribbon | fabio | - |
自动注销实例 | 支持 | 支持 | - | - |
跨注册中心同步 | 支持 | - | 支持 | - |
spingcloud集成 | 支持 | 支持 | 支持 | - |
Dubbo集成 | 支持 | - | - | 支持 |
K8s集成 | 支持 | - | 支持 | - |
springcloud集成nacos完成注册中心
<spring-boot-dependencies.version>2.5.7</spring-boot-dependencies.version>
<spring-cloud-dependencies.version>2020.0.4</spring-cloud-dependencies.version>
<spring-cloud-alibaba-dependencies.version>2021.1</spring-cloud-alibaba-dependencies.version>
<!-- springcloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springcloud-alibaba -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>3.0.4</version>
</dependency>
<!-- nacos依赖,排除的是ribbon,在高版本使用feign的时候,默认使用ribbon负载均衡,所以直接排除即可-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<optional>true</optional>
<!-- 使用spring loadbalancer,弃用ribbon -->
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
完成依赖之后只需要
@SpringBootApplication
// 打开nacos控制台即可在服务管理中看到,注意配置文件
@EnableDiscoveryClient
public class NacosProviderApplication(){
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
}
注意:配置文件需要使用bootstrap命名,(原因是springboot的加载顺序),并且配置了
spring.application.name=nacos-provider
nacos做配置中心
在Nacos-Server中新建配置,其中Data ID它的定义规则是:${prefix}-${spring.profile.active}.${file-extension}
- prefix 默认为
spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。 - spring.profile.active 即为当前环境对应的
profile
,可以通过配置项spring.profile.active
来配置。 - file-exetension 为配置内容的数据格式,可以通过配置项
spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
控制台新增配置 data-id为nacos-provider选择yml(和下面file-extension保持一致)
正常写配置即可,也可以本地写一份(启动默认从nacos加载覆盖
)
知道大家都懒,贴图!!!
配置文件bootstrap.yml中
spring:
application:
name: nacos-provider
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yml
代码测试
@RestController
// 自动刷新(nacos发布了会自动更改)
@RefreshScope
public class TestCtrl(){
// nacos配置中心中,添加nacos-provider,内容和平常的yml中一致即可
@Value("${txlc.config.text}")
private String config;
@RequestMapping("/getValue")
public String getValue() {
return config;
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)