Nacos注册与配置中心:使用详讲

news2024/12/23 9:03:14

文章目录

  • 注册
    • 1. 引入依赖
    • 2. yaml配置
    • 设置命名空间
    • 注册信息在nacos中的内存状态
    • 总结nacos的服务注册发现机制
  • 配置中心
    • 应用场景
    • 配置中心运行结构
    • 远程配置:
      • 1. 在本地进程添加config 依赖 和bootstrap依赖
      • 2. 需要引入一个bootstrap.yaml文件
    • 案例练习

注册

  • 所有组件配置步骤-大三步
    • 依赖
    • yaml配置
    • 配置类,注解的使用(nacos客户端没有)
  • 逐步完成

1. 引入依赖

<!--nacos-注册抓取-client-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2. yaml配置

spring:    
# cloud配置
  cloud:
    # nacos中注册发现的功能
    nacos:
      #填写服务端地址
      discovery:
        # 填写nacos的服务端地址
        server-addr: localhost:8848
        # 属性1:当前启动进程是永久实例还是临时实例(true 临时实例 默认)
        ephemeral: true
        # 属性2:macos实例的ip地址 (只有在众多服务器的时候使用 ->被别人访问时使用,<可被外界访>.)
        # ip: 127.0.0.1
        # 属性3:命名空间 (:后面是创建命名空间的id值),开发环境的隔离
        namespace: 22233727-d5d1-4fea-9328-edf609a9afcb
        # 属性4:分组 (主要是对版本进行分组,eg:1版本在一组,2版本在一组) 版本的隔离
        group: 1.0
        # 属性5:服务心跳检查 :永久实例不会剔除(nacos会主动问,查看是否存在),临时实例会剔除(主动发出心跳请求)
        # 心跳检查的隔离时间
        heart-beat-interval: 5
        # 超时心跳删除时间
        ip-delete-timeout: 20
  • 临时实例,永久实例
    • 同一个服务,可以启动多个实例,形成一个服务集群.
    • 当前启动进程是永久实例还是临时实例 true 表示临时实例 false表示永久实例
    • spring.cloud.nacos.discovery.ephemeral=fasle
    • 永久实例:nacos永远不删除的注册信息,就是永久实例.
    • 临时实例:暂时为某些应用,环境准备的扩容实例,就是定义为临时实例.
    • 例如: 淘宝每一个功能都是一个服务,而且具备多个实例,平日访问是固定流量,所以使用永久实例支持,如果双11来临,流量激增,需要增加临时实例,等待11完成,删除临时实例
  • 客户端实例的ip地址
    • 服务器ip地址有多个,因为配置多个网卡,有的网卡是外部访问的,有的网卡是局域网网卡,所以客户端web实例在nacos注册希望被别人访问调用一般会考虑是内部调用还是外部调用.
    • 为了防止springboot自动读取的ip地址未必满足实例相互调用的需求,一般情况下,认为确定到底是哪个ip地址,填充到这个属性,携带到nacos.
    • spring.cloud.nacos.discovery.ip=xx.xx.xx.xx
  • 服务心跳检测
    • 后续服务实例和nacos服务端会保持一个心跳检测的机制.如果心跳检测结果失败,nacos就会认为这个实例不健康,会剔除实例或者保存不健康状态.

    • 永久实例:故障,宕机.不会在心跳检测时,保持健康状态,但是不会剔除.

    • 临时实例:故障,宕机,就会在一段时间之后,进行剔除.

    • spring.cloud.nacos.discovery.heart-beat-interval=5 spring.cloud.nacos.discovery.ip-delete-timeout=20

设置命名空间

  1. 开启Nacos服务之后用浏览器进入:http://localhost:8848/nacos/该网站
  2. 默认情况下,只有public公用命名空间.
    请添加图片描述
  3. 创建完新的命名空间,可以在服务列表中看到隔离的注册信息
    在这里插入图片描述
  • 分组配置
  • 在同一个命名空间注册的服务实例,可以进行分组操作.主要功能之一–灰度发布.
  • 简单介绍一下灰度发布: 开发项目,项目发布的特点两个 一个是持续发布,一个是版本发布. 持续发布特点中,有灰度发布的概念.
    在这里插入图片描述

