微服务网关SpringCloudGateway实战

目录

微服务网关SpringCloudGateway

1.概述

2.核心概念

快速入门

1.微服务开发

2.网关配置创建一个Gateway服务,引入以下依赖:


微服务网关SpringCloudGateway

1.概述

Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式,Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且还基于Filer链的方式提供了网关基本的功能,例如:安全、监控/埋点、限流等。

2.核心概念

网关提供API全托管服务,丰富的API管理功能,辅助企业管理大规模的API,以降低管理成本和安全风险,包括协议适配、协议转发、安全策略、防刷、流量、监控日志等贡呢。一般来说网关对外暴露的URL或者接口信息,我们统称为路由信息。如果研发过网关中间件或者使用过Zuul的人,会知道网关的核心是Filter以及Filter Chain(Filter责任链)。Sprig Cloud Gateway也具有路由和Filter的概念。下面介绍一下Spring Cloud Gateway中几个重要的概念。

  • 路由。路由是网关最基础的部分,路由信息有一个ID、一个目的URL、一组断言和一组Filter组成。如果断言路由为真,则说明请求的URL和配置匹配

  • 断言。Java8中的断言函数。Spring Cloud Gateway中的断言函数输入类型是Spring5.0框架中的ServerWebExchange。Spring Cloud Gateway中的断言函数允许开发者去定义匹配来自于http request中的任何信息,比如请求头和参数等。

  • 过滤器。一个标准的Spring webFilter。Spring cloud gateway中的filter分为两种类型的Filter,分别是Gateway Filter和Global Filter。过滤器Filter将会对请求和响应进行修改处理

微服务网关SpringCloudGateway实战_第1张图片

 如上图中所示,http请求会先被ngnix进行过滤将有用的请求交给网关也就是今天说的Gateway,然后由Gateway交给对应的api

快速入门

以Spring Boot框架开发为例,启动一个Gateway服务模块(以Consul作为注册中心),一个后端服务模块。client端请求经gateway服务把请求路由到后端服务。

前提条件:

  • Consul:版本1.5.0。

  • Spring bot:版本2.1.5。

  • Spring cloud:版本Greenwich.SR1。

  • Redis:版本5.0.5。

1.微服务开发

这里以使用Spring Boot框架开发微服务为例,启动一个服务并注册到Consul。

引入依赖:

    
    org.springframework.cloud    
    spring-cloud-starter-consul-discovery

注册服务到Consul,配置文件配置如下:

spring:  application:    name: service-consumer  cloud:    consul:      host: 127.0.0.1      port: 8500      discovery:        service-name: service-consumer

如下定义RestController,发布HTTP接口。(注:此为服务端配置,经Gateway把请求路由转发到该服务上。)

@RestController@RequestMapping("/user")
public class UserController {    
    @Resource
    private UserService userService;  
  
    @GetMapping(value = "/info")
    public User info() {
        return userService.info();    
    }
}

2.网关配置
创建一个Gateway服务,引入以下依赖:

    
    org.springframework.cloud
    spring-cloud-starter-gateway


    org.springframework.cloud
    spring-cloud-starter-consul-discovery

启动类配置如下:

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

Spring Cloud Gateway对client端请求起到路由功能,主要配置如下:

server:  port: 8098spring:  application:    name: service-gateway  cloud:    gateway:      discovery:        locator:          enabled: true             lower-case-service-id: true      consul:      host: 127.0.0.1 #注册gateway网关到consul      port: 8500      discovery:        service-name: service-gateway

此时使用http://localhost:8089/service-consumer/user/info访问服务,网关即可对服务进行路由转发,把请求转发到具体后端服务上。此时,url中使用的url前缀service-consumer,是后端服务在Consul注册的服务名称转为小写字母以后的字符串。

你可能感兴趣的:(微服务,gateway,后端)