春クラウドゲートウェイは何ですか

春クラウドゲートウェイは何ですか

春春クラウドゲートウェイは春5.0が開発した技術をもとに、公式のゲートウェイである、など春ブーツ2.0およびプロジェクトの原子炉、春クラウドゲートウェイは、マイクロルーティング管理のためのシンプルで効果的な統一されたAPIサービスアーキテクチャを提供するように設計されています。生態系スプリングクラウドゲートウェイとしてスプリングクラウドゲートウェイ、目標は、ネットフリックスZuul置き換えることであるだけでなく、統一されたルーティングを提供し、そのようにゲートウェイベースのアプローチのフィルタ・チェーンの基本的な機能を提供し、埋込み/セキュリティを監視し、制限をストリーム。

IMG

春クラウドゲートウェイの機能特性

  • 春のフレームワーク5、プロジェクト炉・春ブーツ2.0に基づいて、
  • ダイナミックルーティング
  • 述語とフィルタは、特定のルートに作用します
  • 集積回路ブレーカHystrix
  • 春の雲DiscoveryClient集成
  • フィルタは、書き込みや述語に簡単です
  • 限定的
  • パスの書き換え

春クラウドゲートウェイエンジニアリングプロセス

IMG

クライアントは、春のクラウドゲートウェイへの要求を行います。そして、試合にルーティングするゲートウェイハンドラマッピングの要求を見つけるゲートウェイのWebハンドラに送信します。ハンドラは、指定したフィルタチェーンを通じて、我々は実際にビジネスロジックと、その後リターンを実行するサービスに要求を送信します。

フィルタは、(プロキシ要求を送信する前に、可能性があるため、フィルタ間の破線で区切られたpre()以降post)ビジネス・ロジックを実行します。

POM

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

    <parent>
        <groupId>com.snake</groupId>
        <artifactId>hello-spring-cloud-alibaba-dependencies</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../hello-spring-cloud-alibaba-dependencies/pom.xml</relativePath>
    </parent>

    <artifactId>hello-spring-cloud-gateway</artifactId>
    <packaging>jar</packaging>

    <name>hello-spring-cloud-gateway</name>
    <url>http://www.snake.com</url>
    <inceptionYear>2018-Now</inceptionYear>

    <dependencies>
        <!-- Spring Boot Begin -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- Spring Boot End -->

        <!-- Spring Cloud Begin -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!-- Spring Cloud End -->

        <!-- Commons Begin -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>
        <!-- Commons Begin -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.funtl.hello.spring.cloud.gateway.GatewayApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

主な増加のorg.springframework.cloud:spring-cloud-starter-gateway依存

特別な注意

  • 春クラウドゲートウェイは、Webサーバーとして使用するのではなく、サーバとしてWebFluxを使用して、ゲートウェイプロジェクトが依存しているstarter-webfluxので、ここでは、スターター・ウェブを依存していません。
  • フィルタ機能サーブレットは、まだサポートが必要なので、そうも頼りにすることが必要です javax.servlet:javax.servlet-api

アプリケーション

package com.snake.hello.spring.cloud.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

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

application.yml

spring:
  application:
    # 应用名称
    name: spring-gateway
  cloud:
    # 使用 Naoos 作为服务注册发现
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    # 使用 Sentinel 作为熔断器
    sentinel:
      transport:
        port: 8721
        dashboard: localhost:8080
    # 路由网关配置
    gateway:
      # 设置与服务注册发现组件结合,这样可以采用服务名的路由策略
      discovery:
        locator:
          enabled: true
      # 配置路由规则
      routes:
        # 采用自定义路由 ID(有固定用法,不同的 id 有不同的功能,详见:https://cloud.spring.io/spring-cloud-gateway/2.0.x/single/spring-cloud-gateway.html#gateway-route-filters)
        - id: NACOS-CONSUMER
          # 采用 LoadBalanceClient 方式请求,以 lb:// 开头,后面的是注册在 Nacos 上的服务名
          uri: lb://nacos-consumer
          # Predicate 翻译过来是“谓词”的意思,必须,主要作用是匹配用户的请求,有很多种用法
          predicates:
            # Method 方法谓词,这里是匹配 GET 和 POST 请求
            - Method=GET,POST
        - id: NACOS-CONSUMER-FEIGN
          uri: lb://nacos-consumer-feign
          predicates:
            - Method=GET,POST

server:
  port: 9000

# 目前无效
feign:
  sentinel:
    enabled: true

# 目前无效
management:
  endpoints:
    web:
      exposure:
        include: "*"

# 配置日志级别,方别调试
logging:
  level:
    org.springframework.cloud.gateway: debug

注:コメントをよくお読みください。

テストアクセス

[OK]をクリックしますファイル名を指定して実行ナコスのNacosProviderApplicationサービス、NacosConsumerApplicationNacosConsumerFeignApplication、、GatewayApplication

ます。http:ブラウザと訪問を開き、// localhostを:9000 /ナコス-消費者/エコー/アプリ/名前ブラウザに表示さ

Hello Nacos Discovery nacos-consumer i am from port 8082

ます。http:ブラウザと訪問を開き、// localhostを:9000 /ナコス-消費者装う/エコー/ HIブラウザに表示さ

Hello Nacos Discovery Hi Feign i am from port 8082

注:リクエストメソッドがあります。http://ゲートウェイルータIP:ルーティングゲートウェイポート/サービス名/ * *

この時点で説明春クラウドゲートウェイルーティング機能が設定されています

おすすめ

転載: www.cnblogs.com/snake107/p/11920845.html