java B2B2C Springboot电子商城系统-路由网关(zuul)
一、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)相关推荐
- java B2B2C Springboot电子商城系统
大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 需要JAVA Spring Cloud大型企业分布式 ...
- java B2B2C Springboot电子商城系统 (六) 分布式配置中心(Spring Cloud Config)
2019独角兽企业重金招聘Python工程师标准>>> 一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring ...
- java B2B2C Springcloud电子商城系统-通过消息队列传输zipkin日志
一.zipkin服务端配置 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 1.引入依赖 //===========消息队列方式的依 ...
- java B2B2C Springcloud电子商城系统-Spring Cloud常见问题与总结(四)
一.Spring Cloud定位问题思路总结 Spring Cloud进入Camden时代后,已经比较稳定.一般来说,问题都不是Spring Cloud本身的Bug导致.建议按照如下步骤进行定位.需要 ...
- java B2B2C Springcloud电子商城系统-Ribbon设计原理
Ribbon 是netflix 公司开源的基于客户端的负载均衡组件,是Spring Cloud大家庭中非常重要的一个模块:Ribbon应该也是整个大家庭中相对而言比较复杂的模块,直接影响到服务调度的质 ...
- java B2B2C Springcloud电子商城系统-断路器(Hystrix)
原理 在微服务架构中,服务之间形成调用链路,链路中的任何一个服务提供者都可能面临着相应超时.宕机等不可用的情况,在高并发的情况下,这种情况会随着并发量的上升恶化,形成"雪崩效应", ...
- java B2B2C Springcloud电子商城系统--------负载均衡(Load Balance)
负载均衡(Load Balance) 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担.在此情况下,如果扔 ...
- java毕业生设计电子商城系统计算机源码+系统+mysql+调试部署+lw
java毕业生设计电子商城系统计算机源码+系统+mysql+调试部署+lw java毕业生设计电子商城系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开发语言: ...
- java b2b2c shop 多用户商城系统源码- eureka集群整合hystrix框架
继之前项目继续整合hystrix框架,hystrix框架为Netflix的模块,是一个容错框架.当用户访问服务调用者的时候,如果服务提供者出现异常导致无法正常返回出现请求超时的情况,而服务调用者并不知 ...
最新文章
- R语言四格表的统计分析及假设检验
- 关于Delegate 和 MulticastDelegate的实现
- Servlet -- 重定向
- CentOS下yum安装rabbitMQ
- 8、python基础知识-用户输入
- HDU - 6641 TDL(数学)
- oracle 每日归档量,小知识:统计Oracle的日归档量
- Python基础(三)文件操作和处理json
- 软件工程复习提纲——第九章
- 使用XmlPullParser解析XML
- Hystrix都停更了,我为什么还要学?
- 图:Flash渲染控件安装失败原因所在.
- 计算机硬件的基本结构和工作原理
- Nginx ACCESS日志过滤CSS JS 图片等静态文件——筑梦之路
- arduino动态刷新显示_玩家国度XG27UQ绝影游戏显示器评测:DSC加持的满血4K显示器...
- UE4.CPP变焦推进效果(_杰森大师)
- Linux SD卡/SDIO驱动开发-dw_mci_probe
- OpenCV-Python (官方)中文教程(部分四)
- iOS网络NSURLSession使用详解
- 20170628总结
热门文章
- 运动会计算机系,秋季运动会计算机系总结计划 (12页)-原创力文档
- amd自定义分辨率_Intel首款独显性能走光:AMD/NVIDIA芒刺在背
- MySQL的安装、启动、停止、卸载
- 剑指offer面试题[60]-将二叉树打印成多行
- 数据库里的小知识❤️
- matlab 三维转二维,求助,二维图像如何绕轴旋转成为三维图像
- 播放列表php代码,【求助】如何直接在Discuz! 代码 FLASH代码中添加优酷播放列表...
- python中构造方法和析构方法的区别_基于Python构造方法与析构方法的研究
- r语言 index_基于R语言绘制BBC风格图表
- 服务器搭建成虚拟空间,服务器搭建虚拟空间