目录
前言
在我们开发项目的过程中,我们往往需要使用注册中心和配置中心来帮我们更好的完成微服务的搭建。
一、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镜像内部
进入nacos镜像内部
docker exec -it nacos /bin/bash
进入nacos的配置文件夹conf
cd conf
编辑application.properties配置文件
vi application.properties
修改配置如下:
### set mysql with nacos
spring.datasource.platform=mysql
### 持久化的数据库数量,有几个就添加几个db.url
db.num=${MYSQL_DATABASE_NUM:1}
### 持久化的数据库连接配置
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}
### 此处填自己的数据库用户名
db.user=${MYSQL_SERVICE_USER:root}
### 此处填自己的数据库密码
db.password=${MYSQL_SERVICE_PASSWORD:479368}
4.引入依赖
代码如下(示例):
<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>
5.添加配置
新建bootstrap.yaml配置文件,代码如下(示例):
spring:
application:
name: member
cloud:
nacos:
discovery:
server-addr: 192.168.56.10:8848
namespace: b684de60-213e-45ca-a8ff-40b567e96ad5 # 此处要使用命名空间的id
config:
server-addr: 192.168.56.10:8848
file-extension: yaml
refresh-enabled: true
namespace: b684de60-213e-45ca-a8ff-40b567e96ad5
group: member
name: member # 此处加载默认主配置
extension-configs: # 此处加载分离的扩展配置,例如抽取数据库、mybats配置等
- data-id: datasource.yaml
group: member
refresh: true
- data-id: mybatis.yaml
group: member
refresh: true
6.添加注解
- 在主程序上添加注解@EnableDiscoveryClient开启注册发现功能
- 在主程序上添加注解@RefreshScope开启动态刷新配置功能
7.新建Nacos配置
在Nacos的控制台新建dev、prod、test等三个以环境来隔离的命名空间,同时以分组作为每个服务空间进行隔离,也就是一个服务一个分组,每个分组管理自己的配置,同时在dev命名空间下新建主配置、数据源配置、mybatis配置,注意此处的分组为member,参考如下:
8.启动应用
如果没有报错,同时控制台有输出相应的Nacos的注册和读取日志信息则说明配置生效。
总结
只要使用了Nacos作为配置中心,一定不要忘记在主程序上加 @RefreshScope 注解,否则你就是跟自己过不去,折磨自己,不要问我是怎么知道的。
systemctl start docker # 启动docker
systemctl stop docker # 关闭docker
systemctl restart docker # 重启docker
systemctl status docker # 查看docker状态
systemctl enable docker # 开机启动docker
docker info # 查看docker概要信息
docker pull 容器名:版本号 # 拉取镜像
docker images # 查看安装的镜像
docker ps -a # 查看运行中的镜像
docker start 镜像名/containerid # 启动关闭状态的镜像
docker stop 镜像名/containerid # 关闭运行中的镜像
docker restart 镜像名/containerid # 重启镜像
docker rm 镜像名 # 将关闭状态的镜像移除运行区
docker rmi 镜像名 # 将镜像从docker中删除
docker container prune # 从运行区移除所有关闭的容镜像
docker exec -it 镜像名 /bin/bash # 进入运行中镜像内部
docker logs 镜像名 # 查看运行中指定镜像的日志
docker update 容器名 --restart=always # docker设置开机启动容器镜像
docker info # 查看docker配置
docker tag 镜像id 名称 # 修改未运行的镜像名
docker rename 旧容器名 新容器名 # 修改运行中的镜像名
docker run -d --name 容器别名(随便取) -p 端口:端口 镜像名称(image) #运行镜像
free -h 查看内存使用情况