网站建设 应酷,什么查看WordPress的用户名及密码,简述网站制作的一般流程,wordpress 信息录入积分和人民币比率从应用程序的旧版本迁移到应用程序的现代化版本时#xff0c;一个非常常见的要求是能够将用户缓慢迁移到新应用程序。 在本文中#xff0c;我将介绍通过Spring Cloud使用对Netflix Zuul的支持编写的这种路由层。 在继续之前#xff0c;我必须承认#xff0… 积分和人民币比率 从应用程序的旧版本迁移到应用程序的现代化版本时一个非常常见的要求是能够将用户缓慢迁移到新应用程序。 在本文中我将介绍通过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积分和人民币比率