最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

SpringCloud Getway服务网关

互联网 admin 2浏览 0评论

SpringCloud Getway服务网关

Gateway网关

网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。
API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来
管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起
来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建
和管理服务,而不用去处理这些策略性的基础设施。

Gateway特性:

基于Spring Framework ,Project Reactor 和 Spring Boot 2.0 进行构建;
可以对路由指定 Predicate (断言) 和 Filter (过滤器);
集成Hystrix的断路器功能;
集成 Sring Cloud 服务发现功能;
易于编写的 Predicate(断言) 和 Filter(过滤器);
请求限流功能;
支持路径重写

三大核心概念:

Route(路由)

路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组
成,如果断言为true则匹配该路由

Predicate(断言)

参考的是java8的java.util.function.Predicate开发人员可以匹配HTTP请求中
的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由

Filter(过滤)

指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者
之后对请求进行修改。

搭建网关微服务

①:创建微服务模块
②:引入pom依赖

<dependencies><!--gateway--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--eureka-client gateWay作为网关,也要注册进服务中心--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- gateway和web不能同时存在,即web相关jar包不能导入 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity --><groupId>com.krisswen.cloud</groupId><artifactId>cloud-api-commons</artifactId><version>${project.version}</version></dependency>
</dependencies>

③:编写application.yml配置文件

server:port: 9527
spring:application:name: cloud-gateway## GateWay配置cloud:gateway:routes:- id: payment_routh  # 路由ID , 没有固定的规则但要求唯一,建议配合服务名uri: http://localhost:8001  # 匹配后提供服务的路由地址predicates:- Path=/payment/**  # 断言,路径相匹配的进行路由- id: payment_routh2  # 路由ID , 没有固定的规则但要求唯一,建议配合服务名uri: http://localhost:8001  # 匹配后提供服务的路由地址predicates:- Path=/payment/lb/**  # 断言,路径相匹配的进行路由# 注册进 eureka Server
eureka:client:service-url:defaultZone: :7001/eureka/,:7002/eureka/register-with-eureka: truefetch-registry: true

④:编写启动类

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

SpringCloud Getway服务网关

Gateway网关

网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。
API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来
管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起
来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建
和管理服务,而不用去处理这些策略性的基础设施。

Gateway特性:

基于Spring Framework ,Project Reactor 和 Spring Boot 2.0 进行构建;
可以对路由指定 Predicate (断言) 和 Filter (过滤器);
集成Hystrix的断路器功能;
集成 Sring Cloud 服务发现功能;
易于编写的 Predicate(断言) 和 Filter(过滤器);
请求限流功能;
支持路径重写

三大核心概念:

Route(路由)

路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组
成,如果断言为true则匹配该路由

Predicate(断言)

参考的是java8的java.util.function.Predicate开发人员可以匹配HTTP请求中
的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由

Filter(过滤)

指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者
之后对请求进行修改。

搭建网关微服务

①:创建微服务模块
②:引入pom依赖

<dependencies><!--gateway--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--eureka-client gateWay作为网关,也要注册进服务中心--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- gateway和web不能同时存在,即web相关jar包不能导入 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity --><groupId>com.krisswen.cloud</groupId><artifactId>cloud-api-commons</artifactId><version>${project.version}</version></dependency>
</dependencies>

③:编写application.yml配置文件

server:port: 9527
spring:application:name: cloud-gateway## GateWay配置cloud:gateway:routes:- id: payment_routh  # 路由ID , 没有固定的规则但要求唯一,建议配合服务名uri: http://localhost:8001  # 匹配后提供服务的路由地址predicates:- Path=/payment/**  # 断言,路径相匹配的进行路由- id: payment_routh2  # 路由ID , 没有固定的规则但要求唯一,建议配合服务名uri: http://localhost:8001  # 匹配后提供服务的路由地址predicates:- Path=/payment/lb/**  # 断言,路径相匹配的进行路由# 注册进 eureka Server
eureka:client:service-url:defaultZone: :7001/eureka/,:7002/eureka/register-with-eureka: truefetch-registry: true

④:编写启动类

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

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论