积分和人民币比率

从应用程序的旧版本迁移到应用程序的现代化版本时,一个非常常见的要求是能够将用户缓慢迁移到新应用程序。 在本文中,我将介绍通过Spring Cloud使用对Netflix Zuul的支持编写的这种路由层。 在继续之前,我必须承认,此处演示的大多数代码都是与最高级的丁少珍合作编写的。

情境

我有一个旧服务,它已被重新设计为一个更现代的版本(假设作为此迁移的一部分,端点的uri并未更改)。 我想将用户从旧版应用程序缓慢迁移到现代版本。

使用Spring Cloud Netflix实施– Zuul支持

使用Spring Cloud项目中的Netflix Zuul支持可以轻松实现这一目标。

Zuul由一组过滤器驱动,这些过滤器在对后端的请求之前(前置过滤器),期间(路由过滤器)和之后(后过滤器)处理请求。 Spring Cloud将其自定义过滤器集添加到Zuul,并通过如下配置来驱动这些过滤器的行为:

zuul:routes:ratio-route:path: /routes/**strip-prefix: false

这指定Zuul将使用前缀“ / routes”处理对Uri的请求,并且不会从下游调用中删除此前缀。 该逻辑被编码为“ PreDecorationFilter” 。 我的目标是在PreDecorationFilter之后对请求执行操作,并将后端指定为旧版或新版。 在此情况下,对请求起作用的过滤器如下所示:

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
...@Service
public class RatioBasedRoutingZuulFilter extends ZuulFilter {public static final String LEGACY_APP = "legacy";public static final String MODERN_APP = "modern";private Random random = new Random();@Autowiredprivate RatioRoutingProperties ratioRoutingProperties;@Overridepublic String filterType() {return "pre";}@Overridepublic int filterOrder() {return FilterConstants.PRE_DECORATION_FILTER_ORDER + 1;}@Overridepublic boolean shouldFilter() {RequestContext ctx = RequestContext.getCurrentContext();return ctx.containsKey(SERVICE_ID_KEY)&& ctx.get(SERVICE_ID_KEY).equals("ratio-route");}@Overridepublic Object run() {RequestContext ctx = RequestContext.getCurrentContext();if (isTargetedToLegacy()) {ctx.put(SERVICE_ID_KEY, LEGACY_APP);} else {ctx.put(SERVICE_ID_KEY, MODERN_APP);}return null;}boolean isTargetedToLegacy() {return random.nextInt(100) < ratioRoutingProperties.getOldPercent();}
}

通过覆盖filterOrder()方法,可以将过滤器设置为在“ PreDecorationFilter”之后执行操作。 路由逻辑相当幼稚,但在大多数情况下都可以使用。 解析serviceId之后,Spring Cloud将使用Ribbon来路由请求,并且仅出于变化目的,我在传统呼叫中使用已配置的url,在现代后端呼叫中使用了Eureka。 如果您有兴趣探索整个应用程序,可以在我的github存储库中找到

在完成整个设置后,通过对旧版处理20%的流量进行的小测试,可以确认过滤器有效地工作:

结论

Spring Cloud对Netflix Zuul的支持使处理这样的路由方案变得轻而易举,并且应该非常适合具有他们可能想要实现的这类路由方案的任何组织。

翻译自: https://www.javacodegeeks.com/2017/05/ratio-based-routing-legacy-modern-app-netflix-zuul-via-spring-cloud.html

积分和人民币比率

积分和人民币比率_通过比率路由到旧版和现代应用程序–通过Spring Cloud的Netflix Zuul...相关推荐

  1. 基于比率的路由到旧版和现代应用程序–通过Spring Cloud的Netflix Zuul

    从应用程序的旧版本迁移到应用程序的现代化版本时,一个非常普遍的要求是能够将用户缓慢迁移到新应用程序. 在本文中,我将介绍通过Spring Cloud使用对Netflix Zuul的支持编写的这种路由层 ...

  2. winserver2016 401您无权使用所提供的凭据查看此目录或页面_不用找了,30分钟帮你搞定使用 Spring Cloud 和 Docker 轻松构建微服务架构!...

    点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] [编者的话]如何使用Spring Boot.Spring Cloud.Docker和Netflix的一些开源工具来构建一个微服务架构.本文 ...

  3. 青柠开车Spring Cloud(五) —— spring cloud的窗口zuul(路由和过滤器)

    项目源码github地址 什么是zuul 快速入门 zuul项目基本配置 将zuul加入eureka-server中,实现高可用 什么是zuul zuul在之前我举得例子中,担任的是警察的角色.准确的 ...

  4. java ee的小程序_用微服务和容器替换旧版Java EE应用程序服务器

    java ee的小程序 Lightbend最近对2000多个JVM开发人员进行了一项调查,结果刚刚发布. 开展该调查的目的是发现:发展趋势与IT基础架构趋势之间的相关性,处于数字化转型前沿的组织如何使 ...

  5. Spring Cloud【Finchley】-16 Zuul的路由配置

    文章目录 概述 路由配置 1.忽略指定的微服务 2.自定义微服务的访问路径 3.忽略所有微服务,只用路由指定微服务 4.同时指定微服务的serviceId和对应路径 5.同时指定微服务的URL和对应路 ...

  6. springcloud 组件_深入理解 Spring Cloud 核心组件与底层原理

    新人大礼包,30G Java架构资料,免费领取​zhuanlan.zhihu.com 一.Spring Cloud核心组件:Eureka Netflix Eureka Eureka详解 1.服务提供者 ...

  7. 网关 跨域_好文推荐:微服务网关实战—Spring Cloud Gateway

    作者:博云BoCloud| 前言 作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用. ...

  8. 积分商城系统开发_专业提供积分商城系统定制解决方案

    积分商城系统开发_专业提供积分商城系统定制解决方案 一.什么是积分商城? 1.积分商城的第一种理解,偏重于"积分".即积分商城是专门为消化"积分"这一奖励而特设 ...

  9. 读财报:存活能力之“现金流量比率”“现金流量允当比率”

    如何判断一家公司是否值得入手 现在中国股市中大多数参与者其实并没有什么基于事实依据的理性思考,很多时候只是凭借着感觉或者不知道哪儿来的所谓"机密消息"就下手买进一只股票.这样的人往 ...

最新文章

  1. PHP对于浮点型的数据需要用不同的方法去解决
  2. mysql常见面试题(持续更新)
  3. php 读取stdclass,json - 在php中读取stdclass的问题?
  4. SQL Server 中@@IDENTITY的用法
  5. python导入csv文件-Python从CSV文件导入数据和生成简单图表
  6. Python高手之路【二】python基本数据类型
  7. 王荣刚:视频画质评定是个“大坑”
  8. python课程设计矩阵对角线之和_在python中如何求矩阵对角线上下元素的和?
  9. Activity 半透明样式
  10. RequireJS模块化后JS压缩合并
  11. Android音乐播放器-使用FFmpeg及OpenSLES
  12. 中国移动java项目_Java Web开发-项目部分(中国移动科技综合管理系统)视频——私塾在线提供...
  13. 抢滩新零售混战 实力战将才不惧双十一 附:双十一红包雨时间表
  14. android 电视 vob格式转换,佳佳Android视频格式转换器
  15. Linux驱动之----Linux2.6方式设备注册
  16. 密码学之PRP/PRF转换引理
  17. 3-2-1法建立零件坐标系
  18. 树莓派3下Python调用斑马GK888t打印机
  19. pgsql执行分析explain结果分析
  20. 威纶通触摸屏宏指令GetData和SetData函数的使用方法示例

热门文章

  1. [USACO19JAN,Platinum] Redistricting
  2. 51nod-动物与游戏【树链剖分,线段树】
  3. P5299-[PKUWC2018]Slay the Spire【dp】
  4. P4201-[NOI2008]设计路线【结论,树形dp】
  5. YbtOJ#20060-[NOIP2020模拟赛B组Day3]字串修改【模拟】
  6. 【最短路】【Dijkstra】【图论】最小花费(jzoj 2125)
  7. 【动态规划】书的复制 (ssl 1203)
  8. codeforces D.MADMAX 动态规划、记忆化搜索
  9. Java集合面试问题
  10. 重要说明,粉丝必看【java人脸识别说明】