注册中心/配置管理 —— SpringCloud Alibaba Nacos

这篇具有很好参考价值的文章主要介绍了注册中心/配置管理 —— SpringCloud Alibaba Nacos。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Nacos 简介

Nacos 是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生的应用程序

Nacos 的关键特性包括以下几项:

  • 服务发现和服务健康监测:服务提供者使用原生 SDK、OpenAPI 等注册服务后,服务消费者可以使用 HTTP&API 查找和发现服务。Nacos 提供对服务的实时健康检查,阻止向不健康的主机或服务实例发送请求
  • 动态配置服务:动态配置服务可以让你以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷
  • 动态 DNS 服务:动态 DNS 服务支持权重路由,让你更容易实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务
  • 服务及其元数据管理:Nacos 从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及首要的 metrics 统计数据

Nacos 快速开始

1. Nacos Server 单机模式

在使用 Nacos 之前,需要先下载 Nacos 并启动 Nacos Server,Nacos Server 有两种运行模式:standalone(单机)和 cluster(集群),这里以 2.2.3.release,windows 环境为例

前往 Github 下载 Nacos Server:GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.

解压压缩包,在 bin 目录下执行命令 .\startup.cmd -m standalone

在浏览器中访问:http://localhost:8848/nacos,输入用户名和密码 Nacos/Nacos 便可进入 Nacos 首页

如要关闭 Nacos,在 bin 目录下执行命令 .\shutdown.cmd

0.7 版本之前的 Nacos 在单机模式时使用入式数据库实现数据的存储,不方便观察数据存储的基本情况,0.7 版本之后支持 MySQL 数据源能力,具体的操作步骤如下:

  • 安装 MySQL 数据库(版本要求5.6.5+)

  • 创建数据库 nacos_config,在 conf 目录下找到 mysql-schema.sql 初始化文件并进行初始化

  • 修改 conf/applicationproperties 文件,增加 MySQL 数据源配置

    ### Count of DB:
    db.num=1
    ### Connect URL of DB:
    db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    db.user.0=root
    db.password.0=123
    
  • 之后 Nacos 所有的数据都会保存到 MySQL

2. Nacos Server 集群模式

Nacos 单机模式仅仅适用于测试和单机适用,生产环境大多适用集群模式以确保高可用

接下来讲解如何搭建 Nacso 集群环境,具体步骤如下:

  • 将下载的 Nacos 安装包复制两份,分别命名为 Nacos-01,Nacos-02、Nacos-03,注意,集群模式必须使用配置数据库(如 MySQL)

  • 修改 Nacos-02、Nacos-03 的配置文件 conf/applicationproperties,将服务启动端口分别改为 8850 和 8852

    #*************** Config Module Related Configurations ***************#
    ### If use MySQL as datasource:
    ### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
    spring.datasource.platform=mysql
    spring.sql.init.platform=mysql
    #*************** Spring Boot Related Configurations ***************#
    ### Default web context path:
    server.servlet.contextPath=/nacos
    ### Include message field
    server.error.include-message=ALWAYS
    ### Default web server port:
    server.port=8850
    

    注意:nacos 在 2.0 版本以后,除对外的端口外,还占用另外三个端口:

    • raft port: ${server.port} - 1000
    • grpc port: ${server.port} + 1000
    • grpc port for server: ${server.port} + 1001

    假设对外端口为 8848,即总共会有4个端口被占用,分别为 7848、8848、9848、9849,因此,在同一台机启动多个 nacos 节点时要注意避开所有占用的端口

  • 在 Nacos-01、Nacos-02、Nacos-03 的 conf 目录下添加 cluster.conf 集群配置文件

    ### 这里简单将3个nacos实例部署在同一个机器下
    # 
    127.0.0.1:8848
    127.0.0.1:8850
    127.0.0.1:8852
    
  • 分别进入 Nacos-01、Nacos-02、Nacos-03 的 bin 目录执行命令 .\startup.cmd,没有参数默认就是集群模式

3. Nacos+Nginx 集群模式

在 Nginx 核心配置文件 nginx.conf 添加如下配置

server {
	listen       8847;
	server_name  localhost;

	location /nacos {
		proxy pass http://nacos-server/nacos;
	}

	upstream nacos-server {
		server 127.0.0.1:8848;
		server 127.0.0.1:8850;
		server 127.0.0.1:8852;
	}
}

启动 Nginx,访问:http://localhost:8847/nacos,至此我们完成 Nacos+Nginx 的搭建


SpringBoot 注册到 Nacos

1. Nacos 配置管理

以 SpringBoot 2.3.12.RELEASE 为例,在项目的 pom.xml 文件添加如下依赖:

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>0.2.12</version>
</dependency>

在 application.properties 中配置 Nacos Server 的地址

# 如果搭建了集群只需要填其中一个节点的ip:port即可
nacos.config.server-addr=127.0.0.1:8848
# 如果配置了Nginx,则输入配置的地址,如上面我配置的
# nacos.config.server-addr=127.0.0.1:8847/nacos

