SpringCloud微服务实践之七 网关(Gateway)

一、网关基本概念

(一)网关功能

  • 身份认证和权限校验
  • 服务路由、负载均衡
  • 请求限流

SpringCloud微服务实践之七 网关(Gateway)_第1张图片

(二)网关技术选型

SpringCloud提供了两个组件都可以实现网关功能:

  • gateway
  • zuul
    其中,Zuul是基于Servlet的实现,属于阻塞式编程;而Gatwway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。

二、搭建网关

搭建网关服务的步骤:
(一)在父项目上点击鼠标右键选择new→Module:
过程同本专栏前述文章,略过不表,子项目的文件结构如下:
SpringCloud微服务实践之七 网关(Gateway)_第2张图片

(二)引入SpringCloudGateway的依赖和Eureka的服务发现依赖pom.xml:

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
    </dependencies>

(三)编写启动类GatewayApplication.java

package cn.it32.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

(四)gateway服务注册及路由配置:application.yml

server:
  port: 10010 #服务端口

spring:
  application:
    name: gateway  #服务名称
  cloud:
    gateway:
      routes: #网关路由配置
        - id: user-service #路由标识,必须唯一
          uri: lb://userservice  #路由的目标地址
          predicates: #路由断言,判断请求是否符合规则
            - Path=/user/** #路由断言:判断路径是否是以/user开头,如果是则符合
        - id: order-service #路由标识,必须唯一
          uri: lb://orderservice  #路由的目标地址
          predicates: #路由断言,判断请求是否符合规则
            - Path=/order/** #路由断言:判断路径是否是以/order开头,如果是则符合

eureka:
  client:
    service-url: #eureka服务地址
      defaultZone: http://127.0.0.1:10086/eureka

三、启动测试

顺次启动Eureka、user、Order、gateway服务,通过网关访问userservice,如下:
在这里插入图片描述
由此可见,已成功通过网关访问到了user服务。
此时Eureka注册中心的视图如下,总共注册了4个服务:
SpringCloud微服务实践之七 网关(Gateway)_第3张图片

四、总结

网关搭建步骤:
1、引入依赖,包括Eureka服务注册和gateway依赖
2、配置application.yml,包括服务基本信息、Eureka地址、路由
路由配置规则包括:
1、路由ID:路由的唯一标识
2、路由目标uri:路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡
3、路由断言predicates:判断路由的规则
4、路由过滤器filters:对请求或响应做处理

你可能感兴趣的:(springcloud,spring,cloud,微服务,gateway)