Nacos

Nacos
  • 配置中心
搭建
1.maven依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.bootstrap.yml
spring:
  application:
    name: provider
  #  profiles:
  #    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        #namespace: 9e10a8ac-ea2c-4ee3-a221-c5b7653cd474
        group: NACOS_MICRO_SERVICE_GROUP
      config:
        server-addr: 127.0.0.1:8848
        #        file-extension: yaml
        # dataID  ${prefix}-${spring.profiles.active}.${file-extension}
        # 命名空间 默认 public
        #namespace: 9e10a8ac-ea2c-4ee3-a221-c5b7653cd474
        # 配置组  默认 DEFAULT_GROUP
        group: NACOS_MICRO_SERVICE_GROUP
#nacos:
#  test : 1101
#  name : qyc1
#  port : 1231
            
spring.cloud.nacos.config.enable = true ( 读取远程配置) / false( 不读取远程配置)
读取nacos服务器端规则:
nacos服务端按照 {prefix}-{spring.profiles.active}.{file.extension} 创建文件: 项目自动时,自动按照这个规则到服务器端找这个文件
{prefix}:
        spring.application.name
{spring.profiles.active}:
        如果没有spring.profiles.active,则 “-”连同后面的都不写,
{file.extention}:
        指定的文件类型,支持yaml、properties两种
3.代码配置
@RefreshScope
//@ConfigurationProperties(prefix = "nacos")
@Component
@Data
public class RefreshConfig {
    @Value("${nacos.test}")
    private String test;
    @Value("${nacos.name}")
    private String name;
    @Value("${nacos.port}")
    private int port;
}
原理
1. nacos config 数据结构
主要通过dataId 和 group 来唯一确定一条配置
2. springcloud 应用获取数据
dataId
在 Nacos Config Starter 中,dataId 的拼接格式如下
${prefix} - ${spring.profiles.active} . ${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档
注意,当 activeprofile 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}.prefix.{file-extension}
file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。 目前只支持 properties 类型。

group

group 默认为  DEFAULT_GROUP,可以通过  spring.cloud.nacos.config.group 配置。
3. 自动注入
Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator接口,并将优先级设置成了最高。
在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解也能直接获取 Nacos Server 端配置的内容。
4. 动态刷新
Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法 。
如果需要对 Bean 进行动态刷新,给类添加 @RefreshScope 或 @ConfigurationProperties注解。
  • 注册中心
搭建
1.maven依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.bootstrap.yml
spring:
  application:
    name: provider
  #  profiles:
  #    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        #namespace: 9e10a8ac-ea2c-4ee3-a221-c5b7653cd474
        group: NACOS_MICRO_SERVICE_GROUP
      config:
        server-addr: 127.0.0.1:8848
        #        file-extension: yaml
        # dataID  ${prefix}-${spring.profiles.active}.${file-extension}
        # 命名空间 默认 public
        #namespace: 9e10a8ac-ea2c-4ee3-a221-c5b7653cd474
        # 配置组  默认 DEFAULT_GROUP
        group: NACOS_MICRO_SERVICE_GROUP
#nacos:
#  test : 1101
#  name : qyc1
#  port : 1231
3.代码配置
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosProviderApplication {
@FeignClient(value = "quickstart-provider")
public interface ProviderClient {
    @GetMapping("/service")
    String service();
}
@RestController
public class ConsumerController {
    @Autowired
    private ProviderClient providerClient;
    @GetMapping("/service")
    public String service() {
        //远程调用
        String service = providerClient.service();
        return "消费者:hello; " + service;
    }
}
  • 源码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值