一、Zuul简介

Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。

需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六

zuul有以下功能:

Authentication

Insights

Stress Testing

Canary Testing

Dynamic Routing

Service Migration

Load Shedding

Security

Static Response handling

Active/Active traffic management

二、创建service-zuul工程

pom.xml文件如下

<?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.forezp</groupId><artifactId>service-zuul</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>service-zuul</name><description>Demo project for Spring Boot</description><parent><groupId>com.forezp</groupId><artifactId>sc-f-chapter5</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency></dependencies>
</project>复制代码

在其入口applicaton类加上注解@EnableZuulProxy,开启zuul的功能:

@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
@EnableDiscoveryClient
public class ServiceZuulApplication {public static void main(String[] args) {SpringApplication.run( ServiceZuulApplication.class, args );}
}
复制代码

加上配置文件application.yml加上以下的配置代码:

eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/
server:port: 8769
spring:application:name: service-zuul
zuul:routes:api-a:path: /api-a/**serviceId: service-ribbonapi-b:path: /api-b/**serviceId: service-feign
复制代码

首先指定服务注册中心的地址为http://localhost:8761/eureka/,服务的端口为8769,服务名为service-zuul;以/api-a/ 开头的请求都转发给service-ribbon服务;以/api-b/开头的请求都转发给service-feign服务;

依次运行这五个工程;打开浏览器访问:http://localhost:8769/api-a/hi?name=forezp ;浏览器显示:

hi forezp,i am from port:8762

打开浏览器访问:http://localhost:8769/api-b/hi?name=forezp ;浏览器显示:

hi forezp,i am from port:8762

这说明zuul起到了路由的作用

三、服务过滤

zuul不仅只是路由,并且还能过滤,做一些安全验证。继续改造工程;

@Component
public class MyFilter extends ZuulFilter {private static Logger log = LoggerFactory.getLogger(MyFilter.class);@Overridepublic String filterType() {return "pre";}@Overridepublic int filterOrder() {return 0;}@Overridepublic boolean shouldFilter() {return true;}@Overridepublic 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;}
}
复制代码

filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:

pre:路由之前

routing:路由之时

post: 路由之后

error:发送错误调用

filterOrder:过滤的顺序

shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。

run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。

这时访问:http://localhost:8769/api-a/hi?name=forezp ;网页显示:

token is empty

访问 http://localhost:8769/api-a/hi?name=forezp&token=22 ;

网页显示:

hi forezp,i am from port:8762

java B2B2C springmvc mybatis电子商务平台源码

转载于:https://juejin.im/post/5ca56ef0e51d450be558f903

java B2B2C Springboot电子商城系统-路由网关(zuul)相关推荐

  1. java B2B2C Springboot电子商城系统

    大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 需要JAVA Spring Cloud大型企业分布式 ...

  2. java B2B2C Springboot电子商城系统 (六) 分布式配置中心(Spring Cloud Config)

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring ...

  3. java B2B2C Springcloud电子商城系统-通过消息队列传输zipkin日志

    一.zipkin服务端配置 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 1.引入依赖 //===========消息队列方式的依 ...

  4. java B2B2C Springcloud电子商城系统-Spring Cloud常见问题与总结(四)

    一.Spring Cloud定位问题思路总结 Spring Cloud进入Camden时代后,已经比较稳定.一般来说,问题都不是Spring Cloud本身的Bug导致.建议按照如下步骤进行定位.需要 ...

  5. java B2B2C Springcloud电子商城系统-Ribbon设计原理

    Ribbon 是netflix 公司开源的基于客户端的负载均衡组件,是Spring Cloud大家庭中非常重要的一个模块:Ribbon应该也是整个大家庭中相对而言比较复杂的模块,直接影响到服务调度的质 ...

  6. java B2B2C Springcloud电子商城系统-断路器(Hystrix)

    原理 在微服务架构中,服务之间形成调用链路,链路中的任何一个服务提供者都可能面临着相应超时.宕机等不可用的情况,在高并发的情况下,这种情况会随着并发量的上升恶化,形成"雪崩效应", ...

  7. java B2B2C Springcloud电子商城系统--------负载均衡(Load Balance)

    负载均衡(Load Balance) 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担.在此情况下,如果扔 ...

  8. java毕业生设计电子商城系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计电子商城系统计算机源码+系统+mysql+调试部署+lw java毕业生设计电子商城系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  9. java b2b2c shop 多用户商城系统源码- eureka集群整合hystrix框架

    继之前项目继续整合hystrix框架,hystrix框架为Netflix的模块,是一个容错框架.当用户访问服务调用者的时候,如果服务提供者出现异常导致无法正常返回出现请求超时的情况,而服务调用者并不知 ...

最新文章

  1. R语言四格表的统计分析及假设检验
  2. 关于Delegate 和 MulticastDelegate的实现
  3. Servlet -- 重定向
  4. CentOS下yum安装rabbitMQ
  5. 8、python基础知识-用户输入
  6. HDU - 6641 TDL(数学)
  7. oracle 每日归档量,小知识:统计Oracle的日归档量
  8. Python基础(三)文件操作和处理json
  9. 软件工程复习提纲——第九章
  10. 使用XmlPullParser解析XML
  11. Hystrix都停更了,我为什么还要学?
  12. 图:Flash渲染控件安装失败原因所在.
  13. 计算机硬件的基本结构和工作原理
  14. Nginx ACCESS日志过滤CSS JS 图片等静态文件——筑梦之路
  15. arduino动态刷新显示_玩家国度XG27UQ绝影游戏显示器评测:DSC加持的满血4K显示器...
  16. UE4.CPP变焦推进效果(_杰森大师)
  17. Linux SD卡/SDIO驱动开发-dw_mci_probe
  18. OpenCV-Python (官方)中文教程(部分四)
  19. iOS网络NSURLSession使用详解
  20. 20170628总结

热门文章

  1. 运动会计算机系,秋季运动会计算机系总结计划 (12页)-原创力文档
  2. amd自定义分辨率_Intel首款独显性能走光:AMD/NVIDIA芒刺在背
  3. MySQL的安装、启动、停止、卸载
  4. 剑指offer面试题[60]-将二叉树打印成多行
  5. 数据库里的小知识❤️
  6. matlab 三维转二维,求助,二维图像如何绕轴旋转成为三维图像
  7. 播放列表php代码,【求助】如何直接在Discuz! 代码 FLASH代码中添加优酷播放列表...
  8. python中构造方法和析构方法的区别_基于Python构造方法与析构方法的研究
  9. r语言 index_基于R语言绘制BBC风格图表
  10. 服务器搭建成虚拟空间,服务器搭建虚拟空间