注册信息在nacos中的内存状态

在这里插入图片描述

总结nacos的服务注册发现机制

  • nacos结构:
    • 角色2个: 服务端(nacos-server进程),客户端(spring cloud整合到web应用组件)
  • nacos功能:
    • 服务注册: 在微服务中,服务注册目的,是为了让别的服务发现,获取当前服务信息
    • 服务发现: 为了调用别的服务,从而在nacos进行信息的抓取

配置中心

应用场景

  • 在微服务开发过程中,yaml文件 json文件 properties文件,非常多的冗余重复的内容.不方便统一管理.
  • 例如: 开发环境连接的redis 110.99.88.77:8999.20多个服务,全部在开发环境指向这个redis.用了2天,运维提示服务器崩溃了. redis环境换了 111.99.88.77:8999.
  • 需求: 将重复的配置,提取到通用的管理平台-nacos

配置中心运行结构

在这里插入图片描述

远程配置:

1. 在本地进程添加config 依赖 和bootstrap依赖

<!--clint config nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--spring版本大于2.3.x,需要认为引入-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

2. 需要引入一个bootstrap.yaml文件

  • 上面的bootstrap依赖,就是为了让springboot启动的时候加载这个bootstrap.yaml文件的.
  • bootstrap.yaml 能够被springboot加载,并且先于 application.yaml文件加载的.
  • application.yaml启动进程的参数配置.
  • bootstrap.yaml收集环境信息的参数配置. 读取到远程文件配置内容,放回application.yaml使用.
    如果远程读的数据和application.yaml冲突的. application.yaml会覆盖远程读取的.
spring:
  profiles:
    #开启不同环境
    active: dev
---
spring:
  config:
    activate:
      on-profile: dev
      #告诉bootstrap 远程配置中心nacso的地址 和我们尧都区的配置文件(先读默认的)
  application:
    # 所有的application.name 都是远程名称
    name: csmall-cart 
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        #文件支持的类型 (默认properties   txt json yaml xml html)
        file-extension: yaml
        # 前缀,默认是服务名称,不想使用默认值可以自定义
        # prefix:
        #多环境允许的 命名空间的id
        namespace: 22233727-d5d1-4fea-9328-edf609a9afcb
        #持续发布汇总,保证灰度发布
        #group: 1.0
        #是否支持刷新,远程配置一旦修改,本地进程内存数据是否刷新,如果为true则不需要刷新
        refresh-enabled: true
        #读取指定文件 里面是List集合  
        shared-configs:
          - data-id: datasource.yaml
            group: 1.0
            refresh-enable: true
          - data-id: mybatis.yaml
            group: 1.0
            refresh-enable: true
          - data-id: nacos.yaml
            group: 1.0
            refresh-enable: true
---

这种配置方式,读取文件的逻辑
在这里插入图片描述

  • 通过bootstrap+nacosconfig配置,默认读取的文件格式
  • {spring.application.name}-{spring.profiles.active}.{file-extension}
  • 服务名称-环境名称.文件后缀扩展
  • 对于当前stock服务,应该在nacos中准备一个文件 csmall-stock-dev.yaml
  • 没有指定具体的命名空间,没有指定分组
    请添加图片描述
  • 填写具体的文件信息
    在这里插入图片描述

案例练习

使用:#读取指定的文件 shared-configs:

  • 同时读取远程一个配置了datasource的属性文件,datasource.yaml,
  • 同时读取远程一个配置了nacos注册信息的属性文件,
  • nacos.yaml同时读取远程mybatis配置,mybatis.yaml
    将公共配置文件中存在以上三个配置提取到配置列表
    请添加图片描述
  • datasource.yaml
    请添加图片描述
  • mybatis.yaml
    请添加图片描述
  • nacos.yaml请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面向Web开发人员的Linux实用入门(转)

