20.SpringCloud實戰項目-SpringCloud整合Gateway網關


SpringCloud實戰項目全套學習教程連載中

PassJava 學習教程

簡介

  • PassJava-Learning項目是PassJava(佳必過)項目的學習教程。對架構、業務、技術要點進行講解。
  • PassJava 是一款Java面試刷題的開源系統,可以用零碎時間利用小程序查看常見面試題,夯實Java基礎。
  • PassJava 項目可以教會你如何搭建SpringBoot項目,Spring Cloud項目
  • 采用流行的技術,如 SpringBoot、MyBatis、Redis、 MySql、 MongoDB、 RabbitMQ、Elasticsearch,采用Docker容器化部署。

更好的閱讀體驗

文檔連載目錄

Spring Cloud 整合Gateway網關

1.Gateway網關介紹

  • 網關:流量的入口
  • 網關常用功能:路由轉發,權限校驗,限流控制
  • Spring Cloud Gateway是Spring Cloud官方推出的第二代網關框架
  • Spring Cloud Gateway取代了netflix的Zuul網關

2.Gateway原理

PassJava項目中,小程序和管理后台請求先訪問到API網關.

API網關通過注冊中心實時感知微服務的狀態的路由地址,准確地將請求路由到各個服務.

Spring Cloud Gateway

官方文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/

Gateway原理

  • 請求到達網關后,先經過斷言Predicate,是否符合某個路由規則

  • 如果符合,則按路由規則路由到指定地址

  • 請求和響應都可以通過過濾器Filter進行過濾

3.創建Gateway 模塊

  • 適用Spring 初始化器創建Gateway module

Spring 初始化器

  • 創建module

Gateway module

  • 選擇Gateway依賴

選擇Gateway依賴

  • 引入Gateway模塊
<module>passjava-gateway</module>

4.配置Gateway

  • 引入Nacos組件

因common模塊引入了nacos注冊中心組件,所以我們可以直接引用common模塊

<dependency>
	<groupId>com.jackson0714.passjava</groupId>
	<artifactId>passjava-common</artifactId>
	<version>0.0.1-SNAPSHOT</version>
</dependency>
  • 應用類上添加注解@EnableDiscoveryClient
@RefreshScope
@EnableDiscoveryClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class PassjavaGatewayApplication {
	public static void main(String[] args) {
		SpringApplication.run(PassjavaGatewayApplication.class, args);
	}
}

5.使用Gateway demo

  • 新建application.yml文件

    spring:
      cloud:
        gateway:
          routes:
            - id: route_qq
              uri: http://www.qq.com
              predicates:
                - Query=url,qq
            - id: route_baidu
              uri: http://www.baidu.com
              predicates:
                - Query=url,baidu
    

    第一條路由規則:當請求路徑中包含url=qq,則跳轉到http://www.qq.com

    第二條路由規則:當請求路徑中包含url=baidu,則跳轉到http://www.baidu.com

后續在PassJava項目中使用Gateway的強大功能.

代碼地址

https://github.com/Jackson0714/PassJava-Platform

公眾號

公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM