SpringCloud GateWay的原理浅析及鉴权使用
1.GateWay
使用网关的好处:
- 它提供了一个统一的入口,客户端无需知道每台服务器的ip地址,只需要给网关发送请求。
- 可以对各个微服务之间进行流量管控,服务熔断,降级等机制。
- 协议适配
- 安全防护,ip黑名单,鉴权等。
而我们一直用到的网关的功能差不多就是统一访问入口、请求路由、请求限流和鉴权。
2.GateWay网关的路由规则routes
- id:该路由规则的唯一id,标志,名字
- uri:需要被路由到的uri地址,比如http://www.baidu.com ,那么这个请求就会被路由到百度上去。也可以是 lb://application.name 这样的形式,lb就是load banlance负载均衡的意思,application.name填的就是要路由到的服务的名称,那么该网关就能自动的将请求负载均衡到指定的服务上去了。
- predicates:断言(判断条件),一个请求过来就是通过predicates来判断是否可以路由到指定的route上去的,而predicates可以去通过Host、Path、Query、Method、Cookie、Header、DateTime、RemoteAddr等去进行断言,可以单个使用,也可以多个组合在一起进行使用。
- filters:过滤器,通过pre和post方法可以对请求发送到指定服务前和请求从指定服务返回后,对该请求的数据进行修改。
gateway:
routes:
- id: product_route
uri: lb://lgmall-product
predicates:
- Path=/api/product/** #匹配对应的路径,并且会将匹配到的路径添加到uri的后面
- Query=id #请求的参数中包含一个叫id的参数
- Query=id,5 #请求的参数中包含一个叫id的参数且id的值为5
- Method=Post #请求方法的类型为Post请求
- After=2021-05-01T12:00:00.000+08:00[Asia/Shanghai] #匹配所