SpringCloud第六天
分布式配置中心
配置文件增多,不好维护
修改配置文件需要重新发布
统一管理配置, 快速切换各个环境的配置,阿里的Nacos:既可以当服务治理,又可以当配置中心,Nacos = Eureka + Config
- 添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- 不能使用原先的application.yml, 需要使用bootstrap.yml作为配置文件
配置读取优先级 bootstrap.yml > application.yml
创建bootstrap.yml,添加配置
spring:
application:
name: wpb-order-service
cloud:
nacos:
config:
server-addr: vm02:8848 #nacos地址
file-extension: yaml #文件扩展格式
profiles:
active: dev # 可以指定是哪种环境的比如开发环境,测试环境
-
在nacos页面的配置列表点击新增
注意这个命名一定要是后端的服务名-dev.yaml 后端服务是什么就写什么,dev后缀也一定要和后端的对上
内容就是application.yml的内容,复制过来之后,后端的application.yml文件就可以注释掉或者删掉了。 -
重启nacos,然后idea输入mvn -clean package -U 重启idea,重启服务
也可以在浏览器直接查看
http://vm02:8848/nacos/v1/cs/configs?dataId=wpb-order-service-dev.yaml&group=DEFAULT_GROUP
nacos的动态刷新配置
默认支持,比如更改nacos配置文件的东西,就会自动下发到服务中
比如在控制页面修改端口之后,在后端服务中
还有动态取值
比如在配置文件中添加
video:
title: xxx
然后在后端
@RefreshScope
public class OrderController {
@Value("${video.title}")
private String videoTitle;
}
这样就可以动态的取到配置文件中的值
Docker的使用
docker就是一个虚拟机,可以这么理解,vmware就是可以有多个虚拟机在上面,比如你可以安装苹果,windows,linux,为不同的虚拟机分配内存啥的
一些概念
- 镜像,可以理解为java中的类,容器运行的只读模板,操作系统+软件运行环境+用户程序
- 容器,可以理解为java中,通过类创建出的对象
- 仓库,用来保存镜像,有公有和私有仓库,好比Maven的中央仓库和本地私服
安装
yum install docker-io -y
systemctl start docker
检查安装结果。 docker info
systemctl start docker #运行Docker守护进程
systemctl stop docker #停止Docker守护进程
systemctl restart docker #重启Docker守护进程
常见命令
搜索镜像:docker search xxx
列出当前系统存在的镜像:docker images
拉取镜像:docker pull xxx
xxx是具体某个镜像名称(格式 REPOSITORY:TAG)
REPOSITORY:表示镜像的仓库源,TAG:镜像的标签
运行一个容器:
docker run --name nginx-xd -p 8080:80 -d nginx
docker run - 运行一个容器
-d 后台运行
-p 端口映射
--name "xxx" 容器名称
列举当前运行的容器:docker ps
检查容器内部信息:docker inspect 容器名称
删除镜像:docker rmi IMAGE_NAME
强制移除镜像不管是否有容器使用该镜像 增加 -f 参数
停止某个容器:docker stop 容器名称
启动某个容器:docker start 容器名称
移除某个容器: docker rm 容器名称 (容器必须是停止状态)
列举全部 容器 : docker ps -a
以nginx镜像为例
搜索都有哪些nginx镜像
拉取镜像到本地
docker pull nginx
运行镜像 (如果本地没有会自动拉取镜像到本地)
docker run --name nginx-xd -p 8080:80 -d nginx
8080:80 是一个端口映射,意思是外部访问8080端口,会映射到内部的80端口
也可以运行多个,比如在执行
docker run --name nginx-xd-81 -p 8081:80 -d nginx
就像微服务一样
下载太慢的话修改docker的镜像源
# vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"]
}
systemctl restart docker.service