Spring Cloud第二代网关GateWay是由纯Netty开发,底层为Reactor,WebFlux构建,不依赖任何Servlet容器,它不同于Zuul,使用的是异步IO,性能较Zuul提升1.6倍。搭建过程如下(本次搭建的为子项目,主项目可以参考Nacos搭建流程 )
pom
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
配置文件
server: port: 8040 spring: application: name: gateway cloud: nacos: discovery: server-addr: 127.0.0.1:8848 gateway: discovery: locator: enabled: true
以上的意思不仅是把自己给注册到nacos,并且获取nacos的所有注册服务。
启动网关项目,现在就可以进行网络路由了。访问格式为 ip:端口/服务注册名/restfulapi-url
比方说我们现在有两个微服务项目,一个为user(端口8082),一个为nacos(端口8081).
三大核心概念
- Route(路由) Spring Cloud Gateway的基础元素,可简单理解成一条转发的规则。包含:ID,目标的URL,Predicate集合以及Filter集合。
- Predicate(谓词) 即java.util.function.Predicate,Spring Cloud Gateway使用Predicate实现路由的匹配条件。这是一个可以进行条件判断的函数式接口,具体可以参考本人博客Java函数式编程整理
- Filter(过滤器) 修改请求以及响应。
由于我们使用了nacos来进行服务发现,所以我们使用了之前的配置文件,但如果不使用服务发现,只做常规的转发如下
spring: cloud: gateway: routes: - id: some_route uri: http://www.baidu.com predicates: - Path=/user/1 filtes: - AddRequestHeader=X-Request-Foo, Bar
这段配置的意思是说,当我们请求/user/1的url的时候,会添加AddRequestHeader=X-Request-Foo, Bar过滤器做一些处理,然后路由到http://www.baidu.com。
路由谓词配置工厂
路由谓词配置工厂由一整套谓词来进行配置转发的不同情况。
来源:http://www.1994july.club/seo/
原文地址:https://www.cnblogs.com/1994july/p/12037506.html
时间: 2024-10-08 22:26:24