• Nacos作为注册中心和配置中心的使用总结


    目录

    前言

    一、Nacos是什么?

    二、使用步骤

    1.安装Nacos服务

    2.启动Nacos

    3.为Nacos配置mysql持久化,可选

    4.引入依赖

    5.添加配置

    6.添加注解

    7.新建Nacos配置

     8.启动应用

    总结


    前言

    在我们开发项目的过程中,我们往往需要使用注册中心和配置中心来帮我们更好的完成微服务的搭建。


    一、Nacos是什么?

    服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。

    二、使用步骤

    1.安装Nacos服务

    下面我以在docker中安装nacos为例,首先从镜像仓库拉取nacos镜像,使用以下命令:

    docker pull 镜像名:版本号					# 拉取指定版本镜像

    2.启动Nacos

    docker run -d --name nacos -e JVM_XMS=256m -e JVM_XMX=512m -e MODE=standalone  --restart=always -p 8848:8848 nacos/nacos-server:1.4.1 

    3.为Nacos配置mysql持久化,可选

    首先启动nacos后,使用以下命令进入nacos镜像内部

    1. 进入nacos镜像内部
    2. docker exec -it nacos /bin/bash
    3. 进入nacos的配置文件夹conf
    4. cd conf
    5. 编辑application.properties配置文件
    6. vi application.properties
    7. 修改配置如下:
    8. ### set mysql with nacos
    9. spring.datasource.platform=mysql
    10. ### 持久化的数据库数量,有几个就添加几个db.url
    11. db.num=${MYSQL_DATABASE_NUM:1}
    12. ### 持久化的数据库连接配置
    13. db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:192.168.56.10}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos-config}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC}
    14. ### 此处填自己的数据库用户名
    15. db.user=${MYSQL_SERVICE_USER:root}
    16. ### 此处填自己的数据库密码
    17. db.password=${MYSQL_SERVICE_PASSWORD:479368}

    4.引入依赖

    代码如下(示例):

    1. com.alibaba.cloud
    2. spring-cloud-starter-alibaba-nacos-config
    3. com.alibaba.cloud
    4. spring-cloud-starter-alibaba-nacos-discovery

    5.添加配置

    新建bootstrap.yaml配置文件,代码如下(示例):

    1. spring:
    2. application:
    3. name: member
    4. cloud:
    5. nacos:
    6. discovery:
    7. server-addr: 192.168.56.10:8848
    8. namespace: b684de60-213e-45ca-a8ff-40b567e96ad5 # 此处要使用命名空间的id
    9. config:
    10. server-addr: 192.168.56.10:8848
    11. file-extension: yaml
    12. refresh-enabled: true
    13. namespace: b684de60-213e-45ca-a8ff-40b567e96ad5
    14. group: member
    15. name: member # 此处加载默认主配置
    16. extension-configs: # 此处加载分离的扩展配置,例如抽取数据库、mybats配置等
    17. - data-id: datasource.yaml
    18. group: member
    19. refresh: true
    20. - data-id: mybatis.yaml
    21. group: member
    22. refresh: true

    6.添加注解

    1. 在主程序上添加注解@EnableDiscoveryClient开启注册发现功能
    2. 在主程序上添加注解@RefreshScope开启动态刷新配置功能

    7.新建Nacos配置

    在Nacos的控制台新建dev、prod、test等三个以环境来隔离的命名空间,同时以分组作为每个服务空间进行隔离,也就是一个服务一个分组,每个分组管理自己的配置,同时在dev命名空间下新建主配置、数据源配置、mybatis配置,注意此处的分组为member,参考如下:


     

     8.启动应用

    如果没有报错,同时控制台有输出相应的Nacos的注册和读取日志信息则说明配置生效。

    总结

    只要使用了Nacos作为配置中心,一定不要忘记在主程序上加 @RefreshScope 注解,否则你就是跟自己过不去,折磨自己,不要问我是怎么知道的。

    1. systemctl start docker # 启动docker
    2. systemctl stop docker # 关闭docker
    3. systemctl restart docker # 重启docker
    4. systemctl status docker # 查看docker状态
    5. systemctl enable docker # 开机启动docker
    6. docker info # 查看docker概要信息
    7. docker pull 容器名:版本号 # 拉取镜像
    8. docker images # 查看安装的镜像
    9. docker ps -a # 查看运行中的镜像
    10. docker start 镜像名/containerid # 启动关闭状态的镜像
    11. docker stop 镜像名/containerid # 关闭运行中的镜像
    12. docker restart 镜像名/containerid # 重启镜像
    13. docker rm 镜像名 # 将关闭状态的镜像移除运行区
    14. docker rmi 镜像名 # 将镜像从docker中删除
    15. docker container prune # 从运行区移除所有关闭的容镜像
    16. docker exec -it 镜像名 /bin/bash # 进入运行中镜像内部
    17. docker logs 镜像名 # 查看运行中指定镜像的日志
    18. docker update 容器名 --restart=always # docker设置开机启动容器镜像
    19. docker info # 查看docker配置
    20. docker tag 镜像id 名称 # 修改未运行的镜像名
    21. docker rename 旧容器名 新容器名 # 修改运行中的镜像名
    22. docker run -d --name 容器别名(随便取) -p 端口:端口 镜像名称(image) #运行镜像
    23. free -h 查看内存使用情况

  • 相关阅读:
    RK3588 利用gpio与extcon实现热插拔检测系统层发出广播(一)
    npm包【详解】(内含npm包的开发、发布、安装、更新、搜索、卸载、查看、版本号更新规则、package.json详解等)
    UDP丢包替代:用PCAP实现C/C++以太网SDR吞吐
    Lambda表达式的简化
    【教3妹学算法-每日1题】非递增顺序的最小子序列
    期货十三篇 第七篇 平仓篇
    Qt在Windows系统下检索U盘的插拔
    MHA高可用配置及故障切换
    MySQL学习笔记1
    【数据结构】串的定义;存储结构;基本操作的实现
  • 原文地址:https://blog.csdn.net/python15397/article/details/126568825