• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SpringCloud2.x Greenwich版本搭建:(四) zuul網關

    標簽: springboot  微服務  springcloud  java

    1.Zuul網關?

    是什么:網關相當于一個網絡服務架構的入口,所有網絡請求必須通過網關轉發到具體的服務。

    作用:統一管理微服務請求,登錄驗證,權限控制、負載均衡、路由轉發、監控、安全控制黑名單和白名單等

    區別:網關是對所有服務的請求進行分析過濾,過濾器是對單個服務而言。

    2.創建Module項目springcloud-zuul

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.itlinli</groupId>
        <artifactId>springcould-zuul</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springcould-zuul</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>com.itlinli</groupId>
            <artifactId>springcould-2</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    3.配置文件

    eureka.client.serviceUrl.defaultZone=http://localhost:8800/eureka/
    server.port=8400
    spring.application.name=service-zuul
    
    #表示注冊中心的consumer-feign下面的所有訪問請求路徑都由/itlinli代替
    #zuul.routes.consumer-feign=/itlinli/**
    #表示注冊中心的consumer-hystrix下面的所有訪問請求路徑都由/itlinli-hystrix代替
    zuul.routes.consumer-hystrix=/itlinlihystrix/**

    4.啟動類

    @SpringBootApplication
    @EnableZuulProxy
    public class SpringcouldZuulApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringcouldZuulApplication.class, args);
        }
    
    }

    5.訪問消費者中的方法就需要加/itlinli/路徑訪問

    6.zuul過濾器

    package com.itlinli.filter;
    
    import com.netflix.zuul.ZuulFilter;
    import com.netflix.zuul.context.RequestContext;
    import com.netflix.zuul.exception.ZuulException;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Component;
    
    import javax.servlet.http.HttpServletRequest;
    
    @Component
    public class TokenFilter extends ZuulFilter {
    
        private static Logger log = LoggerFactory.getLogger(TokenFilter.class);
    
       /**
        返回一個字符串代表過濾器的類型,
        pre:路由之前
        routing:路由之時
        post: 路由之后
        error:發送錯誤調用
       */
        @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 ctx = RequestContext.getCurrentContext();
            HttpServletRequest request = ctx.getRequest();
            log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString()));
            Object accessToken = request.getParameter("token");
            if(accessToken == null) {
                log.warn("token is empty");
                ctx.setSendZuulResponse(false);
                ctx.setResponseStatusCode(401);
                try {
                    ctx.getResponse().getWriter().write("token is empty");
                }catch (Exception e){}
                return null;
            }
            log.info("ok");
            return null;
        }
    }
    

    7.請求的時候需要攜帶token

    調用方法失敗是因為我沒有啟動提供者。他調用了熔斷器的方法

    下一篇文章:SpringCloud2.x Greenwich版本搭建:(五) Config分布式配置中心

    版權聲明:本文為qq_41085151原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_41085151/article/details/108081075

    智能推薦

    SpringCloud:Hystrix(F版本)- Zuul網關設置

    SpringCloud:Hystrix(F版本) 斷路器簡介 Netflix開源了Hystrix組件,實現了斷路器模式,SpringCloud對這一組件進行了整合。 在微服務架構中,一個請求需要調用多個服務是非常常見的 使用的原因 Spring Cloud可以用RestTemplate+Ribbon和Feign來調用。為了保證其高可用,單個服務通常會集群部署。由于網絡原因或者自身的原因,服務并不能...

    SpringCloud 服務網關Zuul Hoxton版本

    Spring Cloud Zuul簡介:Spring Cloud Zuul是Spring Cloud Netflix子項目的核心組件之一,作為微服務API網關,具有動態路由、過濾、壓力測試、監控、彈性伸縮和安全等功能,并且能夠與Eureka、Ribbon、Hystrix等組件配合使用。 本文主要對Spring Cloud Zuul的基本使用進行簡單總結,其中SpringBoot使用的2.2.2.R...

    SpringCloud之Zuul網關控制(Finchley版本)

    Zuul 的主要功能是路由轉發和過濾器。路由功能是微服務的一部分,比如 /api/user 轉發到到 User 服務,/api/shop 轉發到到 Shop 服務。Zuul 默認和 Ribbon 結合實現了負載均衡的功能。 新建Zuul項目 我們需要新建一個zuul項目來作為網關控制的項目, 因此我們有這樣的pom.xml 主要是增加了zuul的依賴 在啟動類中增加zuul注解 配置applica...

    SpringCloud組件之網關Zuul(Hoxton版本)

    文章目錄 1.Zuul簡介 2.創建Spring Cloud Zuul工程 2.1在pom中添加相關依賴 2.2 增加配置文件 2.3 創建啟動類ZuulApplication 2.4啟動程序,進行測試 3.Zuul常用功能 3.1 配置路由規則 3.2 配置訪問前綴 3.3 Header過濾及重定向添加Host 3.4 查看路由信息 4.過濾器 4.1 過濾器類型 4.2 過濾器的生命周期 4....

    SpringCloud搭建Zuul動態服務網關

    SpringCloud搭建Zuul動態服務網關 文章目錄 SpringCloud搭建Zuul動態服務網關 網關分類 開放Api 微服務網關 API服務管理平臺 網關設計 開放API接口 內網API接口 網關框架 使用Zuul實現反向代理 使用Zuul過濾器 使用Zuul整合Ribbon 動態網關實現 zuul是spring cloud的一個推薦組件,https://github.com/Netfl...

    猜你喜歡

    Springcloud config + zuul 搭建動態網關

    把zuul項目當成configClient端,在zuul項目的pom文件中新增依賴 配置文件 碼云上的配置文件 在zuul項目的啟動類中添加如下方法 啟動Eureka、order項目、member項目、zuul項目。 訪問http://localhost/api-order/toMember?name=22&userToken=111 然后把碼云里面的配置文件改一下,把api-order改...

    SpringCloud-搭建Zuul網關服務(七)

    網關的作用:可以實現負載均衡、路由轉發、日志、權限控制、監控 Nginx和Zuul的區別: Nginx是采用服務器負載均衡轉發 Zuul依賴Ribbon和Eureka實現本地負載均衡轉發 相對來說Nginx功能比Zuul功能更強大,能夠整合其他語言比如lua腳本實現強大的功能,同時Nginx可以更好的抗高并發,Zuul網關適用于請求過濾和攔截等 網關和過濾器的區別: 網關是攔截所有服務器請求進行控...

    SpringCloud服務網關Zuul搭建

    文章目錄 簡介 Zuul服務搭建 后端服務book搭建 創建一個web應用 主程序 配置application.properties 訪問book服務 Zuul服務搭建 創建應用 添加一個pre過濾器 主程序 配置application.properties 通過Zuul服務網關訪問book服務 參考資料 簡介 Zuul在SpringCloud微服務架構中扮演服務網關的角色,對外部應用訪問后端服務...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    精品国产乱码久久久久久蜜桃不卡