Nacos介绍

Nacos概念

Nacos事阿里的一个开源产品,针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案,目前在spring cloud alibaba下,相对于eureka而言,Nacos更加灵活和高效,并提供配置中心,使用者无需在整合配置中心spring cloud config

命名空间: namespqce ,Nacos有命名空间的概念,目的是为了更好的隔离

组: group,在每个命名空间下又有组的概念,同样是为了更细粒度的隔离

data-id :组下有data-id,例如 gateway-prod.yml,是一个配置文件

data-id选用规则

${prefix}-${spring.profile.active}.${file-extension}

${prefix}
默认为所属工程配置spring.application.name的值,spring.cloud.nacos.config.prefix来配置

${spring.profile.active}
spring.profile.active即为当前环境对应的profile.注意:当spring.profile.active为空的时候,对应的连接符 - 也将不存在,dataId的拼接格式变成prefix.{file-extension}
${file-extension}
为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型

通过命名空间-组-data-id 锁定一组配置

Nacos功能

服务发现与服务健康检查

    Nacos 使服务更容易注册,并通过 DNS 或 HTTP 接口发现其他服务, Nacos 还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求
动态配置管理 

动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。 Nacos 消除了在更新配置时重新部署应用程序,这使配置的更改更加高效和灵活
动态DNS服务  

Nacos 提供基于 DNS 协议的服务发现能力(Nacos不光基于HTTP进行服务发现,也可以通过DNS协议进行服务发现),旨在支持异构语言的服务发现,支持将注册在 Nacos 上的服务以域名的方式暴露端点,让三方应用方便的查阅及发现
服务和元数据管理

Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。

Nacos搭建

下载

各位基于自己的环境下载安装包,我这里是windows搭建Nascos,Nacos基于JDK8+,所以需要提前准备jdk环境

 

 解压至安装目录

Nacos配置 

更改非集群启动

Nacos默认为集群启动,我们需要修改一下

set MODE="standalone"

更改端口 

 Nacos默认端口8848,如果更改,需要改动配置

server.port=xxxx

 更改持久化

 Nacos默认启动的数据加载在内存中,如果要修改持久化,我们需要找到conf文件夹下sql文件,并在application.properties中配置

Nacos启动 

点击start.cmd启动Nacos

 访问http://localhost:8848/nacos/   默认用户名密码都是nacos

 详细信息

spring cloud 集成Nacos 

添加依赖

<dependencies>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

</dependencies>

添加配置

package com.slbuildenv.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class TestMainApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestMainApplication.class,args);
    }
}

启动项目向Nacos注册

服务注册列表 

  查看服务详情

Nacos配置中心

配置优先级

整体级别先后

${prefix}-${spring.profile.active}.${file-extension} > ${prefix}.${file-extension} >本地配置

内置级别先后

内部规则data-id配置 > extension-config(扩展配置) > shared-config(共享配置)

添加依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

建立配置文件

建立之前先建立命名空间test,这里省略,图形化界面操作即可

 共享配置如下:

 非共享配置如下:

 应用程序配置读取

 bootstrap.yml

spring:
  application:
    name: cloud-test-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: 46e579da-5abf-495d-a766-b744500cf2d3
        group: test_group
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml
        namespace: 46e579da-5abf-495d-a766-b744500cf2d3
        group: test_group
        shared-configs:
          - data-id : application.yml
            group: test_group



testController

package com.slbuildenv.cloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/common")
public class TestController {

    @Value("${ceshi.name:没有读到配置}")
    private String name;
    @Value("${shared.name: 没有读到共享配置}")
    private String shareName;

    @GetMapping("/info")
    public String getInfo(){
    return name + shareName;
    }
}

读取配置的时候尽量加上默认值,防止程序启动报错,@Value("${ceshi.name:没有读到配置}") 

访问测试

更多推荐