SpringCloud学习:Spring Cloud Alibaba Nacos(服务注册中心、配置管理中心)

文章目录

  • [Spring Cloud Alibaba Nacos](#Spring Cloud Alibaba Nacos)
    • [1. 入门简介](#1. 入门简介)
    • [2. Nacos](#2. Nacos)

Spring Cloud Alibaba Nacos

1. 入门简介

  1. 由阿里提供的微服务开发的一站式解决方案(服务注册和发现、服务调用、服务熔断和降级、服务限流、网关)
  2. 介绍:阿里推出的致力于微服务开发的一站式解决方案 ,包含开发分布式应用必需组件
  3. 版本选择与说明:以github上的版本为主(官网更新不及时)
  4. 主要功能

2. Nacos

  1. 简介:服务注册中心和配置中心 (Consul)(独立于第三方
    1. Nacos:Dynamic Na ming and C onfiguration Service;官网:**www.nacos.io
    2. 介绍:一个更易于构建云原生应用动态服务发现、配置管理和服务管理中心
    3. Nacos默认是AP(性能),服务注册中心不是微服务 ,而是一个独立的微服务的第三方的服务注册中心项目 ,要在windows下运行开启,如consul agent -dev
    4. 服务注册组件的比较
  2. 下载和安装
    1. 去github上下载源码压缩包,要在windows上独立运行
    2. 解压安装包,直接运行bin目录下在命令行执行命令startup.cmd进行启动默认服务器端口是8848 ,启动后直接输入localhost:8848 进行访问,默认账号密码都是nacos,在命令行输入shutdown.cmd进行关闭
  3. Nacos Discovery服务注册中心
    1. 注册微服务进入Nacos
      1. 建项目
      2. 改POM:引入Nacos的依赖,在官网找到正确的版本
      3. 写YML:配置自己的微服务端口号和名称对Nacos微服务进行配置,端口号是8848,如果使用配置中心,则必须要把Nacos的配置放到bootstrap.yml中,其会优先于application.yml进行配置
      4. 主启动:在主启动类上使用@EnableDiscovery注解进行标注以注册进入Nacos服务中心
      5. 业务类:使用方法根据微服务的名字调用服务提供者的方法
    2. 负载均衡
      1. Nacos是支持负载均衡 的,可以使用RestTemplate+LoadBalancer(用@LoadBalancer注解标注方法)或者OpenFeign(在yml中进行配置)来进行实现
      2. 复制微服务时可以不用copy代码 ,而是直接对微服务进行copy,右键微服务并点击copy ,然后修改微服务名配置一个参数即端口号就可实现微服务的复制![[Pasted image 20241016125650.png]]
  4. Nacos Config配置中心:实现中心化全局配置的动态变更动态刷新RefresnScope全局广播通知
    1. 通过Nacos微服务spring.cloud.alibaba.config 实现全局配置动态变更,动态刷新
    2. 先从配置中心拉取配置 ,当使用配置中心时,会有两个配置文件 ,一定要将与Nacos有关的配置文件放到bootstarp.yml中将与微服务有关的配置放到application.yml中,先读取bootstarp.yml中Nacos的配置并读入全局配置
    3. 配置步骤
      1. 建项目
      2. 改POM:要引入discovery、config、bootstarp的POM依赖
      3. 写yml:bootstrap.ymlapplication.yml
        1. 要配置两个配置文件bootstarp和application,先从配置中心拉取配置
        2. 当要引入全局配置中心时,必须要在bootstarp的配置文件中对Nacos进行配置 ,因为其先从bootstarp.yml中读取配置文件 ,故一定要将Nacos的配置文件放到bootstrap文件中 ,然后将与微服务有关的配置放到application.yml中
      4. 主启动:要将微服务注册进入Nacos
      5. 业务类:使用 @RefreshScope 注解标注业务类以实现动态刷新配置
    4. 在Nacos中添加配置 :要在Nacos的微服务网站8848上创建配置信息(根据DataIa的格式创建,一个DataId对应一组相同名字的微服务) ,然后写了bootstarp.yml的微服务会自动读取对应的DataId
      1. DataId的组成格式每一个微服务名对应唯一的一个DataId ,一个DataId对应一组名字相同的微服务,必须根据DataId的格式来创建配置中心
        2. 在Nacos的配置中心添加配置信息时,必须根据提供的格式来创建DataID ,该配置会被自动加载到对应的微服务中,通过@Value(${config.info})来加载配置信息20241016132415.png]]
      2. 在Nacos中添加配置信息
        1. 创建好配置信息后点击发布 ,此时对应DataID的微服务就可以从Nacos中读取配置信息 ,并在业务类中通过@Value("{config.info}")来读取配置文件中的信息
        2. 创建配置信息时,配置格式DataID 以及bootstrap中配置的格式 必须三者相同三码合一
      3. 自动动态刷新:使用**@RefreshScope**注解在业务类上进行标注
      4. 历史配置 :Nacos会记录配置文件的历史版本 并默认保留30天,且支持一键回滚功能一键回滚后会出发配置刷新
      5. 流程
        1. 微服务配置了配置中心 时,会创建两个配置文件bootstrap.yml和application.yml必须将与Nacos相关的信息放入bootstrap.yml中 ,其余的放入application;当微服务启动时,会先读取bootstrap中的配置信息 ,且将配置中对应DataId的配置信息加载进入微服务 ,注册进入Nacos并根据DataID找对应的配置信息,如果存在则将配置信息读入微服务,然后再读取application中的配置,使用@Value("${config.info}")来读取Nacos中配置的信息
  5. Nacos数据模型之Namespace-Group-DataId(三元组唯一确定)
    1. 问题描述
      1. 多环境多项目时,怎么对配置信息进行管理![[Pasted image 20241016134022.png]]![[Pasted image 20241016134014.png]]
    2. Namespace-Group-DataId 三元组
      1. 在多项目多服务场景下,可以使用Namespace-Group-DataId对每个微服务的配置信息进行分类管理
      2. 不同的Namespace之间是隔离的通过Group对微服务进行分组每一个DataId对应一组微服务名相同的微服务
      3. 一个DataId对应一组名字相同的微服务,Namespace可以用来区分部署环境(dev\prod\test),Group可以对微服务进行分组
      4. 三者的作用
    3. Namespace-Group-DataId三种方案
      1. DataId方案:一个DataId对应一组名字相同的微服务
        1. DataId的格式:spring.cloud.application.name}-${spring.profile.active}.&{}
        2. 通过DataId的格式来配置每个微服务对应的DataId,并在Nacos中进行创建
相关推荐
编码者卢布9 分钟前
【Azure Storage Account】Azure Table Storage 跨区批量迁移方案
后端·python·flask
可触的未来,发芽的智生12 分钟前
狂想:为AGI代称造字ta,《第三类智慧存在,神的赐名》
javascript·人工智能·python·神经网络·程序人生
编码者卢布16 分钟前
【App Service】Java应用上传文件功能部署在App Service Windows上报错 413 Payload Too Large
java·开发语言·windows
q行1 小时前
Spring概述(含单例设计模式和工厂设计模式)
java·spring
詩不诉卿1 小时前
zephyr学习之自定义外部module记录
学习
浮游本尊1 小时前
React 18.x 学习计划 - 第十三天:部署与DevOps实践
学习·react.js·状态模式
好好研究1 小时前
SpringBoot扩展SpringMVC
java·spring boot·spring·servlet·filter·listener
毕设源码-郭学长1 小时前
【开题答辩全过程】以 高校项目团队管理网站为例,包含答辩的问题和答案
java
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][dma]dmapool
linux·笔记·学习