• 5.Nacos


    什么是Nacos

    一个更易于构建云原生应用的动态服务发现、配置管理和服务管理的平台。注册中心+配置中的组合,支持CP和AP两种模式 默认AP。

    安装并运行Nacos

    从官网下载Nacos并运行,进入bin文件夹通过startup.cmd -m standalone命令单机(如果不单机启动默认是集群,可能会报错)启动,启动成功后访问http://localhost:8848/nacos/#/login,账号密码都是nacos
    在这里插入图片描述

    Nacos作为服务注册中心

    1.父pom文件中指定Spring Cloud Alibaba的版本

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.0.1.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.子pom引入Nacos的依赖

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4

    3.yml文件添加Nacos的配置

    server.port=8081
    spring.application.name=nacos-provider
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 
    management.endpoints.web.exposure.include=*
    
    • 1
    • 2
    • 3
    • 4

    4.主启动类添加注解@EnableDiscoveryClient
    5.注册成功后Nacos可以看到服务
    在这里插入图片描述

    Nacos是支持负载均衡的

    可以看到Nacos里面添加了ribbon,而ribbon是支持负载均衡的,可以使用RestTemplate进行访问http://服务名/接口地址
    在这里插入图片描述

    Nacos作为配置中心

    Nocos和SpringCloud Config一样,项目启动的时候要先保证从配置中心拉取配置,拉取配置后项目才能正常启动。
    在Spring Boot中bootstrap.yml优先于application.yml
    1.添加依赖

    <dependency>
       <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.主启动类添加注解@EnableDiscoveryClient
    3.添加bootstrap.yml

    server:
      port: 3377
    spring:
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #Nacos作为服务注册中心
          config:
            server-addr: localhost:8848 #Nacos作为配置中心
            file-extension: yaml #指定yaml格式的配置
      application:
        name: nacos-config-client
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4.添加application.yml

    spring:
      profiles:
        active: dev
    
    • 1
    • 2
    • 3

    5.在Nacos中进行配置文件配置
    在这里插入图片描述
    在 Nacos Spring Cloud 中,dataId 的完整格式如下:
    ${prefix}-${spring.profiles.active}.${file-extension}
    prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
    spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}
    file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
    所以我这里的Data ID为:nacos-config-client-dev.yaml
    在这里插入图片描述
    6.Congroller添加注解@RefreshScope开启配置自动刷新功能,不需要重启服务,只要修改配置 服务可以自动读取修改后的值。最后启动 通过接口读取config.info
    在这里插入图片描述

    Namespace、Group、Date ID三者的关系

    Namespace(默认:public)>Group(默认:Defualut_Group)>Date Id
    以上三者加起来才能找到对应的配置文件,例如Date ID完全一样 但是分组或命名空间可以不同。如果需要知道分组或者命名空间:

    # 指定分组
    spring.cloud.nacos.config.group=DEVELOP_GROUP
    # 指定命名空间
    spring.cloud.nacos.config.namespace=publice
    
    • 1
    • 2
    • 3
    • 4

    Nacos集群和配置持久化

    Nacos支持三种部署模式
    1.单机模式 - 用于测试和单机使用
    2.集群模式 - 用于生产环境,确保高可用。
    3.多集群模式 - 用于多数据中心场景。

    默认的Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySql的存储。

    Nacos持久化配置切换

    Nacos中使用了内嵌数据库(derby)

    Windows下Nacos嵌入式数据库derby到mysql切换配置步骤:
    1.nacos-server-2.0.2\nacos\conf找到nacos-mysql.sql脚本文件,创建nacos需要的数据库
    2.nacos-server-2.0.2\nacos\conf找到application.properties配置文件添加mysql配置

    spring.datasource.platform=mysql
    
    db.num=1
    db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.重启Nacos

    Linux版Nacos+MySql构建生产环境配置

    官网推荐如图,中间的一层可以使用Nginx做负载
    在这里插入图片描述
    1下载Linux版本Nacos解压安装

    // 下载
    wget https://github.com/alibaba/nacos/releases/download/2.1.0/nacos-server-2.1.0.tar.gz
    // 解压
    tar -zxvf nacos-server-2.1.0.tar.gz
    
    • 1
    • 2
    • 3
    • 4

    2.在mysql创建数据库,将/nacos/conf/nacos-mysql.sql中的脚本执行,创建nacos需要的数据库表
    3.修改/nacos/conf/application.properties配置文件添加mysql配置

    spring.datasource.platform=mysql
    
    db.num=1
    db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.复制/nacos/conf/cluster.conf.examplecluster.conf并进行编辑用来整理集群IP和端口,以下IP必须为真实网卡IP,也就是用hostname -i显示的IP。下面的内容每个Nacos实例都需要配置。如果是本地启动三个实例,端口在nacos\conf\application.properties中修改

    127.168.0.1:8848
    127.168.0.2:8848
    127.168.0.3:8848
    
    • 1
    • 2
    • 3

    5.启动Nacos sh startup.sh
    6.Nginx 配置做转发和负载

  • 相关阅读:
    Linux下线程间通讯---读写锁和条件变量
    GZ038 物联网应用开发赛题第7套
    使用 GPU 进行 Lightmap 烘焙 - 简单 demo
    Pycharm中安装pytorch
    Vue中的动态组件和缓存组件
    SPA项目开发之登录注册
    Nginx实现高并发原理是什么?该考虑如何优化?
    7_画图常用代码
    上传镜像到 docker hub 中
    Java并发总结
  • 原文地址:https://blog.csdn.net/qq_38083545/article/details/125461546