Spring Cloud Gateway –配置简单路由

可以将Spring Cloud Gateway视为Spring Cloud Netflix Zuul项目的后续产品,并有助于在微服务环境中实现Gateway模式 。 它建立在
Spring Boot 2和Spring Webflux端到端都是无阻塞的-它公开了一个基于Netty的服务器,使用基于Netty的客户端进行下游微服务调用,并在其余流程中使用了反应堆核心 。

我的目的是演示如何使用Spring Cloud Gateway以多种方式转换基于Spring Cloud Netflix Zuul的小型路由。

Spring Cloud Netflix Zuul

Spring Cloud Zuul允许使用此处表示为yaml的属性文件来配置简单的路由规则:

zuul:routes:sample:path: /zuul/**url: http://httpbin.org:80strip-prefix: true

该路由将在Zuul中暴露一个终结点,该终结点将拦截对前缀为“ / zuul”的uri的任何请求,并在去除“ zuul”前缀后将其转发至下游系统。

Spring Cloud Gateway

Spring Cloud Gateway允许以三种方式对等效功能进行编码-使用基于Java的DSL,使用基于Kotlin的DSL和使用基于简单属性的配置。

可以使用出色的http://start.spring.io网站生成一个入门项目:

基于Java的DSL

以下是创建类似于Zuul路由的基于Java的dsl:

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class GatewayRoutes {@Beanpublic RouteLocator routeLocator(RouteLocatorBuilder builder) {return builder.routes().route(r ->r.path("/java/**").filters(f -> f.stripPrefix(1)).uri("http://httpbin.org:80")).build();}}

这是可读的DSL,它配置一条路由,该路由以“ java”为前缀拦截uri,并在去除该前缀后将其发送到下游系统。

基于Kotlin的DSL

基于Kotlin的DSL配置此路由如下所示。

import org.springframework.cloud.gateway.route.RouteLocator
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder
import org.springframework.cloud.gateway.route.builder.filters
import org.springframework.cloud.gateway.route.builder.routes
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration@Configuration
class KotlinRoutes {@Beanfun kotlinBasedRoutes(routeLocatorBuilder: RouteLocatorBuilder): RouteLocator =routeLocatorBuilder.routes {route { path("/kotlin/**")filters { stripPrefix(1) }uri("http://httpbin.org")}}
}

我最初为Spring Cloud Gateway路由提交了基于Kotlin的DSL的PR ,因此偏向于使用Kotlin配置Spring Cloud Gateway :-)。 该路由采用前缀为“ kotlin”的URL,并在进行下游微服务调用之前将其剥离。

物业路线

最后是基于属性的属性:

spring:cloud:gateway:routes: - predicates:- Path=/props/**filters:- StripPrefix=1uri: "http://httpbin.org"

像Java和Kotlin版本一样,此路由使用带有前缀“ props”的url,并在进行下游调用之前将其删除。 基于属性的版本具有在运行时可刷新的附加优点。

结论

通过比较Spring Cloud Netflix Zuul的典型配置如何映射到Spring Cloud Gateway,这是Spring Cloud Gateway的快速入门。

翻译自: https://www.javacodegeeks.com/2018/04/spring-cloud-gateway-configuring-a-simple-route.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win7台式电脑怎么连wifi_台式电脑怎么用wifi网络

现在很多朋友的手机使用的都是wif网络,既然手机可以用wifi,那么电脑怎么用wifi呢,其实电脑用wifi的方法也有很多种,为了大家通俗易懂,先来说一种简单的方法吧!台式电脑怎么用wifi网络1、首先必须要有一个无…

分子动力学模拟软件_功能玻璃专题——分子动力学模拟预测氧化钠含量对二元钠硅酸盐玻璃弹性模量的影响...

赵 谦 1,祖 群 1,齐 亮 2,胡永杰 2,孙雪坤3,陈 阳 1(1. 中材科技股份有限公司,中国南京 210012;2. 美国密歇根大学,美国密歇根州安娜堡 48109-236; 3. 美国大陆地科技…

javafx中的tree_JavaFX中的塔防(2)

javafx中的tree在最后一部分,我们创建了一个简单的编辑器,让我们放置炮塔。 现在,我们将在敌人起源处添加一个生成点,并为其定义攻击目标。 首先,我将通过对象层向地图添加更多信息。 这是标准的TMX,因此我…

fanuc机器人与视觉通信_要说工厂干起活来:工业机器人和数控机床才是真正的一对!...

我们常说团结就是力量,只有相互配合,才能把工作做得更加完美。这不仅仅适用于人类。工业机器人和数控机床也是一样的,也是需要相互配合才能做好工作,提高工厂的生产效率。所以今天要学习的是工业机器人和数控机床是怎么配合工作的…

在Microsoft Azure上运行Eclipse MicroProfile

在本文中,我将通过展示如何在Microsoft Azure Web Apps for Containers中执行操作来跟踪有关在Oracle Cloud中运行Eclipse MicroProfile应用程序的系列文章。 我正在使用与以前的帖子相同的简单应用程序CloudEE Duke 。 唯一的区别是,我现在将应用程序打…

php ajax 更改状态,phpajax实现无刷新获取天气状态_PHP教程

首先我们要明白一点我们自己是无法来做天气预报这种功能的,这里我们只要调用api接口返回的数据就可以了,下面是以中国天气网的api接口调用实例我们一起来学习。天气已经成为生活中不可缺少的话题,与我们的生活有着密切的关系,我博…

注入dll到explorer.exe中无反应_MBR膜生物反应器的安装及技术要求都有什么呢?

MBR膜生物反应器在安装的时候,其中是有着事项值得我们注意的,那么MBR膜生物反应器的安装及技术要求主要是什么呢?下面一起来了解下吧。1.MBR膜生物反应器管道安装连接应该在设备就位时考虑好,罐体就位时必须按设备自重&#xff0c…

什么是互联网大厂_2020阿里、腾讯、字节跳动等14家互联网大厂薪资水平大汇总...

联网大厂已经成为求职者的“必争之地”。无论是从薪资待遇、发展机会,还是从平台资源、技术实力来看,互联网大厂都是不错的选择。当然,不同的企业薪资水平还是存在一定的差距,对应的要求也会有所不同。今天,我们再来看…

解神者php奥义高阶,《解神者》角色月曦九攻略技能解析和兽主推荐

解神者已经有一段时间了,很多新玩家对角色还不太了解,今天就给新手玩家解析一下月曦九角色的技能攻略和兽主推荐。月曦九也是解神者所有角色里伤害很高的角色之一。月曦九的神权一技能,此技能共有两段伤害,在第一段位移和伤害释放…

无穷级数求和7个公式_大家看,用反证法判别级数敛散性(送微积分同学)!...

反证法证明级数发散题目、 判断级数 的收敛性。解: 反设收敛。则收敛。所以收敛, 所以收敛, 它为正项级数,但是通过比较分子分母次数得到因为发散, 所以发散,矛盾。所以原级数发散。注记: 教材中…

matlab二元一次方程求解_高中化学二元混合物的十字交叉法解法

“十字交叉法”是高中化学计算题中巧解二元混合物问题的一种常用的有效方法,正确运用“十字交叉法”,可以帮助同学们方便、迅速地解决计算问题。速解的前提:1、必须清楚“十字交叉法”运用后的比例比系——“看分母”法则。即特性数值的分母所…

ffmpeg宏块(Macroblock)概念

参考文章:音视频高手课系列5-h264编码基础(宏块原理) 文章目录 使用videoEye分析视频宏块示例FFmpeg宏块概念1. 宏块的定义2. 宏块的分类I-MacroblocksP-MacroblocksB-Macroblocks 3. 宏块的编码过程1. 运动估计2. 变换与量化3. 熵编码 4. 宏块的解码过程1. 熵解码2…

python123循环结构_来学Python啦,大话循环结构~

点击上方蓝字关注"程序员Bob"每日一句,送给最珍贵的你: 为学日益,为道日损,损之又损,以至于无为,无为而无不为。最近想研究爬虫了,准备拾起以前Python,继续学!…

linux查看主机脚本,简单的bash脚本查看任意网段的在线主机

一前言最近看到许多同志在写ping某个地址段的bash脚本,我也心血来潮来了一发。 当然本人新手,大神勿喷。二准备工作linux系统的机器一台,当然虚拟机也可以,只要将网卡配置为桥接模式,可以连通其他局域网的主机即可。1…

python中什么叫合法的标识_python合法标识符要求是什么

python合法标识符要求是:1、不能以数字开头;2、不能包含非法字符;3、数字不能作为标识符;4、不能包含空格;5、不能包含运算符。1.不能以数字开头>>> 2bin2 File "", line 1 2bin2 ^ SyntaxError: i…

android界面实现框架内页面跳转_KVM虚拟化管理平台的实现

KVM虚拟化管理平台的实现源码链接:https://github.com/wsjhk/IaaS_admin.git视频演示链接:https://v.youku.com/v_show/id_XMjg4MTczODU1Ng.html(N年前刚开始学习Python时做的第一个自主设计实现项目,代码实在写的烂,不喜勿喷&…

suse linux 查看内存,Suse linux查询内存大小的指令是什么?

满意答案CJTHI2013.08.18采纳率:49% 等级:12已帮助:5850人下面和大家分享在Linux系统下查看内存使用情况的free命令:[rootscs-2 tmp]# freetotal used free shared buffers cachedMem: 3266180 3250004 16176 0 110652 2668236…

Linux微信运行错误,Ubuntu 16.04 运行微信开发者工具编译出错的解决办法

最近有折腾小程序的意向,但微信的开发者工具只提供了 Windows 和 Mac 两个版本,对于我这样的 Linux 用户来说不是那么地友好。经过观察发现,那个开发者工具实际上是基于nw.js开发的,天然地具有跨平台的属性,搜索Github…

springboot security 权限校验_springboot借助aop和注解实现权限校验

我们用springboot做后台开发,难免会用到权限校验,比如查看当前用户是否合法,是否是管理员。而spring的面向切面的特效可以帮助我们很好的实现动态的权限校验。这里我们就用到的spring的aop。接下来就带领大家用aop和注解来快速的实现权限校验…

electron sqlite3_electron集成sqlite3,win10上折腾了2天

要看解决办法的,直接把文章滚动到最后就行了,很简单。最近要做个 IM,PC 端选择用 electron,跨端的最佳选择了。桌面端项目,肯定少不了本地数据库,本来想用 sql.js,看了下需要手动拼接 SQL 语句&…