从 web 开发的视角说一下在使用 Linux 时遇到的问题&#xff0c;主要是针对操作本身&#xff0c;因为指令在网上都可以查到&#xff0c;不会深入原理&#xff0c;但尽量实用。 基础认知 为什么使用 Linux 最初我使用 Linux 是因为我需要的应用在教程里只提供了 Linux 版本&a…

一、Dell服务器的iDRAC管理卡连接

Dell服务器的iDRAC管理卡图文教程 1、网线连接idrac口2、查看idrac地址3、匹配IP地址4、web登录idrac页面5、登录成功页面 带有集成戴尔远程访问控制器 &#xff08;idrac&#xff09;的系统具有默认用户名和密码&#xff0c;但您也可以使用安全密码对其进行配置。默认使用web浏…

【设计模式】简易俄罗斯转盘实现JAVA

大家好哇&#xff0c;我是梦辛工作室的灵&#xff0c;最近有些无聊&#xff0c;没得什么事情做&#xff0c;所以想再熟悉熟悉设计模式吧&#xff0c;然后就写了个俄罗斯转盘玩&#xff0c;还是老样子先看结果&#xff1a; 看上去还是不错的吧&#xff0c;最后那个只是打印&…

数学建模 插值算法

有问题 牛顿差值也有问题它们都有龙格现象&#xff0c;一般用分段插值。 插值预测要比灰色关联预测更加准确&#xff0c;灰色预测只有2次 拟合样本点要非常多&#xff0c;样本点少差值合适

Qt 桌面系统设计

文章目录 前言一、项目介绍二、界面布局三、按键图标四、桌面背景五、实现led功能总结 前言 这篇文章介绍 一个Qt 桌面系统的项目&#xff0c;大家可以在此基础上加以改进&#xff0c;实现更多的功能。 一、项目介绍 可以看到 这个桌面系统上分为两部分&#xff0c;左边是 三个…

在Linux上 USRP RIO 2944 使用 PCIe

支持的硬件 USRP-2900USRP-2901USRP-2920USRP-2921USRP-2922USRP-2930USRP-2932USRP-2940 40 MHzUSRP-2940 120 MHzUSRP-2942 40 MHzUSRP-2942 120 MHzUSRP-2943 40 MHzUSRP-2943 120 MHzUSRP-2944USRP-2945USRP-2950 40 MHzUSRP-2950 120 MHzUSRP-2952 40 MHzUSRP-2952 120 MH…

【Unity面试篇】Unity 面试题总结甄选 |算法相关 | ❤️持续更新❤️

前言 之前整理了一篇关于Unity面试题相关的所有知识点&#xff1a;2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全&#xff0c;面试题总结【全网最全&#xff0c;收藏一篇足够面试】为了方便大家可以重点复习某个模块&#xff0c;所以将各方面的知识点进行了拆分并更新整…

山西电力市场日前价格预测【2023-07-14】

日前价格预测 预测明日&#xff08;2023-07-14&#xff09;山西电力市场全天平均日前电价为315.29元/MWh。其中&#xff0c;最高日前价格为386.08元/MWh&#xff0c;预计出现在21: 45。最低日前电价为232.93元/MWh&#xff0c;预计出现在14: 45。 价差方向预测 1&#xff1a;实…

利用windows恶意软件获取windows主机shell

实验目的&#xff1a; 模拟黑客利用windows恶意软件获取windows主机shell权限的过程 熟悉操作使用的命令实验准备&#xff1a; kali 同网段的windows主机&#xff08;关闭防火墙&#xff09; msfvenom是一个Metasploit独立的有效负载生成器&#xff0c;也是msfpayload和msfenco…

【大数据之Hive】二十二、HQL语法优化之Join优化

主要控制优化使用哪种join算法。 1 Common Join Common Join是Hive中最稳定的join算法也是默认的join算法&#xff0c;其通过一个MapReduce Job完成一个join操作。Map端负责读取join操作所需表的数据&#xff0c;并按照关联字段进行分区&#xff0c;通过Shuffle&#xff0c;将…

