基于SpEL在Spring Cloud Gateway中实现全维度灰度路由

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于SpEL在Spring Cloud Gateway中实现全维度灰度路由相关的知识,希望对你有一定的参考价值。

参考技术A

这些数据来自于Nacos配置中心,headerKeys是以逗号分割的header属性,即client对象中所需header key(并不是全部),rules是自定义的路由规则,可动态修改。

数据都有了,可规则有两条,又该适用哪条呢?本例按照List的有序性作为优先级(大家可以根据自己的业务需要自行决定),遍历规则时使用的就是SpEL来做的解析,代码如下:

都写了注释,就不过多解释了,这里只解析了一个条件,即clientCondition,下面是解析serverCondition的代码:

这里主要就是一个ramda表达式,可以说,这差不多就是这篇文章的核心的代码了,其余的都是辅助手段。

场景2:同城/异地多活平滑切换

验证同样符合预期。

以上是关于基于SpEL在Spring Cloud Gateway中实现全维度灰度路由的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Cloud Dataflow 中引用属性

Spring Cloud Gateway 和 TokenRelay 过滤器

Spring Cloud Gateway 过滤器中直接返回错误结果信息

249.Spring Boot+Spring Security:基于URL动态权限:扩展access()的SpEL表达式

Spring Cloud Gateway RCE

Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)