回顾第二天知识:

负载均衡的配置:饥饿加载

今天学习

网关过滤器
网关性质
跨域的配置(前端访问网关)
docker (当微服务太多了,就用这个)

一天开始之上午

Docker对我们程序员来说到底意味着什么??
1、不同版本的环境搭建、搭建一个集群进行测试
2、测试沙盒、容器

统一网关gataway:

路由过滤器GatewayFilter:

前端用户要访问指定微服务需要通过网关,在网关里设置多个过滤器和路由

过滤器的作用是什么??

对路由的请求或响应做加工处理,例如请求头
配置在路由下的过滤器只对当前路由的请求生效

defaultFilters的作用是什么?

对所有路由都生效的过滤器

自定义全局过滤器:

在网关里创建一个类,类上加两个注解:@order(-1)(这只是一个排序的注解),@Component
1、获取请求对象
2、获取请求参数: (路径?authorization&haha)(接收要哟没买过字符串)
3、判断是否等于admin
4、如果等于admin 放行请求(不要忘记加ruturn 这个是放行)
5、不等于admimn 设置状态码,,然后终止请求(返回响应对象(respone))

全局过滤器怎么用???

新建一个类 想对请求头或者响应,一定要放行请求 想要过滤器生效要在过滤器类上加@Component过滤器才会生效

实现全局过滤器的步骤??

1、实现GlobaFilter接口 2、添加@Order注解或实现Ordered接口 3、编写处理逻辑

过滤器执行顺序:

三类过滤器:当前路由过滤器、DefaultFilter、GlobaFilter
1、过滤器类上加@order(-100) {order值越小,前置优先级越高,执行顺序越靠前}
2、当order值一样时,顺序是defaultFilter最先,然后是局部的过滤器,最后是全局过滤器
从网关请求的时候经过过滤器(前置阶段),请求完微服务回来,还得走过滤器(后置阶段)

跨域问题处理:(知道即可)( 网关处理跨域采用的同样是CORS方案 )

域名不一致就是跨域,需要配置跨域资源共享,在yml里面配置
1、golbalos: #全局的跨域处理
2、allowedOrgins: #允许那些网站的跨域请求
3、allowedMethods: #允许的跨域ajax的请求方式
4、allowedHeaders: #允许在请求中携带的信息
5、allowcCredentials: #是否允许携带cookie
6、maxAge:360000 # 这次跨域检测的有效期

  1. spring:
  2. cloud:
  3. gateway:
  4. # 。。。
  5. globalcors: # 全局的跨域处理
  6. add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
  7. corsConfigurations:
  8. '[/**]':
  9. allowedOrigins: # 允许哪些网站的跨域请求
  10. - "http://localhost:8090"
  11. - "http://www.leyou.com"
  12. allowedMethods: # 允许的跨域ajax的请求方式
  13. - "GET"
  14. - "POST"
  15. - "DELETE"
  16. - "PUT"
  17. - "OPTIONS"
  18. allowedHeaders: "*" # 允许在请求中携带的头信息
  19. allowCredentials: true # 是否允许携带cookie
  20. maxAge: 360000 # 这次跨域检测的有效期

初识Docker:

Docker如何解决依赖、兼容??

1、Docker允许开发中将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包(这就是可移植镜像Image
2、Docker应用允许在容器中,使用沙箱机制,相互隔离
系统应用 —>内核—> 计算机硬件 (一级连一级)

Docker与虚拟机

分成级别:

计算机包括虚拟机Linux,虚拟机包括Docker,Docker包括redis、mysql、java、xxx等等
服务器中有多个虚拟机(虚拟机隔离性比较强)
Docker模拟的虚拟化,一个系统进程,利用一些手段把这些隔离开来,Docker容器化的部署方案

Docker与虚拟机的差异?

1、docker是一个系统进程;虚拟机是操作系统中的操作系统
2、docker体积小,启动速度快,性能好

Docker三个概念重点:镜像和容器、镜像中心

1、镜像 Image:上面有写 - - -

2、容器 Container:镜像中运行后形成的进程就是容器,Docker会做隔离,外部看不见,一个镜像可以运行多个容器

3、Docker结构 :服务端与客户端
服务端: 接收命令或远程请求,操作镜像或容器
客户端: 发送命令或者请求到Docker服务端

4、DockerRegistry:一个镜像托管的服务器,类似的还有阿里云镜像服务,统称DockerRegistry

一天开始之下午Docker

启动docker前,一定要关闭防火墙!!

  1. # 关闭
  2. systemctl stop firewalld
  3. # 禁止开机启动防火墙
  4. systemctl disable firewalld

通过命令启动docker

systemctl start docker  # 启动docker服务
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务
systemctl status docker # 检查docker状态
systemctl enable docker # 设置docker服务开机自启

镜像操作基本命令:

docker images: 查看镜像列表
docker rmi:删除镜像 镜像仓库名称:TAG  镜像id id2 id3
docker pull:从镜像中心 拉取镜像 仓库名称:TAG  latest(最新版本)
docker push: 推送镜像到镜像中心
docker save: 将镜像保存到压缩包
docker load:  加载压缩包为镜像

容器相关命令:

镜像为一个内存---到----》容器又是一个大内存
docker run:创建并运行一个容器
docker exec: 进入容器执行命令
docker logs:查看容器运行日志
docker ps:查看所有运行的容器及状态
    docker stop mn   //把mn容器停掉了
    docker start mn  
    docker rm -f mn //暴力删除mn容器
docker rm `docker ps -a -q`//删除全部容器
    docker rmi 删除镜像
    docker rmi `docker images -q`//删除全部镜像---慎用
    docker pause
    docker unpause

创建运行一个Nginx容器:

步骤1:去docker hub查看Nginx的容器运行命令

docker run --name mn -d  -p 80:80 -d nginx //--name:指定容器名称 -d是后台运行   -p是端口映射
    docker exec -it mn bash //exec进入容器中  -it交互运行 bash:Linax的脚本终端
    exit   //退出
    docker ps  //查看正在运行的容器
    docker ps -a //查看所有状态的容器
    docker logs -f mn //查看日志信息  ---重要

redis链接Docker:

1、docker exec -it redis bash  // 链接redis
2、 在redis里链接docker的端口号
3、在虚拟机里写:set num 66   //容器里设置一个值 ridis就能得到了

数据卷(volume):是一个虚拟目录,指向宿主机文件系统中的某个文件

docker volume ls  //查看数据卷列表

目录挂载

今日重点:突击docker容器操作命令、镜像操作命令

自定义镜像

镜像结构:分层结构,每一层称为一个Layer

入口:Entrypoint:一般是程序启动的脚本和参数
层:Layer:在Baselmage基础上添加安装包、依赖、配置等,每次操作都形成新的一层

基础镜像:Baselmage:应用依赖的系统函数库、环境、配置、文件等

Dockerfile语法