在启动类中使用 @NacosPropertySource 加载 dataId 为 springboot-nacos-config 的配置源,并开启自动更新

@SpringBootApplication
@NacosPropertySource(dataId = "springboot-nacos-config", autoRefreshed = true)
public class SpringbootNacosApplication {

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

当然,我们需要在 Nacos 的配置列表中添加 Data-Id: springboot-nacos-config 的配置文件

test.name=hahaha

通过 Nacos 的 @NacosValue 注解设置属性值

@RestController("config")
public class ConfigCon {

    @NacosValue(value = "${test.name}", autoRefreshed = true)
    private String name;


    @GetMapping("get")
    public String get() {
        return name;
    }
}

2. Nacos 服务注册

在项目的 pom.xml 文件添加如下依赖:

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-discovery-spring-boot-starter</artifactId>
    <version>0.2.12</version>
</dependency>

在 application.properties 中配置 Nacos Server 的地址

spring.application.name=springboot-nacos
server.port=8080
server.address=127.0.0.1

# 如果搭建了集群只需要填其中一个节点的ip:port即可
nacos.discovery.server-addr=127.0.0.1:8848
# 如果配置了Nginx,则输入配置的地址,如上面我配置的
nacos.discovery.server-addr=127.0.0.1:8847/nacos

修改启动类,运行即可

@SpringBootApplication
@NacosPropertySource(dataId = "springboot-nacos-config", autoRefreshed = true)
public class SpringbootNacosApplication implements CommandLineRunner {

    // 使用@NacosInjected注入Nacos的NamingService实例
    // NamingService是Nacos对外提供给使用者的接口
    @NacosInjected
    private NamingService namingService;

    @Value("${spring.application.name}")
    private String applicationName;

    @Value("${server.port}")
    private Integer serverPort;

    @Value("${server.address}")
    private String serverAddress;

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

    @Override
    public void run(String... args) throws Exception {
        //应用启动时,将服务注册到Nacos
        namingService.registerInstance(applicationName, serverAddress, serverPort);
    }
}

Nacos SpringCloud

本节主要讲解 SpringCloud 的如何通过 Nacos 实现配置管理和服务发现,以 SpringBoot 2.3.12.RELEASE 为例

1. Nacos 配置管理

在项目的 pom.xml 文件添加如下依赖:

<dependencies>

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

</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.10-RC1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在 application.properties 中配置 Nacos Server 的地址

server.port=8080
spring.application.name=springcloud-nacos

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# spring.cloud.nacos.config.server-addr=127.0.0.1:8847/nacos

spring.application.name 之后会构成 Nacos 配置管理 datald 字段的一部分,在 Nacos Spring Cloud中,datald 的完整格式如下:${prefix}-${spring.profile.active}.${file-extension}

