各注册中心对比|

特性NacosEurekaConsulZookeeper
一致性协议CP+APAPCPCP
雪崩保护支持(保护阈值)支持--
负载均衡权重(nacos控制台实例配置)ribbonfabio-
自动注销实例支持支持--
跨注册中心同步支持-支持-
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 来配置。目前只支持 propertiesyaml 类型。

注意:当 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;
    }
    
}
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