使用nacos作为服务注册中心和配置中心

一、下载安装

说明

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

安装

从官网下载最新版本的服务端

解压后进入bin目录启动即可

#Linux/Unix/Mac
sh startup.sh -m standalone

#Windows
cmd startup.cmd

启动后,默认端口8848,输入地址(http://localhost:8848/nacos/index.html)打开控制台页面,默认账号(nacos/nacos)

二、在工程中使用

1、spring cloud工程使用

1) 引入pom依赖

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-alibaba-dependenciesartifactId>
            <version>2.1.0.RELEASEversion>
            <type>pomtype>
            <scope>importscope>
        dependency>
    dependencies>
dependencyManagement>
<dependencies>
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    dependency>
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    dependency>
dependencies>

2) 配置链接地址

(1)服务发现,在application.properties添加配置

这个功能类似eureka

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#spring.cloud.nacos.discovery.namespace=ce7c7dd4-33fd-4103-acee-f3d78755ea09

(2)配置中心,在bootstrap.properties添加配置

这个功能类似Apollo

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#spring.cloud.nacos.config.group=demo-nacos

进入nacos控制台,在配置列表中添加工程对应的配置文件

dataId格式是: p r e f i x − {prefix}- prefix{spring.profile.active}.${file-extension}

如 service-provider.properties,service-provider-test.properties

  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
     

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    @RequestMapping("/get")
    public boolean get() {
     
        return useLocalCache;
    }
}

2、SpringBoot工程中使用

1)引入jar包依赖

<dependency>
    <groupId>com.alibaba.bootgroupId>
    <artifactId>nacos-config-spring-boot-starterartifactId>
    <version>0.2.2version>
dependency>

2)增加配置参数

在application.properties增加配置:

nacos.config.server-addr=127.0.0.1:8848

3)在启动类配置

@SpringBootApplication
@NacosPropertySource(dataId = "service-provider.properties",groupId="demo-nacos", autoRefreshed = true)
public class DemoNacosSpringbootApplication {
     

    public static void main(String[] args) {
     
        SpringApplication.run(DemoNacosSpringbootApplication.class, args);
    }

    @Controller
    @RequestMapping("config")
    public class ConfigController {
     

        @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
        private boolean useLocalCache;

        @RequestMapping(value = "/get", method = GET)
        @ResponseBody
        public boolean get() {
     
            return useLocalCache;
        }

        @Autowired
        private Environment env;

        @RequestMapping(value = "/test", method = RequestMethod.GET)
        @ResponseBody
        public String test() {
     
            String string = env.getProperty("provider.test");
            return "Hello Nacos Discovery " + string;
        }
    }
}
  • @NacosPropertySource 指定配置文件
  • @NacosValue(value = “${useLocalCache:false}”, autoRefreshed = true) 在具体属性上赋值
  • env.getProperty(“provider.test”); 直接取值

三、注意

NACOS1.0.1 版本有bug,有时候新增的配置无法马上查询到,必须重启服务后才能查到,升级到1.1.0后问题修复了

四、参考

  • https://github.com/alibaba/nacos
  • https://nacos.io/zh-cn/docs/what-is-nacos.html
  • https://github.com/alibaba/spring-cloud-alibaba

你可能感兴趣的:(框架,nacos,springboot,springcloud)