【动手学深度学习】--01.线性回归

文章目录 线性回归1.原理1.1线性模型1.2衡量预估质量——平方损失1.3训练数据1.4参数学习1.5优化算法 2.从零开始实现线性回归2.1生成数据集2.2批量读取数据集——Mini-batch思想2.3初始化模型参数2.4定义模型2.5定义损失函数2.6定义优化算法2.7训练模型 3.借助深度学习框架实现…

关于nginx学习记录(一)

系列文章目录 第一章 Nginx 学习入门——Nginx的概述及安装 系列文章目录 一、Nginx 概述 二、安装步骤 1.下载pcre安装包,并放入linux中,进行解压: 2.pcre解压完成后,进入解压后的文件,执行./configure命令 3.在当前目录执行命令:make && make install 4.由于到…

【并发编程的艺术读书笔记】创建线程的四种方式

创建线程的四种方式 继承Thread类 public class MyThread extends Thread {Overridepublic void run() {System.out.println("MyThread...run...");}public static void main(String[] args) {// 创建MyThread对象MyThread t1 new MyThread() ;MyThread t2 new M…

神经网络模型在深度学习中的作用

神经网络模型是一种模拟人脑神经元之间连接和相互作用的数学模型。它由多个神经元&#xff08;节点&#xff09;以层次结构相互连接而成&#xff0c;每个神经元通过学习权重和偏置&#xff0c;根据输入数据产生相应的输出。 在深度学习中&#xff0c;神经网络模型被广泛应用于…

基于ZYNQ阵列涡流检测系统硬件设计(一)

为实现阵列涡流检测系统总体功能&#xff0c;需研制一套多通道信号采集硬件系统&#xff0c;以搭配 软件编程实现分时激励和分时采集。基于以上要求&#xff0c;本章介绍了阵列涡流检测系统的硬 件模块设计。 3.1 阵列涡流检测系统总体设计 阵列涡流检测系统需要利用 DA …

PADS Logic元件库创建的管脚如何快速复制

在绘制原器件封装的时候&#xff0c;如果对管脚一个一个去进行放置会影响效率&#xff0c;因此可以通过对管脚进行复制来实现快速放置管脚。 第一步&#xff1a;在元件界面点击添加端点图标&#xff0c;先进行一个管脚的放置&#xff0c;如图1所示 图1 放置管脚示意图 第二步&…

2.Vue3中Cesium地图初始化及地图控件配置

前言 本文中&#xff0c;我们主要介绍 Cesium 在 Vue 3运行环境的配置&#xff0c;以及 Cesium 实例中控件的显隐设置&#xff0c;本文是后续文章内容的基础&#xff0c;项目代码在此查看&#xff1b;通过本文&#xff0c;我们可以得到一个纯净的 cesium 项目&#xff0c;后续的…

ptrace修改进程数据

ptrace可以修改和读取一个进程的数据 long ptrace(enum __ptrace_request request,pid_t pid,void *addr,void *data); PTRACE_TRACEME, 本进程被其父进程所跟踪。其父进程应该希望跟踪子进程 PTRACE_PEEKTEXT, 从内存地址中读取一个字节&#xff0c;内存地址由addr给出 PT…

基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能

系列文章目录 git常用命令大锦囊 文章目录 系列文章目录前言一、gitea安装1. 安装docker compose2. 安装gitea 二、给gitea配置https访问三、gitea配置ssh方式拉取代码四、给gitea配置可发送的邮箱五、gitea注册开启邮箱验证和邮箱通知六、限制所有仓库只有登录后才能访问七、…

Windows git bash输入vim报错,不能使用vim-plug插件管理器

Windows系统下的git bash在安装时自带了默认的vim&#xff0c;我自己也下了个gvim&#xff0c;并且配置了.vimrc&#xff0c;其中使用了vim-plug管理nerdtree这些插件。但是在bash中vim <file>时&#xff0c;就会蹦出来几行报错&#xff1a; 处理 /c/Users/<username…