首页 > 其他分享 >Spring Cloud接入Nacos作为配置中心和服务发现

Spring Cloud接入Nacos作为配置中心和服务发现

时间:2024-08-09 17:17:33浏览次数:5  
标签:服务 spring 配置 Nacos nacos cloud Spring Cloud

一、nacos介绍

Nacos是Dynamic Naming and Configuration Service(动态命名和配置服务)的首字母简称,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos由阿里巴巴开源,致力于帮助用户发现、配置和管理微服务。以下是Nacos的详细介绍:

  1. 动态服务发现:
    • Nacos支持基于DNS和基于RPC的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent注册Service后,服务消费者可以使用DNS或HTTP&API查找和发现服务。
    • Nacos通过心跳机制和服务同步来确保服务信息的实时性和一致性。服务提供者会定期发送心跳给Nacos Server,以表明其服务处于活跃状态。同时,Nacos Server集群之间会互相同步服务实例信息,保证服务信息的一致性。
  2. 配置管理:
    • Nacos提供动态配置服务,允许用户以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。这消除了配置变更时重新部署应用和服务的需要,使配置管理变得更加高效和敏捷。
    • Nacos提供了一个简洁易用的UI(控制台样例Demo)来帮助用户管理所有的服务和应用的配置。同时,它还支持配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪等特性。
  3. 动态DNS服务:
    • Nacos支持动态DNS服务,允许用户更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
    • 动态DNS服务还支持权重路由,让用户可以根据需要调整服务的负载均衡策略。
  4. 服务元数据管理:
    • Nacos能够从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA以及最首要的metrics统计数据。

二、安装准备

1.安装nacos server

  • 你可以从Nacos GitHub下载Nacos Server,并按照官方文档启动Nacos服务。
  • 确保Nacos服务已经启动,并可以通过默认端口(8848)访问

2.创建spring boot项目

说明:本次实验nacos版本:2.2.4

三、修改配置

1.添加依赖

注意:在项目的pom.xml(主服务目录)中添加Nacos Config的依赖。确保你的Spring Cloud版本与Nacos Config的版本兼容

 <!--  nacos -->
        <!-- 服务发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.5.0</version>
            <!-- <exclusions>
                <exclusion>
                    <groupId>com.alibaba.nacos</groupId>
                    <artifactId>nacos-client</artifactId>
                </exclusion>
            </exclusions> -->
        </dependency>
        <!-- 配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <!-- <exclusions>
                <exclusion>
                    <groupId>com.alibaba.nacos</groupId>
                    <artifactId>nacos-client</artifactId>
                </exclusion>
            </exclusions> -->
        </dependency>
        <!-- <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency> -->
        <!-- 此处要配置,不然报错:No spring.config.import property has been defined -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
View Code

2.配置nacos config

注意:在src/main/resources(主服务目录)目录下,创建bootstrap.ymlbootstrap.properties文件(注意是bootstrap,不是application,因为配置中心的加载优先级高于application)。

spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.register-enabled=true
spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:nacos-headless:8848}
spring.cloud.nacos.discovery.namespace=${NACOS_NAMESPACE:public}
spring.cloud.nacos.discovery.group=${NACOS_GROUP:dev}

spring.cloud.nacos.config.enabled=true
spring.cloud.nacos.config.server-addr=${NACOS_URL:nacos-headless:8848}
spring.cloud.nacos.config.namespace=${nacos.namespace:public}
spring.cloud.nacos.config.group=${NACOS_GROUP:dev}
View Code

3.nacos管理页面配置中心配置

注意:

  • Nacos中的Data ID通常是${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension},但你可以根据需要进行调整。
  • 确保spring.application.name和Nacos中的Data ID设置相匹配。
  • 如果使用不同的profiles(如dev, test, prod),确保Nacos中有对应的配置,并在启动命令中指定profile(例如,使用--spring.profiles.active=dev)。
  • Nacos Config支持配置的热加载,但请注意不是所有的配置项都能被动态刷新

 

 

四、验证

