- 浏览: 499032 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
spring cloud zuul 使用
1.可以实现请求路由(nginx、F5)和请求过滤(spring filter)功能
2.zuul可以实现高可用性,通过nginx放到其前部就可以实现了
请求路由
请求过滤
测试地址:
http://localhost:8766/zuul/ribbon/CallTest/test
http://localhost:8766/zuul/feign/CallTest/test
http://localhost:8766/zuul/ribbon/CallTest/test?token=xing
http://localhost:8766/zuul/feign/CallTest/test?token=xing
http://localhost:8766/zuul/eurekaClient/Test/test?token=xing
https://blog.csdn.net/justlpf/article/details/80422843(zuul灰度发布功能实现,金丝雀发布)
1.可以实现请求路由(nginx、F5)和请求过滤(spring filter)功能
2.zuul可以实现高可用性,通过nginx放到其前部就可以实现了
请求路由
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.midea</groupId> <artifactId>base</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>base</name> <!-- 设定仓库,按设定顺序进行查找. --> <!--<repositories> <repository> <id>public</id> <name>Team Nexus Repository</name> <url>http://10.33.183.113:8081/nexus/content/groups/public</url> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>public</id> <name>Team Nexus Repository</name> <url>http://10.33.183.113:8081/nexus/content/groups/public</url> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </pluginRepository> </pluginRepositories> --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.4.0</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> </build> </project>
server.port=8766 #logging.pattern.level=INFO #服务器路径 server.context-path=/zuul # #eureka.instance.hostname=localHost #表示是否注册自身到eureka服务器,因为当前这个应用就是eureka服务器,没必要注册自身,所以这里是false。 #eureka.client.registerWithEureka=false #fetchRegistry表示是否从eureka服务器获取注册信息,同上,这里不需要 #eureka.client.fetchRegistry=false #设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。 #eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ eureka.client.serviceUrl.defaultZone=http\://localhost\:8761/eurekaServer/eureka/ spring.application.name=zuul ##====================传统路由方式======================== ##访问的路径(“/myusers/*”只能匹配一个层级,但"/myusers/**"可以匹配多级.) #zuul.routes.ribbonTest.path=/ribbonTest/** ##转发到的URL(如:http://localhost:8766/ribbonTest/CallTest/test 会转发到 http://localhost:8764/ribbon/CallTest/test) #zuul.routes.ribbonTest.url=http://localhost:8764/ribbon/ ##访问的路径 #zuul.routes.feignTest.path=/feignTest/** #zuul.routes.feignTest.url=http://localhost:8765/feign/ #====================面向服务路由方式======================== #访问的路径 zuul.routes.ribbonTest.path=/ribbon/** #转发到的URL(如:http://localhost:8766/ribbonTest/CallTest/test 会转发到 http://localhost:8764/ribbon/CallTest/test) zuul.routes.ribbonTest.serviceId=ribbon #如果为true(或不设置)则/ribbon/**中的/ribbon/去掉,否则会在转发中出会加入 zuul.routes.ribbonTest.stripPrefix=false #访问的路径 zuul.routes.feignTest.path=/feign/** zuul.routes.feignTest.serviceId=feign zuul.routes.feignTest.stripPrefix=false #访问的路径 zuul.routes.eurekaClientTest.path=/eurekaClient/** zuul.routes.eurekaClientTest.serviceId=eureka-Client zuul.routes.eurekaClientTest.stripPrefix=false
package com; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.cloud.netflix.hystrix.EnableHystrix; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @SpringBootApplication //spring boot 开启应用 //@EnableDiscoveryClient //Discovery Service”有多种实现,比如:eureka, consul, zookeeper。 @EnableEurekaClient //只能为eureka作用 @EnableZuulProxy //开启zuul public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
请求过滤
package com.filter; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; @Component public class MyFilter extends ZuulFilter { private static Logger log = LoggerFactory.getLogger(MyFilter.class); // filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下: // pre:路由之前 // routing:路由之时 // post: 路由之后 // error:发送错误调用 @Override public String filterType() { return "pre"; } // filterOrder:过滤的顺序 @Override public int filterOrder() { return 0; } // shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。 @Override public boolean shouldFilter() { return true; } // run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。 @Override public Object run() { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); log.info(request.getMethod() + " , " + request.getRequestURL().toString()); Object accessToken = request.getParameter("token"); if (accessToken == null) { log.warn("token is empty"); ctx.setSendZuulResponse(false); ctx.setResponseStatusCode(401); try { ctx.getResponse().getWriter().write("token is empty"); } catch (Exception e) { } return null; } log.info("ok"); return null; } }
测试地址:
http://localhost:8766/zuul/ribbon/CallTest/test
http://localhost:8766/zuul/feign/CallTest/test
http://localhost:8766/zuul/ribbon/CallTest/test?token=xing
http://localhost:8766/zuul/feign/CallTest/test?token=xing
http://localhost:8766/zuul/eurekaClient/Test/test?token=xing
https://blog.csdn.net/justlpf/article/details/80422843(zuul灰度发布功能实现,金丝雀发布)
发表评论
-
分布式跟踪系统
2017-07-18 11:21 434分布式跟踪系统 Zipkin(分服务端和客户端) 1.服务 ... -
spring cloud config 加密使用
2017-06-29 09:49 2153spring cloud config 加密使用 数据不加密 ... -
spring cloud config 高可用的分布式配置中心(Spring Cloud Config)
2017-06-28 09:29 506spring cloud config 高可用的分布式配置中心 ... -
spring cloud config client 使用
2017-06-28 08:42 752spring cloud config client 使用 ... -
spring cloud config service 使用
2017-06-28 08:35 657spring cloud config service 使用 ... -
Hystrix 断路器
2017-06-27 10:56 625Hystrix 断路器 由于网络原因或者自身的原因,服务并不 ... -
spring cloud feign方式使用服务
2017-06-26 15:17 746spring cloud feign方式使用服务 feig ... -
spring cloud ribbon方式使用服务
2017-06-26 14:32 419spring cloud ribbon方式使用服务 < ... -
spring cloud 向 eureka 注册服务
2017-06-26 11:41 488spring cloud 向 eureka 注册服务 &l ... -
spring cloud eureka 服务搭建
2017-06-26 10:41 358spring cloud eureka 服务搭建 注册服务默 ...
相关推荐
在进行SpringCloud zuul的使用时,通常需要以下步骤: 1. 添加依赖:在项目中引入Spring Cloud的Zuul相关依赖。 2. 配置路由:在配置文件中定义路由规则,指定哪些请求应该被转发到哪个服务。 3. 编写过滤器:根据...
SpringCloud Zuul是基于Spring Cloud框架的一个核心组件,它扮演着API网关的角色,负责路由转发、过滤器处理以及安全控制等任务。Zuul的主要功能包括动态路由、过滤器机制、安全控制、负载均衡、健康检查等。下面将...
**Spring Cloud Zuul** 是一个基于 Spring Framework 和 Netflix Zuul 的边缘服务工具,它作为微服务架构中的边缘服务器,提供动态路由、流量控制、安全、监控等功能。Zuul 主要是作为 API 网关,它负责处理所有来自...
要使用 Spring Cloud Zuul 完成路由转发的功能,需要进行以下准备工作: 1. 注册中心(Eureka Server):创建一个 Eureka Server,只需要在主函数上添加 @EnableEurekaServer 注解,并在 properties 文件进行简单...
SpringCloud Zuul Gateway 服务网关是Spring Cloud生态系统中的一个重要组件,它主要负责微服务架构中的路由转发和过滤器功能。Zuul是Netflix开源的一个边缘服务,而Gateway则是Spring Cloud针对Zuul进行的升级版,...
在本实例中,我们主要探讨的是Spring Cloud框架中的几个关键组件——Zuul、Config、Eureka和Ribbon,这些都是微服务架构中的重要工具。让我们逐一解析这些组件及其作用。 首先,Spring Cloud Config是一个集中式的...
spring cloud 客户端和spring cloud zuul ,和前面的两个是一个系列,先打开cloud service 的服务,然后打开 product ,在打开客户端,最后可以打开zuul 可以实现eurake的负载均衡,zuul的负载均衡。
本篇文章将深入探讨如何使用Spring Cloud Zuul实现动态路由,并通过实际的代码示例——"Spring Cloud Zuul动态路由demo"来展示这一功能。 1. **Zuul简介** Zuul是Netflix开源的一个边缘服务,主要功能包括路由转发...
springcloud zuul 网关开发实践,模拟了在Spring Cloud微服务系统中,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服的实现过程。
Zuul是Spring Cloud生态中的一个关键组件,它扮演着边缘服务的角色,负责微服务间的路由转发和过滤器功能。本文将深入探讨Spring Cloud Zuul在微服务架构中的应用和重要性。 1. **Zuul简介** Zuul是Netflix开源的...
spring-cloud-zuul:Spring Cloud Zuul使用高级篇 Filter 鉴权 熔断 重试 spring-cloud-sleuth-zipkin: 利用Sleuth、Zipkin对Spring Cloud应用进行服务追踪分析 spring-boot-admin-eureka: 使用Spring Boot Admin ...
在本篇学习笔记中,我们将深入探讨Spring Cloud框架中的一个重要组件——Spring Cloud Zuul,它作为微服务架构中的路由网关和负载均衡器。Spring Cloud是基于Java的微服务工具集,它为开发者提供了在分布式系统(如...
Spring Cloud Zuul 是 Spring Cloud Netflix 子项目的核心组件之一,可以作为微服务架构中的 API 网关使用,支持动态路由与过滤功能。API 网关为微服务架构中的服务提供了统一的访问入口,客户端通过 API 网关访问...
在本篇学习笔记中,我们将深入探讨Spring Cloud框架中的一个重要组件——Spring Cloud Zuul,它是一个强大的路由网关。Zuul的主要职责是为微服务架构提供统一的入口,进行请求过滤、路由转发等操作,使得后端服务对...
Spring Cloud Zuul是基于Spring Boot实现的微服务网关,它提供路由转发、过滤器等功能,使得客户端可以方便地访问到后端微服务。在这个示例中,Zuul与Consul结合,使得Zuul能够动态地发现注册在Consul中的服务,实现...
在深入探讨Spring Cloud和微服务构建的过程中,Spring Cloud Zuul是一个关键组件,它扮演着路由网关和熔断器的角色。本文将详细讲解Zuul的功能、原理以及如何在Spring Boot应用中集成和配置。 首先,Spring Cloud ...
SpringCloud Zuul 实现动态路由 Zuul 是在 Spring Cloud Netflix 平台上提供动态路由、监控、弹性、安全等边缘服务的框架,是 Netflix 基于 JVM 的路由器和服务器端负载均衡器,相当于是设备和 Netflix 流应用的 ...