首页 > 其他分享 >Nacos基本配置

Nacos基本配置

时间:2023-07-13 16:56:36浏览次数:37  
标签:基本 服务 配置 Nacos nacos yaml 注册

Nacos官方文档

为什么需要服务注册中心?

微服务时代的服务管理
在微服务时代,我们所有的服务都被劲量拆分成最小的粒度,原先所有的服务都在混在1个server里,现在就被按照功能或者对象拆分成N个服务模块,这样做的好处是深度解耦,1个模块只负责自己的事情就好,能够实现快速的迭代更新。坏处就是服务的管理和控制变得异常的复杂和繁琐,人工维护难度变大。还有排查问题和性能变差(服务调用时的网络开销)文章来源地址:https://www.yii666.com/blog/390499.html

什么是注册中心?

注册中心的作用一句话概括就是存放和调度服务,实现服务和注册中心,服务和服务之间的相互通信。注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。

如果没有注册中心?会怎样

 在不用服务注册之前,怎么去维护这种复制的关系网络呢?答案就是:写死!。
  1. 将其他模块的ip和端口写死在自己的配置文件里,甚至写死在代码里,每次要去新增或者移除1个服务的实例的时候,就得去通知其他所有相关联的服务去修改。
  2. 随之而来的就是各个项目的配置文件的反复更新、每隔一段时间大规模的ip修改和机器裁撤,非常的痛苦。

而有了注册中心之后,每个服务在调用别人的时候只需要服务的名称就好,调用时会通过注册中心根据服务编码进行具体服务地址进行调用。

服务注册中心的作用就是【服务的注册】和【服务的发现】

  • 服务注册,就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去(比如: zookeeper\consul)。
  • 服务发现,就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。

服务发现是怎么回事?

  1. 微服务启动的时候将service_name,IP,port,status发送到Nacos服务注册中心,Nacos保存这些数据。
  2. 消费者本地缓存服务信息,并且定时同步,所以就算Nacos宕机了也不怕不能调用
  3. 服务提供者每5秒发送心跳给服务发现组件,当一段时间没收到心态,服务发现组件标记服务状态为宕机。15秒无心跳则认为实例不健康,30秒健康检查失败则剔除实例。
  4. 这样的好处:
    1. 不用每次都请求服务发现组件,提升了性能
    2. 服务发现组件崩溃,不影响正常调用

整合Nacos 服务中心

 nacos 下载地址 :https://github.com/alibaba/nacos/releases

 nacos 搭建参考文档地址:https://nacos.io/zh-cn/docs/quick-start.html

下载那一个包?如何解决兼容性问题?技巧如下:
  打开idea进入pom.xml 文件,打开spring-cloud-alibaba-dependencies 找到Nacos-client的版本
**加依赖**
  <!--nacos 注册中心-->
  <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>
**写配置**
spring:
  application:
    name: shopping-account-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
**写注解(开发)**
//早期版本需要在启动类上加本注解,现在已经不是必须的了
@EnableDiscoveryClient
**根据service-name获取在nacos中注册的实例信息:**

DiscoveryClient 可以操作Nacos元数据
DiscoveryClient由SpringCloud提供,不只是可以查询Nacos。
元数据有什么用?
  列如:有服务器A版本为V1.0,有服务器B版本为V1.0,有服务器C版本为V2.0,有服务器D版本为V2.0,可以做到V1.0的服务只调用V1.0,V2.0只调用V2.0。

服务发现的领域模型

  1.  Namespace 命名空间(实现隔离、默认是public) 对应不同的环境(dev、prot、test)
  2.  group 分组对应不同的节点(不同的微服务分在在同一个分组)
  3.  service 服务 对应不同的集群服务
  4.  cluster:(集群-对应服务器)对指定微服务的一个虚拟划分,默认DEFAULT
  5.  instance:微服务实列

为什么要实现配置管理?

不同的环境不同的配置

如:dev和prod环境的数据库地址和密码肯定不一样的

配置属性动态刷新

如:在不重启服务的情况下修改配置项目并且生效

配置动态刷新

动态刷新的几种方式
  方式一:yaml中开启 refresh-enabled=true 时(默认开启),通过applicationContext.getEnvironment.getProperty 直接获取
  方式二:standalone使用,@NacosValue获取最新值nacos配置信息需要写在配置类上
  方式三:结合springcloud ,@Value获取最新值一定要加@RefreshScope注解,配置文件中配置refresh: true

Spring boot 启动或者更改配置后控制台打印配置信息
# 日志级别,可以指定到具体类
logging:
  level:
    # 3、在任意格式的配置文件中将该包路径的日志设置为 ERROR 或者 WARN 级别即可
    # Nacos 注册中心客户端心跳日志禁用 get changedGroupKeys:[] 刷屏
    com:
      alibaba:
        cloud:
          nacos: DEBUG

配置共享

其他配置方式中可以查看

配置优先级

其他配置方式中可以查看

数据持久化

服务发现组件(所有配置文件存放的位置)
  数据持久化默认位置:~/nacos/naming
配置服务器
  配置数据:$NACOS_HOME/data/derby-data
    在nacos控制台修改的配置都在此数据库中做持久化
    derby-data:不适合生产环境配置,内嵌(只能单机)数据库不能做高可用。
    需要停止nacos才能查看。
  快照:
    保存位置:~/nacos/config
    里面主要是在nacos中设置的内容,快照可以提升性能以及做容灾

加依赖

<!--nacos 注册中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

写配置

spring:
  cloud:
    nacos:
      discovery:
        #Nacos的地址,如果是集群的话使用,号隔开  如:localhost1,localhost2
        server-addr: 127.0.0.1:8848
        file-extension: yaml
  application:
    name: shopping-trade-service
  profiles:
    #以什么结尾的文件 shopping-trade-service-dev.yml
    active: dev

