springcloud学习(六)之zuul
来源:互联网 发布:下载手机淘宝2017 编辑:程序博客网 时间:2024/05/17 22:34
一、介绍
Spring Cloud Zuul路由是微服务架构的不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。
二、开发
1、新建项目hjduan.spring.cloud.zuul pom如下
<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> <parent> <groupId>com.hjduan.spring.cloud</groupId> <artifactId>hjduan.spring.cloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>hjduan.spring.cloud.zuul</artifactId> <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> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
2、application.yml配置
server: port: 8767eureka: client: serviceUrl: defaultZone: http://admin:admin@localhost:8761/eureka/ instance: prefer-ip-address: true instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}spring: application: name: hjduan-spring-cloud-zuul#zuul 充当路由zuul: routes: api-a: path: /api-a/** serviceId: HJDUAN-SPRING-CLOUD-RIBBON api-b: path: /api-b/** serviceId: HJDUAN-SPRING-CLOUD-FEIGN
3、编写一个过滤器MyFilter.java
package com.hjduan.spring.cloud.zuul.filter;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;/** * filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下: * * pre:路由之前 * * routing:路由之时 * * post: 路由之后 * * error:发送错误调用 * * filterOrder:过滤的顺序 * * shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。 * * run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。 * * 作者: 段浩杰 2017年7月25日 */@Componentpublic class MyFilter extends ZuulFilter { private static Logger log = LoggerFactory.getLogger(MyFilter.class); @Override public String filterType() { return "pre"; } @Override public int filterOrder() { return 0; } @Override public boolean shouldFilter() { return true; } @Override public Object run() { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); log.info(String.format("%s >>> %s", 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; }}
4、编写启动类
package com.hjduan.spring.cloud.zuul;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.netflix.zuul.EnableZuulProxy;@EnableZuulProxy@EnableEurekaClient@SpringBootApplicationpublic class ServiceZuulApplication { public static void main(String[] args) { SpringApplication.run(ServiceZuulApplication.class, args); }}
5、启动hjduan.spring.cloud.eureka,hjduan.spring.cloud.consumer,修改端口再次启动hjduan.spring.cloud.consumer,hjduan.spring.cloud.feign,hjduan.spring.cloud.hystrix,hjduan.spring.cloud.ribbon,hjduan.spring.cloud.zuul,然后运行http://localhost:8767/api-a/hi/123和http://localhost:8767/api-b/hi/123观察结果
阅读全文
0 0
- springcloud学习(六)之zuul
- springCloud学习05之api网关服务zuul过滤器filter
- 《SpringCloud微服务实战》学习笔记之网关服务zuul
- Zuul(SpringCloud学习笔记一)
- SpringCloud学习笔记-zuul网关
- springcloud实战之11路由网关(zuul)
- SpringCloud Zuul
- SpringCloud--zuul
- Zuul (SpringCloud学习笔记一) 转
- springcloud入门之路由网关zuul
- springCloud学习03之api服务网关zuul反向代理及重试配置
- springCloud学习04之api服务网关zuul回退fallback
- 如何用springcloud找妹纸之8--- 世界那么大,我想随心所欲去寻找(Zuul)
- SpringCloud(第 018 篇)Zuul 服务 API 网关微服务之代理与反向代理
- spring cloud之zuul路由网关(六)
- springcloud----Zuul动态路由
- SpringCloud: 路由网关(zuul)
- SpringCloud第六篇-Zuul
- 玲珑 1145
- java反射
- 实现一个多线程断点文件下载工具
- 探究java的finally和return的执行顺序
- 【CSS 基础】07 拉手网导航栏的实现
- springcloud学习(六)之zuul
- 丑数
- 1032. Sharing (25)
- 日历程序
- 推荐!手把手教你使用Git
- OpenWrt配置(UCI)
- python any()和all()用法
- JSON--前台数据转换
- day07 -文件管理