current position:Home>Springcloud microservice (XXIII) - gateway gateway basic knowledge

Springcloud microservice (XXIII) - gateway gateway basic knowledge

2022-01-26 23:43:18 Huaguo shuilian

One 、GateWay What is it?

GateWay yes spring Cloud Important components in - gateway , stay 1.x In all versions Zuul gateway .

GateWay It aims to provide a simple and effective way to API Routing , And provide some powerful filtering functions , for example : Fuse 、 Current limiting 、 Retry etc. . In order to improve the performance of the gateway ,SpringCloud Gateway Is based on WebFlux Framework implementation , and WebFlux The bottom layer of the framework uses high-performance Reactor Mode communication framework Netty.

Two 、 effect

Reverse proxy

authentication

flow control

Fuse

Log monitoring

....

3、 ... and 、 Where is the gateway in the microservice architecture

Four 、 Workflow

Client to spring Cloud Gateway Request . And then in Gateway Handler Mapping The route matching the request was found in , Send it to Gateway Web Handler.

Handler The request is then sent to our actual service to execute the business logic through the specified filter chain , Then return . The filters are separated by dashed lines because the filters may send proxy requests before ("pre") Or after ("post") Execute business logic .

Filter stay “pre” Type of filter can be used for parameter inspection 、 Authority check 、 flow control 、 Log output 、 Protocol conversion, etc. ,

stay “post” The filter of type can do the response content 、 Response header modification , Log output , Flow monitoring plays a very important role .

Core logic = Routing and forwarding + Execute the filter chain

5、 ... and 、 Code implementation

5.1 newly build module

cloud-gateway-gateway9527

5.2 modify pom file

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>otc.orientsec</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

5.3 modify application.yml file

server:
  port: 9527

spring:
  application:
    name: cloud-gateway-server
  cloud:
    gateway:
      routes:
        - id: payment_routh     # The routing ID, There are no fixed rules, but it is required to be unique 
          uri: http://127.0.0.1:8001 # The routing address provided after matching 
          predicates:
            - Path=/payment/get/** # Assertion , Route with matching path 

        - id: payment_routh2
          uri: http://127.0.0.1:8001 # The routing address provided after matching 
          predicates:
            - Path=/payment/lb/**

eureka:
  client:
    fetch-registry: true
    register-with-eureka: true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/

5.4 Create a new main startup class

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

6、 ... and 、 test

start-up Eureka7001, start-up payment8001, start-up GateWay9527

request :http://127.0.0.1:9527/payment/get/666

http://127.0.0.1:9527/payment/lb

Both requests succeeded .

copyright notice
author[Huaguo shuilian],Please bring the original link to reprint, thank you.
https://en.cdmana.com/2022/01/202201262343152274.html

Random recommended