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/

最新文章

  1. java接口
  2. MongoDB安装及入门
  3. ios基础篇(十六)——UIWebView的基本使用
  4. yii2.0 Cache缓存
  5. nginx apache负载均衡测试
  6. iOS学习笔记---c语言第六天
  7. Xplico
  8. PS快捷键大全
  9. 用Jekyll在github上写博客
  10. 如何用 Git 合并两个库,并保留提交历史
  11. 透视I/O多路复用
  12. 三菱Q系列PLC基本指令讲解
  13. Suricata 之IPS模式
  14. ng2tree在ios中无法触发click
  15. Installing Windows Features without Internet
  16. [No0000CA]什么是“普瑞马法则”?以及 如何利用“普瑞马法则”,三步克服惰性
  17. Spring 拦截器实现+后台原理(HandlerInterceptor)
  18. man命令使用
  19. Ubuntu 突然上不去网了怎么办
  20. 设计模式之工厂方法模式(代码用Objective-C展示)

热门文章

  1. java课程课后作业190530之用户体验评价
  2. 精选干货 在java中创建kafka
  3. meta标签小结
  4. 冒泡排序_python
  5. 吴裕雄--天生自然 PHP开发学习:超级全局变量
  6. hadoop cmd
  7. Res-net 标准版本源码差异-官方源码示例
  8. 洛谷P1257(暴力超时)
  9. docker安装宝塔面板
  10. c++静态库和动态库的添加