SpringCloud之Nacos

news2024/12/26 11:34:08

Nacos

    • 1. Nacos的概念
    • 2. Nacos的作用
    • 3. Nacos的下载与安装
    • 4. Nacos Client 服务端的搭建
    • 5. Nacos 的namespace 和 group
    • 6. 配置中心
    • 7. 注意点

1. Nacos的概念


在这里插入图片描述

  • Nocos 是 SpringCloudAlibaba架构中最重要的组件
  • Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务挂你平台,提供注册中心、配置中心和动态DNS服务三大功能。能够无缝对接SpringCloudSpringDubbo等等流行框架
  • nacos 支持 a (高可用)p (分区容错)和c(一致性),p的切换默认为ap,eureka 仅支持ap,zookeeper仅支持cp
  • NacosEureka 功能对比
功能模块nacoseureka功能说明
注册中心服务治理,服务中心化注册
配置中心×eureka需要配置SpringCloud Config实现
配置动态刷新×nacos 通过 netty 保持tcp长链接进行推送,eureka需要配合mq实现配置动态刷新
可用区az对服务集群划分不同区域,实现区域隔离,并提供灾难级自动切换
分组×nacos 根据不同的业务、环境进行分组管理(namespace.group)
元数据提供服务标签数据(环境、服务标识)
权重×nacos 提供权重设置,调整承载流量压力
健康检查nacos 提供服务端或者客户端发起的健康监测,eureka 是有客户端发起心跳
负载均衡均提供负载均衡策略,eureka 采用 ribbon

2. Nacos的作用