说明:

  • 服务配置spring.application.name=gct-ipaas;spring.profiles.active=gct-paas
  • 会在配置中心查找 且配置优先级:gct-ipaas < gct-ipaas.properties < gct-ipaas-gct-paas.properties ;

1.没有在配置中心配置时,三个配置文件都会忽略

 2.配置中心配置了gct-ipaas,发现日志里不再忽略gct-ipaas配置

 

标签:服务,spring,配置,Nacos,nacos,cloud,Spring,Cloud
From: https://www.cnblogs.com/aroin/p/18350952

相关文章

  • Spring Boot 常见注解的用法和功能
    ​前言        SpringBoot提供了大量注解,主要用于简化配置和开发,大致可分为核心注解、Web注解、依赖注入注解、数据访问注解、配置注解、条件注解、测试注解。一、核心注解@SpringBootApplication        作用: 标注一个主程序类,表明这是一个SpringBoo......
  • SpringBoot日志的使用
    背景:在生产环境中,排程问题都是通过日志,所以日志很重要。日志有三个部分组成LoggerAppenderLayout一般日志都会有对应的配置文件,log4j2.xml或者是logback-spring.xml,日志的输出格式在Pattern标签中1、确认日志框架:确认日志框架是log4j2、logback还是其他的......
  • SpringBoot基础 - 准备工作(打包成可运行的jar)
    目录A.简介B.下载一.配置本地Maven二.修改阿里云maven镜像三. 导入SpringBoot的相关依赖C.例子D.快捷使用A.简介SpringBoot是一种用于简化Spring应用开发的框架,它具有以下特点和优势:一、简化配置传统Spring应用配置的复杂性:在传统的Spring......
  • Spring声明式事务
    Spring声明式事务 1.事务的概念1.1编程式事务编程式事务是指手动编写程序来管理事务,即通过编写代码的方式直接控制事务的提交和回滚Connectionconn=...;​try{  //开启事务:关闭事务的自动提交  conn.setAutoCommit(false);  //业务代码 ...  ......
  • Spring中的统一异常处理
    在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码。不过,Controller一多,我们发现每个Controller里都有大量重复的、冗余的异常处理代码,很是啰嗦。能否将这些......
  • 新建一个SpringMVC项目
    新建一个SpringMVC项目一、思路需求分析,主要考虑用例图、活动图建数据库新建maven项目设置项目的web框架pom.xml中导入依赖包,数据库、连接池、mybatis,mybatis-spring、spring、junit编写spring主配置文件applicationContext.xml,用于整合框架编写web.xml文件,DispatcherSer......
  • springcloud alibaba sentinel降级 @SentinelResource
    1.sentinel降级方法和主方法public且返回值、参数必须一致的情况下,必须加【BlockExceptionblockException】参数2、业务降级方法和主方法public且返回值、参数必须一致,Throwable参数可加可不加@RequestMapping("/consumer/fallback/{id}")@SentinelResource(value=......
  • Springboot+logback+druid +密码加密 实现业务日志入库
    springboot配置spring:datasource:type:com.alibaba.druid.pool.DruidDataSourcedruid:#主库数据源master:driverClassName:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://xxx:3306/dbName?useUnicode=true&characterEncoding=u......
  • spring boot下跨域安全配置
    1@Bean2publicFilterRegistrationBeancorsFilter(){3finalUrlBasedCorsConfigurationSourcesource=newUrlBasedCorsConfigurationSource();4finalCorsConfigurationconfig=newCorsConfiguration();5config.setAll......
  • IntelliJ IDEA 2024.2 发布:Spring Data JPA即时查询、自动补全cron表达式
    今早看到,IntelliJIDEA2024.2发布的邮件提示,看了一眼这个版本更新的新特性真的太适合我了!也许这些能力对关注DD的小伙伴也有帮助,所以搞篇博客介绍和推荐一下。下面就来一起看看这个版本中推出的几个强大新特性。SpringDataJPA的即时查询在2024.2Ultimate版本中,对Spring......