ribbon使用eureka的meta进行动态路由
2017-07-24 12:29
316 查看
序
使用eureka的元数据信息,再配上ribbon的路由功能,就可以在api-gateway实现很多功能,比如灰度测试、生产调试等等。下面介绍一下,怎么使用jmnarloch大神提供的ribbon-discovery-filter-spring-cloud-starter,利用简单的几行代码搞定这一切。maven
<dependency> <groupId>io.jmnarloch</groupId> <artifactId>ribbon-discovery-filter-spring-cloud-starter</artifactId> <version>2.1.0</version> </dependency>
eureka元数据配置
eureka: instance: metadataMap: tag: pre-prod
[/code]
路由
@Component public class DynamicRoutesFilter extends ZuulFilter { private static final Logger LOGGER = LoggerFactory.getLogger(DynamicRoutesFilter.class); @Override public String filterType() { return "pre"; } @Override public int filterOrder() { return 0; } @Override public boolean shouldFilter() { return true; } @Override public Object run() { RequestContext requestContext = RequestContext.getCurrentContext(); HttpServletRequest request = requestContext.getRequest(); String tag = request.getHeader("tag"); if(tag != null){ RibbonFilterContextHolder.getCurrentContext().add("tag", tag); } return null; } }
根据请求的tag,路由到标记有指定tag值的服务。注意,如果请求不指定tag,则代码需要判空一下,另外不指定tag的话,则默认所有同名的服务都会被路由到。
访问需要在header上指定tag
doc
Spring Cloud: Ribbon dynamic routing相关文章推荐
- ribbon使用eureka的meta进行动态路由
- SpringCloud(第 011 篇)电影Ribbon微服务,脱离Eureka使用配置listOfServers进行客户端负载均衡调度
- SpringCloud(第 011 篇)电影Ribbon微服务,脱离Eureka使用配置listOfServers进行客户端负载均衡调度
- 实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程
- 实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程
- SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)
- Ribbon脱离Eureka使用
- 详解Spring cloud使用Ribbon进行Restful请求
- 服务注册发现Eureka之三:Spring Cloud Ribbon实现客户端负载均衡(客户端负载均衡Ribbon之三:使用Ribbon实现客户端的均衡负载)
- springcloud 中使用eureka/ribbon/Hystrix负载均衡及断路器
- SpringCloud使用eureka(rest)和ribbon实现服务调用和负载均衡
- spring cloud 使用Eureka 进行服务治理方法
- SpringCloud(第 006 篇)电影微服务,使用 Ribbon 在客户端进行负载均衡
- Spring Cloud Eureka 使用 IP 地址进行服务注册
- 使用Eureka, Ribbon, Feign实现REST服务客户端
- SpringCloud(第 008 篇)电影微服务,使用 application.yml 配置文件配置 Ribbon 在客户端进行负载均衡调度算法
- SpringCloud(第 013 篇)电影微服务使用定制化 Feign 在客户端进行负载均衡调度并为 Feign 配置帐号密码登录认证 Eureka
- QVariant(相当于是Java里面的Object,起到一个数据类型“擦除”的作用,可以使用Q_DECLARE_METATYPE进行注册)
- SpringCloud(第 007 篇)电影微服务,使用定制化 Ribbon 在客户端进行负载均衡,使用 RibbonClient 不同服务不同配置策略
- SpringCloud(第 008 篇)电影微服务,使用 application.yml 配置文件配置 Ribbon 在客户端进行负载均衡调度算法