27、網關zuul入門

基於Spring的微服務結點在能力上沒有高低貴賤之分,但是在角色上會分爲邊緣服務和內部服務兩部分。內部服務是爲對內暴露服務的結點,供架構內部來調用;邊緣服務是對外部網絡暴露的服務結點,也就是對外API接口。
開發人員爲了防止服務被******,需要編寫各種權限機制,這些機制在每個微服務結點都要實現一次。一旦鑑權上有什麼bug,又要全部節點上推倒重來,噩夢;運維人員在邊緣服務前段都會架一個F5或者Nginx等負載均衡的代理,需要手動維護一份服務列表和服務地址的路由信息,隨着結點的擴展或地址調整這份列表要變來變去。
爲了解決鑑權重複的問題,使業務結點本身只關心實現自己的業務,將對權限的處理抽離到上層。外部客戶先請求到Zuul上,在Zuul服務上對權限進行統一實現和過濾,以實現微服務結點的過濾和驗證;爲了解決請求路由和安全過濾,Spring Cloud推出了一個API gateway組件:Spring Cloud Zuul。
image.png

Zuul對路由的配置有三種方式:

27、網關zuul入門

第一種(path-url):如果請求/sina這個地址,將會轉發到http://www.sina.com.cn上去

第二種(path-serviceId):如果請求/user-consumer開頭的地址,將會轉發到eureka上serviceId爲sc-user-provider這個服務上去。

第三種(給微服務名指定path):給sc-user-provider這個微服務指定了它的請求地址是/user-service/*
(其實這裏還隱藏了第四種:什麼都不配,默認給註冊到eureka上的所有服務以第三種方式進行路由,path就是微服務自己的名字,但是此種方式又是不安全的,相當於將非邊緣服務也暴露給外網,一般需要關閉這個默認配置zuul.ignored-services=
,或者至少將受保護的微服務列表維護到zuul.ignored-services中)

今天介紹一下第一種方式
1、新建項目sc-zuul,對應的pom.xml文件如下

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <groupId>spring-cloud</groupId>
        <artifactId>sc-zuul</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>sc-zuul</name>
        <url>http://maven.apache.org</url>

        <parent>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.0.4.RELEASE</version>
        </parent>

        <dependencyManagement>
                <dependencies>
                        <dependency>
                                <groupId>org.springframework.cloud</groupId>
                                <artifactId>spring-cloud-dependencies</artifactId>
                                <version>Finchley.RELEASE</version>
                                <type>pom</type>
                                <scope>import</scope>
                        </dependency>
                </dependencies>
        </dependencyManagement>

        <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
        </properties>

        <dependencies>
                <dependency>
                        <groupId>org.springframework.cloud</groupId>
                        <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
                </dependency>

        </dependencies>
</project>

2、新建配置文件application.yml

server:
    port: 8070

spring:
    application:
        name: sc-zuul

zuul:
    routes:
        sina:
            path: /sina/**
            url: http://www.sina.com.cn
        baidu:
            path: /baidu/**
            url: http://www.baidu.com

3、新建啓動類ZuulApplication.java

package sc.zuul;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableZuulProxy
public class ZuulApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class, args);
    }

}

4、啓動項目
27、網關zuul入門
5、驗證
訪問地址http://127.0.0.1:8070/baidu/跳轉到百度
27、網關zuul入門
訪問地址http://127.0.0.1:8070/sina/跳轉到新浪
27、網關zuul入門

https://blog.csdn.net/yejingtao703/article/details/77816555/
https://www.cnblogs.com/ityouknow/p/6944096.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章