zoukankan      html  css  js  c++  java
  • zuul学习笔记

    0 环境

    • 操作系统:win10
    • 编辑器:idea
    • springcloud版本:H版

    1 前言

    每个微服务地址都有可能发生变化 通过API聚合内部服务 分割内外部系统 屏蔽内部实现细节 (可能理解不到位 多多包涵 类比台式机(无外壳) --> 外壳 --> 使用者 直接用无外壳台式机就可以嘿嘿了 但是为了更加耐操 需要安装外壳 再去使用它 相对来说无盖灰尘更容易进去/液体/一激动不小心提到了等 为了保护内部部件嘛 使用者不能直接与其接触)

    • 对外部请求的组件进行处理 -> 服务网关
      • 好处
        • 客户端调用更加简单
        • 权限问题统一处理
        • 数据分割和拼接
        • 不同客户端可提供不同的网关支持
    • 常见的网关
      • zuul
      • gateway

    2 zuul简介

    • zuul功能(核心过滤器)
      • 动态路由
      • 监控
      • 权限控制(认证鉴权)
      • 静态资源处理
      • 负载均衡
      • 灰度发布

    3 初识zuul

    3.1 创建springboot项目(zuul)

    • 用到eureka server和provider还有zuul 说启动就是重启/开启这个3个启动类 之后不在重复说了

    3.2 yml配置

    设置应用名 端口 连接eureka

    spring:
      application:
        name: zuul
    
    server:
      port: 2021
    
    eureka:
      client:
        service-url:
          #      defaultZone: http://localhost:1234/eureka
          defaultZone: http://localhost:8761/eureka
    

    3.3 在启动类上开启路由代理

    @SpringBootApplication
    // 开启网关代理
    @EnableZuulProxy
    public class ZuulApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ZuulApplication.class, args);
        }
    
    }
    

    3.4 启动

    • 访问http://localhost:2021/provider/hello
      在这里插入图片描述

    3.5 yml路由配置

    • provider --> 太过显眼 我想起个别名去调用它里面的服务
    # 路由规则配置 复杂版
    #zuul:
    #  routes:
    #    newbie:
    #      path:
    #        /newbie/**
    #      service-id:
    #        provider
    
    # 路由规则配置 精简版
    zuul:
      routes:
        provider:
          /newbie/**
    
    • 重启zuul 访问http://localhost:2021/newbie/hello
      在这里插入图片描述

    3.6 小结

    依赖添加 开启zuul代理 yml配置 zuul --> routes --> 服务名 --> 自定义服务名及范围

    4 zuul过滤器

    • zuul过滤器 4种类型
      • pre: 在路由请求调用前 做验证
      • routing: 路由请求调用中 做一下自定义逻辑
      • post: 在routing和post之后被调用
      • error: 处理请求调用时的错误

    执行顺序 pre --> routing --> post(任何一个过滤器异常 都会进入error)

    • 配置过滤器
    // 简单权限过滤器(只是试验而已)
    @Component
    public class ParmPermissFilter extends ZuulFilter {
    
        // 过滤器类型 权限判断一般是pre
        @Override
        public String filterType() {
            return "pre";
        }
    
        // 过滤器优先级
        @Override
        public int filterOrder() {
            return 0;
        }
    
        // 是否过滤 修改一下(true --> 是)
        @Override
        public boolean shouldFilter() {
            return true;
        }
    
        // 判断逻辑
        // 在源码已经说过了 该返回值忽略它 无所谓返回了
        @Override
        public Object run() throws ZuulException {
            RequestContext context = RequestContext.getCurrentContext();
            HttpServletRequest request = context.getRequest();
            String name = request.getParameter("name");
            if (!"烤肉".equals(name)) {
                // 设置响应返回
                // 设置响应头(乱码)
                context.addZuulResponseHeader("content-type","text/html;charset=utf-8");
                // 响应码
                context.setResponseStatusCode(401);
                context.setResponseBody("请求拦截");
                context.setSendZuulResponse(false);
            }
            return null;
        }
    }
    
    • 启动

    访问http://localhost:2021/newbie/hello?name=111
    在这里插入图片描述

    4 其他配置简介

    • yml配置
    # 注意
    # /consumer/**与/consumer/hello/**属于包含关系
    # 假设我想访问/consumer/hello/ --> 目标是consumer-a
    # 但结果不是我们想要的(冲突) 但是我想访问consumer-a(因为yml有优先级的 只要调换它们位置即可)
    # 在properties配置属于无序 调也没用
    #zuul:
    #  routes:
    #    consumer:
    #      /consumer/**
    #    consumer-a:
    #      /consumer/hello/**
    
    # 路径忽略
    #zuul:
    #  # 忽略某类地址
    #  ignored-patterns: /**/art/**
    #  # 忽略服务
    #  ignored-services: provider
    
    #前缀
    #zuul:
    #  # 加前缀 所有请求地址都会多一个/milk
    #  prefix: /milk
    
    # 本地跳转
    #zuul:
    #  routes:
    #   服务名:
    #     url:
    #       forward:/xxx
    
    作者:以罗伊
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    英飞凌TLE9461V33 SBC芯片
    Lin总线诊断级别定义 CLASS I 、II 、III
    AUTOSAR_SWS_CANInterface 阅读
    AUTOSAR_SWS_CANTransceiverDriver 阅读
    VS2013 快捷键
    Can总线空闲状态时候,TX,RX电平
    postman
    题目2
    Robot Framework 自动化测试
    银行测试 http://blog.csdn.net/stillming/article/details/42275251
  • 原文地址:https://www.cnblogs.com/my-ordinary/p/12556794.html
Copyright © 2011-2022 走看看