API网关-Gateway笔记

一、API网关

1. 什么是API网关?

API网关就是把各个服务对外提供的API汇聚起来,让外界看起来是一个统一的接口。同时也可以在网关中提供额外的功能。
总结:网关就是所有项目的一个统一入口。
API网关-Gateway笔记_第1张图片

2. 网关的组成

网关 = 路由转发 (转发规则)+ 过滤器(额外功能)

3. Spring Cloud Gateway介绍

Gateway是Spring Cloud的一个二级子项目,提供了微服务网关功能,包含:权限安全、监控/指标、谓词、过滤、容错等

3.1 名词解释

① Route:路由,是Gateway里的主要学习内容,一个Gateway项目可以包含多个Route
,每一个Route代表一个完整的API网关节点。主要包含以下内容:路由规则、校验、过滤、容错。如果断言为trus,则匹配该路由

② Predicate:谓词或断言,表示路由规则和校验。

③ Filter:过滤,在Gateway运行过程中在代理服务前后去加一些功能。在请求转发之前,加减一些请求头header信息,响应的时候,可以做一些结果的判断,加减响应头的信息等。

3.2 流程

API网关-Gateway笔记_第2张图片

二、Gateway入门案例

本实例中用eureka做注册中心

1. ribbon-app-service微服务

实例一的application.yml:

server:
	port: 8080
spring:
	application:
		name: ribbon-app-service
eureka:
	client:
		service-url:
			defaultZone: http://localhost:8761.eureka/

实例二的application.yml:

server:
	port: 8081
spring:
	application:
		name: ribbon-app-service
eureka:
	client:
		service-url:
			defaultZone: http://localhost:8761.eureka/

2. spring-cloud-gateway网关服务

application.yml中内容如下:

server:
	port: 9999
spring:
	application:
		name: spring-cloud-gateway
	cloud:
		gateway:
			discovery: # 配置网关发现机制
				locator: # 配置处理机制
					enabled: true # 开启网关自动映射处理逻辑
					# 只要请求地址符合规则:http://gatewayIP:gatewayPort/微服务名/微服务请求地址
					# 网关自动把请求转发到:http://微服务名/微服务请求地址
					# 请求地址是:http://localhost:9999/ribbon-app-service/getArgs?name=admin&age=20
					# 自动转发到:http://ribbon-app-service/getArgs?name=admin&age=20
					# 商业开发中,enabled一般不设置,默认为false。避免不必要的自动转发规则
					lower-case-service-id: true # 开启服务名称小写转换,因为eureka对服务名管理默认全部大写,开启之后,大小写就通用了
eureka:
	client:
		service-url: 
			defaultZone: http://localhost:8761/eureka/

3. 开启ribbon-app-service的两个实例和spring-cloud-gateway网关服务

通过gateway网关能够访问,并且还有负载均衡

API网关-Gateway笔记_第3张图片

API网关-Gateway笔记_第4张图片

三、定制化配置routes,不采用自动转发

spring:
	cloud:
		gateway:
			discovery:
			routes: # 配置网关中的一个完整路由,包括命名、地址、谓词集合(规则)、过滤器集合,一个-表示一个完整对象
			- id: first # 路由定于的命名,唯一即可
			  # lb表示loadbalance负载均衡
			  uri: lb://ribbon-app-service
			  # 谓词,可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与谓词相匹配则进行路由
			  predicates: # 配置谓词集合,Path表示PathRoutePredicateFactory
			  	- Path=/api/**
			  filters: # 配置过滤器集合
			  	# 过滤转发地址前缀,过滤1节
			  	# 如:请求地址 - http://localhost:9999/api/getArgs?name=admin&age=20
			  	# 对应的谓词,规则是/api,符合
			  	# 转发地址为:http://ribbon-app-service/getArgs?name=admin&age=20
			  	- StripPrefix=1

API网关-Gateway笔记_第5张图片

API网关-Gateway笔记_第6张图片

你可能感兴趣的:(gateway,spring,cloud,eureka)