Spring Cloud alibaba Nacos注册中心与配置中心

 

目录

Nacos注册中心

1.什么是Nacos注册中心?

服务注册

1.引入依赖

2、在yml中配置nacos地址

3.启动类添加@EnableDiscoveryClient注解

4.项目重新启动后,可以看两个服务都被注册进了 Nacos

 Nacos配置中心

1.什么是Nacos配置中心

配置中心的思路:

2.Nacos配置中心入门

1.创建nacos_config 

pom.xml

2.bootstrap.yml

 3.启动类

4.controller

5.在Nacos中新建配置文件

 6.填写配置文件名称、格式、内容

7.测试

 配置隔离

Nacos配置管理模型

Nacos注册中心

1.什么是Nacos注册中心?

​Nacos支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。

官方介绍:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。

注册中心主要有三部分组成:

 Nacos-Server:注册中心

提供服务的注册和发现。

 Nacos-Provider:服务提供方

把自身的服务实例注册到 Nacos Server 中

 Nacos-Consumer:服务调用方

通过 Nacos Server 获取服务列表,消费服务。

以下文章中以这三个服务举例:

 Nacos-Provider (订单服务,端口:8080)

Nacos-Consumer(用户服务,端口:8081)

nacos(项目内配置完即可使用,nacos默认端口:8848)

服务注册

1.引入依赖

在 springcloud-parent 父工程中引入 SpringCloudAlibaba 的依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Nacos-ProviderNacos-Consumer 子工程中的pom文件中引入 nacos-discovery 依赖:

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

2、在yml中配置nacos地址

在Nacos-Provider工程中配置application.yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.209.129:8848 #nacos服务的地址
  application:
    name: nacos-provider #向注册中心注册的名字

在Nacos-Consumer工程中配置application.yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.209.129:8848 #nacos服务的地址
  application:
    name: nacos-consumer#向注册中心注册的名字

3.启动类添加@EnableDiscoveryClient注解

在Nacos-Provider工程中的启动类上添加此注解:

@SpringBootApplication
@EnableDiscoveryClient//向注册中心注册该服务,并可以获取其他服务的调用地址
public class ConsumerApp {

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

在Nacos-Consumer工程中的启动类上添加此注解:

@SpringBootApplication
@EnableDiscoveryClient //向注册中心注册该服务,并可以获取其他服务的调用地址
public class ConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class,args);
    }
}

4.项目重新启动后,可以看两个服务都被注册进了 Nacos

 Nacos配置中心

1.什么是Nacos配置中心

首先我们来看一下,微服务架构下关于配置文件的一些问题:

  • 配置文件相对分散。

  • 配置文件无法区分环境。

  • 配置文件无法实时更新。

配置中心的思路:

  1. 首先把项目中各种配置全部都放到一个集中的地方进行统一管理。

  2. 当各个服务需要获取配置的时候,就来配置中心的接口拉取自己的配置。

  3. 当配置中心中的各种参数有更新的时候,也能通知到各个服务实时的过来同步最新的信息,使之动态更新。

2.Nacos配置中心入门

1.创建nacos_config 

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

2.bootstrap.yml

注意:

  • 客户端配置文件的名称必须为bootstrap.yml

  • bootstrap.ymlapplicaton.yml 优先加载,应用于系统级别参数配置,一般不会变动;

  • application.yml应用于SpringBoot项目的自动化配置

spring:
  cloud:
    nacos:
      config:
        server-addr: 192.168.88.132:8848
        prefix: nacos-config #默认值是spring.application.name
        file-extension: yaml #默认值是properties

 3.启动类

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

4.controller

@RestController
@RefreshScope  //重新从BeanFactory获取一个新的实例(该实例使用新的配置)
public class ConfigController {

    @Value("${spring.datasource.driver-class-name}")
    private String className;
    @Value("${spring.datasource.url}")
    private String url;
    @Value("${spring.datasource.username}")
    private String username;
    @Value("${spring.datasource.password}")
    private String password;
    @Value("${spring.datasource.type}")
    private String type;

    @RequestMapping("/config")
    public String config(){
        System.out.println(this);
        String configInfo = className+"<br>" +url+ "<br>" +username+ "<br>" +password+ "<br>" +type;
        return configInfo;
    }

5.在Nacos中新建配置文件

在 Nacos 中,dataId(配置文件的命名的规则) 的完整格式如下:

${spring.cloud.nacos.config.prefix}.${spring.cloud.nacos.config.file-extension}

说明

spring.cloud.nacos.config.prefix:默认是当前服务的服务名称

spring.cloud.nacos.config.file-extension:配置文件的格式(后缀),目前只支持yaml和properties

 6.填写配置文件名称、格式、内容

 内容如下:

server:
  port: 80
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.204.129:8848
  application:
    name: nacos-config
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/health?characterEncoding=UTF-8
    username: root
    password: 1111
    type: com.alibaba.druid.pool.DruidDataSource

7.测试

启动时加载配置文件

修改配置文件后nacos监听到MD5有变化则推送消息给客户端,客户端收到消息后会拉取最新配置

浏览器访问

 配置隔离

Nacos配置管理模型

  • Namespace:代表不同的环境配置隔离 如:开发、测试
  • Group:可以代表某一个项目 如: XX电商项目
  • DataId:配置文件/工程名称

获取配置集需要指定:

  1. nacos服务地址,必须指定

  2. namespace,如不指定默认public

  3. group,如不指定默认 DEFAULT_GROUP

  4. dataId,必须指定 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值