  • ${prefix}:默认为 spring.application.name 的值,也可以通过 spring.cloud.Nacos.config.prefix 配置项来配置
  • ${spring.profile.active}:当前环境对应的 profile,当 spring.profile.active 为空时,对应的连接符 - 也将不存在,datald 的拼接格式变成 ${prefix}.${file-extension}
  • ${file-extension}:配置内容的数据格式,可以通过 `spring.cloud.Nacos.config.file-extension· 来配置 properties 或 yaml 类型

在 Nacos 配置列表中创建 springcloud-nacos.properties 配置文件

test.name=hahah

开发 Controller 获取配置

@RefreshScope
@RestController("config")
public class ConfigCon {

    @Value("${test.name}")
    private String name;

    @GetMapping("get")
    public String get() {
        return name;
    }
}

2. Nacos 服务注册

在项目的 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>

</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.10-RC1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在 application.properties 中配置 Nacos Server 的地址

server.port=8080
spring.application.name=springcloud-nacos

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8847/nacos

在启动类上添加 @EnableDiscoveryClient 注解开启服务注册发现功能

@EnableDiscoveryClient
@SpringBootApplication
public class SpringcloudNacosApplication {

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

在 Nacos 管理页面查看服务列表,发现服务已经注册到 Nacos,服务提供端和消费端都用这种方式进行注册,之后消费端可直接通过服务名直接调用提供端的接口


命名空间 & 分组

除了 DataId,Nacos 还提供了命名空间(Namespace)和 配置分组(Group)用于组织配置。不同的 Namespace 下,可以存在相同的 Group 或 DataId 的配置。同理,不同的 Group 下,可以存在相同的 DataId

一般情况下,最好使用 Namespace 区分环境(dev、sit、uat、prod),Group 区分微服务或项目。Nacos 的权限管理可以控制到命名空间,但不能控制分组。不同的账号对应不同的环境,能够将各个环境隔离开

在 Nacos 控制台名为 dev 的 Namespace,在其下创建名为 springcloud-project 的分组以及名为 service-01.yml 的配置文件

注册中心/配置管理 —— SpringCloud Alibaba Nacos

注册中心/配置管理 —— SpringCloud Alibaba Nacos

注册中心/配置管理 —— SpringCloud Alibaba Nacos

项目下创建 bootstrap.yml 配置文件

server:
  port: 8000
spring:
  application:
    name: service-01
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8847/nacos
        namespace: 0178e474-2cfb-47c3-bded-da7cfa260f99	# 命名空间id
        group: springcloud-project	# 分组名
        file-extension: yml	# 指定格式
      discovery:
        server-addr: 127.0.0.1:8847/nacos
        namespace: 0178e474-2cfb-47c3-bded-da7cfa260f99	# 命名空间id
        group: springcloud-project	# 分组名

创建 TestCon 类,获取配置值文章来源地址https://www.toymoban.com/news/detail-628607.html

@Slf4j
@RestController
public class TestCon {

    @Value("${test.value}")
    private String testValue;

    @GetMapping("/test/getConfig")
    public void getConfig() {
        log.info("testValue: {}", testValue);
    }
}

到了这里,关于注册中心/配置管理 —— SpringCloud Alibaba Nacos的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍

    注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。 服务注册中心(简称注册中心)是微服务框架的一个重要组件,在微服务架构里主要

    2024年02月22日
    浏览(68)
  • 【微服务SpringCloud-Alibaba】:Nacos 配置中心

    在 SpringCloud 中,我们使用了 Config 组件管理所有配置文件,使用了 Bus 消息总线更新配置,两者需要配合使用才能动态的管理配置文件。而 Nacos 可以替代这两个组件,实现动态的管理所有配置文件。 2.1、添加配置文件 想要管理配置,先要有配置文件。在使用 Config 组件管理配

    2023年04月27日
    浏览(51)
  • SpringCloud(H版&alibaba)框架开发教程,使用eureka,zookeeper,consul,nacos做注册中心——附源码(1)

    源码地址:https://gitee.com/jackXUYY/springboot-example 创建订单服务,支付服务,公共api服务(共用的实体),eureka服务 1.cloud-consumer-order80 2.cloud-provider-payment8001 3.cloud-api-commons 4.cloud-eureka-server7001 5.cloud-eureka-server7002 如图所示 修改本地host映射 修改数据库地址为自己的地址,并初始

    2024年02月03日
    浏览(50)
  • Spring Cloud Alibaba 微服务2,注册中心演变 + Nacos注册中心与配置中心

    🏆作者简介: 哪吒 ,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 , 专注Java硬核干货分享,立志做到Java赛道全网Top N。 🏆本文收录于 Java基础教程系列(进阶篇) ,本专栏是针对大学生、初级Java工程师精心打造, 针对Java生态,逐个击破,

    2024年02月02日
    浏览(320)
  • Spring Cloud Alibaba--Nacos服务注册和配置中心

    Nacos 是Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos的特性,官网解释如下: 服务发现和服务健康监测 Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Age

    2024年02月05日
    浏览(61)
  • Spring Cloud Alibaba Nacos(服务注册及配置中心)

    Nacos是由阿里巴巴提供的一款专门构建云本地应用的 动态服务发现、配置中心和服务管理平台 。 在Spring Cloud Alibaba中常使用Nacos作为注册中心和分布式配置中心。  (1)服务发现和管理 动态服务发现是以服务为中心(例如微服务或云原生)体系结构的关键。Nacos支持基于DN

    2024年02月16日
    浏览(70)
  • SpringCloud Alibaba - Nacos 注册发现、分级模型、配置集群、环境隔离、原理

    目录 一、Nacos 安装和配置 二、Nacos 服务注册发现 2.1、将服务注册到 nacos 中 2.2、执行效果 2.3、Nacos 服务注册发现原理过程(考点:与 Eureka 的区别) 三、Nacos 的服务分级模型及配置 3.1、分级模型 3.2、配置集群 3.3、配置 Nacos 负载均衡策略 3.4、Nacos 服务实例的权重设置 3.5、

    2024年04月16日
    浏览(45)
  • day10-Spring Cloud Alibaba Nacos-服务注册与配置中心

    官网:https://github.com/alibaba/nacos,Nacos官方中文手册 Nacos:Spring Cloud Alibaba服务注册与配置中心(非常详细) (biancheng.net) Spring Cloud Alibaba系列-一文读懂Nacos原理 - 掘金 (juejin.cn) Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服

    2024年02月08日
    浏览(56)
  • Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】

    Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】 跳转 Java之SpringCloud Alibaba【二】【微服务调用组件Feign】 跳转 Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】 跳转 Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】 跳转 Java之SpringCloud Alibaba【五】【微服务

    2024年02月16日
    浏览(49)
  • SpringCloud + Gateway(网关) + Nacos(注册中心+配置中心)+ Dubbo(内部服务调用)

    Apache Dubbo是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力 1、协议支持方面 Feign更加优雅简单。Feign是通过REST API实现的远程调用,基于Http传输协议,服务提供者需要对外暴露Http接口供消费者调用,服务粒度是http接口级的。通过短连接的方式进行通信,

    2024年02月06日
    浏览(226)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包