在这里插入图片描述

  • 服务注册发现和服务健康监测
    Nacos支持基于 DNS 和基于 RPC 的服务发现,服务端可以通过 SDK 或者 Api 进行服务注册,相应的服务消费者可以使用 DNS 或者 HTTP 查找的方式获取服务列表。Nacos同时提供对服务的实时健康检查,阻止想不健康的主机或发送请求,与 Eureka 类似 Nacos 也有友好的控制台界面。
  • 动态 DNS 服务
    支持权重路由,更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务。
  • 动态配置服务
    接触过 SpringCloud 应该对 config 有所了解,那么配置中心也就很好理解,Nacos 支持动态的配置管理,将服务的配置信息分环境分类别外部管理,并且支持热更新。不过与 Config 不同,Nacod 的配置信息存储于数据库中,支持配置信息的监听和版本回滚。
  • 服务及元数据管理
    Nacos 能让你从微服务平台建设的角度管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA(服务等级协议)以及最首要的 metrics 统计数据(默认不开启暴露需要修改配置)。可以搭建Prometheus采集 Nacos metrics 数据也可以搭建grafana 图形化展示 metrics` 数据
    在这里插入图片描述

3. Nacos的下载与安装


  1. 下载地址:nacos: nacos

    在这里插入图片描述

    第一个为了Linux版本 第二个为Windows版本 三四对应源码包

  2. 下载并解压后可以看到以下目录结构:

    在这里插入图片描述

  3. conf 中存放的是配置文件及服务启动所需的数据库文件

    在这里插入图片描述

    nacos 默认使用的数据库为内嵌的cmdb,我们也可以创建本地数据库并修改配置文件指向本地数据库即可(推荐),对 nacos 集群化有帮助。

  4. 基本命令(单机模式下启动)
    Linux:

    • 启动命令:sh startup.sh -m standalone
    • 关闭命令:sh shutdown.sh

    Windows:

    • 启动命令:进入nacos安装路径下的bin目录下(例如:F:\nacos\bin),使用cmd,startup.cmd -m standalone
    • 关闭命令:shutdown.cmd
  5. 启动后 访问 http://localhost:8848/nacos/#/login
    在这里插入图片描述

    默认的账号和密码均是nacos

4. Nacos Client 服务端的搭建


  1. 引入依赖

    <dependency>
     	<groupId>com.alibaba.cloud</groupId> 
    	<artifactId>spring‐cloud‐alibaba‐nacos‐discovery</artifactId> 
    </dependency> 
    
  2. 启动类写注解(也可以不写)@EnableDiscoveryClient

  3. 创建自己的命名空间并配置
    在这里插入图片描述
    在这里插入图片描述

  4. 写配置文件:

    spring:
      cloud:
        nacos:
          server-addr: http://localhost:8848
          config:
            namespace: qinj
    
  5. 以上三步做完启动项目如何检查是否注册成功呢?

    • 服务启动后可以在nacos管理界面查看注册成功的服务。
      在这里插入图片描述
  • 可以通过发现客户端搜索实例名的形式查看服务是否注册成功,并查看注册具体信息。
    在这里插入图片描述
    在这里插入图片描述

5. Nacos 的namespace 和 group


  1. namespace:相当于环境,开发环境、测试环境、生产环境,每个空间里面的配置是独立的
    默认的namespace是 public , namespace 可以进行资源隔离
  2. group : 相当于项目
    在这里插入图片描述在这里插入图片描述

6. 配置中心


  1. 引入配置中心为了什么
    • 配置属性的动态刷新
    • 配置文件的集中管理
  2. 接入配置中心
    • 引入依赖
      <dependency> 
      	<groupId>com.alibaba.cloud</groupId> 
      	<artifactId>spring‐cloud‐alibaba‐nacos‐config</artifactId> 
      </dependency>
      
    • 编写一个bootstrap.yml 配置文件
      spring:
        application:
          name: reggie # 表示当前微服务需要向配置中心
        profiles:
          active: dev # 表示我需要向配置中心索要reggie的开发环境的配置
        cloud:
          nacos:
            discovery:
              server-addr: http://localhost:8848/  # nacos服务地址,表示微服务怎么去找我的配置中心
              namespace: qinj
              group: DEFAULT_GROUP
            config:
              server-addr: http://localhost:8848/
              namespace: qinj
              group: DEFAULT_GROUP
              file-extension: yml
      

7. 注意点


  1. 如果我们需要不停机改变我们的生产环境的某个值(例如文件保存地址)来控制业务逻辑。我们需要在对应的 Controller 上添加@RefreshScope进行动态刷新
  2. 如果存在部分配置为开发环境、生产环境、测试环境等不同环境共通,我们只需要在配置中心创建 例如reggie.yml的配置文件。配置的优先级 精准配置 会覆盖 与通用配置 相同的配置,然后再和通用配置互补。
  3. 不同服务存在相同的配置:
    • 通过spring.cloud.nacos.config.shared-config,配置文件中增加: # 各个微服务共享的配置,注意越排到后面的公共配置yml优先级越高
    shared-config[0]:
    	data-id: common.yml # 配置文件名 - Data Id
    	group: DEFAULT_GROUP # 默认为DEFAULT_GROUP
    	refresh: false # 是否动态刷新,默认为false
    
    • 通过 spring.cloud.nacos.config.extension-configs(优先级高于shared-config)

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

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

相关文章

pytorch搭建手写数字识别LeNet-5网络,并用tensorRT部署

pytorch搭建手写数字识别LeNet-5网络&#xff0c;并用tensorRT部署前言1、pytorch 搭建LeNet-5&#xff0c;并转为ONNX格式1.1 LeNet-5网络介绍1.2 ONNX(Open Neural Network Exchange)介绍1.3 pytorch 搭建 LeNet5网络2、将onnx转为tensorRT2.1 tensorRT 介绍2.1 onnx 转为 te…

C++面向对象(下)

文章目录前言1.再谈构造函数1.初始化列表2.explicit关键字2. static成员1.概念3.友元1.概念2.友元函数3.友元类4. 内部类5.匿名对象6.编译器优化7.总结前言 本文是主要是将之前关于C面向对象中的一些没有归纳到的零星知识点进行补充&#xff0c;同时对C中的面向对象简单收个尾…

如何在ONLYOFFICE v7.3中使用VSTACK和HSTACK公式

大家好&#xff0c;今天来给大家讲解一下&#xff0c;怎样在ONLYOFFICE v7.3中使用VSTACK和HSTACK公式&#xff0c; 这两个新公式也是ONLYOFFICE7.3版本更新后新的计算公式&#xff0c;请大家详细阅读本文。 ONLYOFFICE ONLYOFFICE文档是一款免费开源在线办公软件&#xff0c…

实验室装修|SICOLAB实验室装修方案

实验室装修不外乎通风与洁净的设计为重中之重&#xff0c;以下由SICOLAB介绍分享。一、实验室通风系统主要包含送风系统和排风系统两部分。&#xff08;1&#xff09;送风系统的设计需要考虑以下几个方面&#xff1a;1.1空气质量要求&#xff1a;实验室内的空气需要保持一定的洁…

生物素标记试剂1869922-24-6,Alkyne-PEG3-Biotin PC,炔烃PEG3生物素PC

1、试剂基团反应特点&#xff08;Reagent group reaction characteristics&#xff09;&#xff1a;PC alkyne-PEG3-Biotin含一个炔烃和一个 PEG 链接的可光裂解生物素基团。含 3 个单元 PEG 的 ADC linker&#xff0c;生物素本身是个游离的小分子&#xff0c;在生物实验中常常…

【汽车雷达通往自动驾驶的关键技术】

本文编辑&#xff1a;调皮哥的小助理 现代汽车雷达装置比手机还小&#xff0c;能探测前方、后方或侧方的盲点位置是否存在障碍物&#xff0c;但这还不百分之百实现全自动驾驶的。传统的汽车雷达分辨率都不高&#xff0c;只能“看到”一团东西&#xff0c;可以检测到汽车周围存在…

掌握使用yum为CentOS系统安装软件掌握使用apt为Ubuntu安装软件(扩展)

1.掌握使用yum为CentOS系统安装软件2.掌握使用apt为Ubuntu安装软件&#xff08;扩展&#xff09;1、Linux系统的应用商店 操作系统安装软件有许多种方式&#xff0c;一般分为&#xff1a; •下载安装包自行安装•如win系统使用exe文件、msi文件等•如mac系统使用dmg文件、pkg文…

容联七陌:ChatGPT大模型能力为智能客服带来新方向

科技云报道原创。 近几个月来&#xff0c;大众对ChatGPT预期的持续走高&#xff0c;也影响到了智能客服领域公司的命运。 一方面&#xff0c;ChatGPT的出现为智能客服场景带来了更加“智能”的可能性&#xff1b;但另一方面&#xff0c;有人认为ChatGPT完全可以替代现有的智能…

数值方法笔记3:线性和非线性方程组求解

前置知识1&#xff1a;矩阵范数前置知识2&#xff1a;舒尔补前置知识3&#xff1a;可约矩阵前置知识4&#xff1a;谱半径1.【线性方程组】直接求解&#xff1a;高斯消元法(LULULU分解)、LDVLDVLDV分解、LDLTLDL^TLDLT分解、UDUTUDU^TUDUT分解1.1 高斯消元法(LULULU分解)1.2 LDV…

公司缺人面了8个测试员,他们都有一个相同的缺点.....

年后公司缺人&#xff0c;面了不少测试&#xff0c;结果竟然没有一个合适的。 一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。 看简历很多都是3年工作经验&#xff0c;但面…

什么是深拷贝和浅拷贝?以及怎么实现深拷贝和浅拷贝?

拷贝浅是创建一个新对象&#xff0c;这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型&#xff0c;拷贝的就是基本类型的值&#xff0c;如果属性是引用类型&#xff0c;拷贝的就是内存地址&#xff0c;所以如果其中一个对象改变了这个地址&#xff0c;就会影响到…

Excel操作-Apache-POI

Excel操作-Apache-POI一、场景需求将一些数据库信息导出为Excel表格将Excel表格数据导入数据库大量的数据的导入导出操作解决方案常用的解决方案&#xff1a;Apache POI与阿里巴巴easyExcelApache-POI介绍Apache-POI是基于office open XML标准&#xff08;OOXML&#xff09;和M…

合同审核机器人,提高合同审核效率,规避企业损失

官方网址&#xff1a;www.hanyunintel.com 在合同审核中面临的问题和挑战&#xff1a; 一、人工合同审核风险高&#xff1a; 人工合同审核依赖审核人员业务素养、精神状态、工作量、体力、工作态度及责任心&#xff0c;难免存在人工审核合同不严谨的情况&#xff0c;如果不能及…

【C++提高编程】C++全栈体系(二十一)

C提高编程 第三章 STL - 常用容器 三、deque容器 1. deque容器基本概念 功能&#xff1a; 双端数组&#xff0c;可以对头端进行插入删除操作 deque与vector区别&#xff1a; vector对于头部的插入删除效率低&#xff0c;数据量越大&#xff0c;效率越低deque相对而言&am…

简洁易用的记账小程序——微点记账

背景 由于每个月的信用卡账单太过吓人&#xff0c;记性也不是特别的好&#xff0c;加上微信支付宝账单中有些明细不是很明确。比如在京东花销的明细不会记录用户购买了什么&#xff0c;只会记录那个通道支出的。所以&#xff0c;才会有了想自己开发一款记账小程序&#xff0c;…

面试常问-Alpha测试和Beta测试

Alpha测试 Alpha测试是一种验收测试&#xff0c;在识别典型用户可能执行的任务并对其进行测试之前&#xff0c;执行该测试是为了识别所有可能的问题和错误。 尽可能简单地说&#xff0c;这种测试之所以被称为alpha&#xff0c;只是因为它是在软件开发的早期、接近开发结束时和…

使用loading动画让你的条件渲染页面更高级

前言在我们做项目的使用常常会使用条件渲染去有选择的给用户展示相关页面&#xff0c;如果渲染的数据或场景比较多比较复杂&#xff0c;那么往往需要3、4s的时间去完成&#xff0c;用户点击了之后就会陷入3、4s的空白期&#xff0c;并且这段时间屏幕是处于一种”未响应“的状态…

【欧拉筛法】洛谷 P3383 线性筛素数

3383. 线性筛素数 文章目录题目描述输入格式&#xff1a;输出格式&#xff1a;数据范围输入样例输出样例方法一&#xff1a;埃氏筛法解题思路代码复杂度分析&#xff1a;方法二&#xff1a;欧拉筛法解题思路代码复杂度分析&#xff1a;两种方法对比埃氏筛法欧拉筛法题目描述 给…

Jetpack管理生命周期——Lifecycle

Android Jetpack 对于任何一个产品来说&#xff0c;我们开发中都会面对哪些问题&#xff1f;如&#xff1a;产品交互、用户体验、代码结构、数据获取、数据存储、网络优化、任务调度等等&#xff0c;虽然在现在的阶段这些问题已经有了很好的解决和优化&#xff0c;也有很多大神…