01 ゲートウェイサービスゲートウェイの機能、実装、分類、ワークフローを詳しく解説

ゲートウェイサービス ゲートウェイ

网关功能

ゲートウェイは、すべてのマイクロサービスへの統合された入り口です。ゲートウェイの中核となる機能特性は、主に请求路由,权限控制,限流3 つの部分に反映されています。

网关的分类

ゲートウェイの分類とそのテクノロジーの選択

  • 全局网关(接入层网关): 主にロードバランシング、リクエストログなどを実装し、ビジネスロジックコードに束縛されない

  • 业务网关(微服务网关): いくつかのビジネス ロジック コードを含む、さまざまなビジネス/プロジェクト/インターフェイス/サービスにリクエストを転送します。

Spring Cloud には主に 4 種類のゲートウェイ実装があり、マイクロサービス フレームワークにシンプルで効果的な統合 API ルーティング管理方法を提供するように設計されています。

  • Spring Cloud Gateway: SpringCloud の新しいプロジェクト。Spring 5.0、SpringBoot2.0、ProjectReactor などのリアクティブ プログラミングおよびイベント ストリーミング テクノロジに基づいて開発されたゲートウェイです。
  • Zuul:Servletベースのブロッキングプログラミング実装であり、SpringCloudGatewayはSpring 5で提供されているWebFluxベースのレスポンシブプログラミング実装なので、パフォーマンスが優れています。
  • 其他实现: Nginx (グローバル ゲートウェイ)、Kong (API ゲートウェイ、プログラミング コストが比較的高い)

ここに画像の説明を挿入します

网关的实现

ステップ 1: ゲートウェイ モジュールなどの新しい SpringBoot プロジェクトを作成し、ゲートウェイの依存関係と nacos サービス ディスカバリの依存関係を導入します。

<!--网关依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

ステップ 2: スタートアップ クラスをgateway模块に記述します。

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

编程式(更灵活): 対応するゲートウェイ コードをプロジェクト スタートアップ クラスに追加して、https://yupi.icu/yupi を http://yupi.icu/ に実装します。

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    
    
    return builder.routes()
        .route("toyupi", r -> r.path("/yupi")
               .uri("http://yupi.icu/"))
         .route("路由Id", r -> r.path("路由规则")
               .uri("路由的目标地址"))
         .route.......
        .build();
}

配置式(更直观):基本的な設定とルーティング ルールを記述します。

  • 路由名称(id): ルートの一意の表現。一意である必要があるのはユーザー定義のみです。
  • 路由目标地址(uri): 固定アドレスにルーティングすることも、サービスにルーティングして、負荷分散ルールに従ってサービス インスタンスを選択することもできます。
  • 路由断言(predicates): リクエストがルーティング ルールの条件を満たしているかどうかを判断し、満たしている場合はルーティング先に転送します。
  • 路由过滤器(filters): リクエストまたはレスポンスに対していくつかの処理操作を実行します。
# 快捷配置方式
spring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: https://example.org # 路由到固定地址
        uri: lb://Nacos中注册的服务名称 # 路由到某个服务
        predicates: 
        - Cookie=mycookie,mycookievalue  # cookie里必须有mycookie且值是mycookievalue
# 完全展开配置方式        
spring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: https://example.org
        predicates:
        - name: Cookie
          args:
            name: mycookie
            regexp: mycookievalue        

网关的工作流程

ステップ 1: クライアントはゲートウェイへのリクエストを開始します。リクエストが Handler Mapping で定義されたルートと一致する場合、リクエストは に転送されます。Web Handler

ステップ 2: 定義されたフィルター チェーンを介してユーザー リクエストをフィルター処理する フィルターは、プロキシ リクエストの前または後に実行できます。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_57005976/article/details/134968746