#读取Nacos上的shopping-trade-service-dev.yml配置文件

 

写注解(开发)

其他配置方式

bootstrap.xml文件

# bootstrap 会在加载application.yml之前先连接nacos,获取远程的配置,然后再进行初始化
# 因此bootstrap要配置的重点就是
# 1. nacos的地址: 获取配置的入口
# 2. application的name: 根据SpringCloud的约定,是根据name-{profile}.yaml去读取远程配置文件的
spring:
  application:
    name: snapex-account-service
  cloud:
    nacos:
      config:
        #NACOS_HOST 是环境变量
        #默认配置会默认自动刷新
        #当配置了环境变量时使用环境变量,如果没有配置时使用:后面的地址
        server-addr: ${NACOS_HOST:192.168.199.57:8848}
        #命名空间,和Nacos控制台的命名空间一致
        #此处的命名空间指的是Nacos控制台创建命名空间时命名空间ID
        namespace: ${NACOS_NAMESPACE:dev}
        file-extension: yaml
        group: DEFAULT_GROUP
        extension-configs:
          #配置中心配置的公共配置文件,yml后缀不能少,只支持yaml/properties
          #越靠后,优先级越高,优先级 database.yaml > commons.yaml
          - data-id: commons.yaml
            #commons.yaml所在的group
            group: DEFAULT_GROUP
            #是否动态的刷新
            refresh: true
          - data-id: database.yaml
            group: DEFAULT_GROUP
            #是否动态的刷新
            refresh: true
      discovery:
        server-addr: ${NACOS_HOST:192.168.199.57:8848}
        namespace: ${NACOS_NAMESPACE:dev2-dzq}
        group: DEFAULT_GROUP

application.xml文件

spring:
  profiles:
    #以什么结尾的文件 shopping-trade-service-dev.yml
    active: ${SPRING_PROFILES_ACTIVE:dev}

不分理论参考: 微服务:注册中心的作用 (yii666.com)

标签:基本,服务,配置,Nacos,nacos,yaml,注册
From: https://www.cnblogs.com/Faith-zhang/p/17551427.html

相关文章

  • minio 配置https访问
    官网文档:https://docs.min.io/docs/how-to-secure-access-to-minio-server-with-tls.html在${HOME}.minio/certs文件夹下1、生成私钥opensslgenrsa-outprivate.key20482、生成自签名证书创建一个以openssl.conf以下内容命名的文件。设置IP.1和/或DNS.1指向正确的IP/DNS......
  • nginx安装及配置
    ......
  • dhtmlx基本使用demo,vue
    main.js  引入样式import'dhtmlx-gantt/codebase/dhtmlxgantt.css'父组件:gangtData,数据<ganttChartv-if="value8":gangtData="gangtData"/> 子组件:<template><divstyle="height:62vh;"ref="ganttContai......
  • jmeter基本使用
    性能测试:验证在各种性能负载场景下,系统的表现是否符合预期。 一个性能测试场景,Jmeter称之为testplan,即测试计划Jmeter的测试计划对应性能测试的一个场景,也就是一个测试用例。我们应该首先准备好性能测试用例,然后用Jmeter来创建对应的测试计划。 性能测试用例,总的......
  • nginx部署 vue3 同时 配置接口代理(详细)
    Vue项目配置.env文件在项目根目录下创建文件夹(.env.production)##.env.production生产环境配置VUE_APP_SYS_URL=sysapi##nginx需要用的的代理表示VUE_APP_MODE=product##模式baseUrl使用VUE_APP_SYS_URL变量代替Nginx下载部署和配置api代理Nginx下载......
  • Archlinux安装和配置fcitx5
    本文基于archlinux系统,搭配dwm窗口管理器进行配置fcitx5安装一些基础包的安装,关于fcitx5框架我们只需要安装fcitx5-im包就可以,这个包实际上就包含了:fcitx5fcitx5-configtoolfcitx5-gtkfcitx5-qt除此之外再安装中文插件和基本的主题sudopacman-Sfcitx5-imfcitx5-chin......
  • java项目配置druid监控页面
    druid监控页面如图: 满足条件:1.项目引入了druid相关的jar包 2.项目加入druid相关的配置#####druid监控#####WebStatFilter配置spring.datasource.druid.web-stat-filter.enabled=truespring.datasource.druid.web-stat-filter.url-pattern=/*spring.datasource.......
  • Asp.net core中的配置提供程序和读取
    ASP.NETCore中的应用程序配置是使用一个或多个配置提供程序执行的。配置提供程序使用各种配置源从键值对读取配置数据:设置文件,例如appsettings.json环境变量AzureKeyVaultAzure应用程序配置命令行参数已安装或已创建的自定义提供程序目录文件内存中的.NET对象......
  • 解决redis yaml配置的具体操作步骤
    实现RedisYAML配置概述在本文中,我们将介绍如何实现RedisYAML配置。Redis是一个开源的内存数据结构存储系统,常用于缓存和数据库。通过使用YAML配置文件,我们可以更方便地管理Redis的配置信息。步骤步骤操作第一步创建YAML配置文件第二步导入YAML解......
  • 交换机配置解读
    [TJZL-E0506-34U-S5731-MGTDSW]displayinterfaceGigabitEthernet1/0/28显示GigabitEthernet1/0/28接口的配置信息GigabitEthernet1/0/28currentstate:UP接口GigabitEthernet1/0/28的当前状态为UPLineprotocolcurrentstate:UP接口的线路协议当前状态为UPDescr......