springboot+Zuul网关服务

   点关注不迷路,欢迎再来!

精简博客内容,尽量已专业术语来分享。
努力做到对每一位认可自己的读者负责。
帮助别人的同时更是丰富自己的良机。

网关服务有效的降低维护路由规则与服务实例列表的难度。它的存在就像是整个微服务架构系统的门面一样,所有的外部客户端都需要经过它来进行调度和过滤。
一.先创建一个Eureka-Server服务注册中心
回顾上节知识:springboot集成Eureka注册中心(四)

二.创建EurekaClient和EurekaCustom服务
回顾 springboot+Ribbon客户端负载均衡(七) ,可以复制源码,直接启动服务即可。

三.创建EurekaZuul服务
1.pom.xml配置

     <!-- Zuul --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency>

2.配置application.yml文件

eureka:client:serviceUrl: #注册中心的注册地址defaultZone: http://127.0.0.1:8081/eureka/
server:port: 8085  #服务端口号
spring:application:name: service-zuul #服务名称--调用的时候根据名称来调用该服务的方法   zuul:routes:users:path: /api-client/** #以api-client开头的路径被重定向到service-client服务,/**表示匹配任意数量字符,支持多级目录serviceId: service-client

3.配置启动类引入@EnableZuulProxy

/*** 开启Zuul的API* @author andy**/@EnableZuulProxy
@SpringBootApplication
public class EurekaZuulApplication {public static void main(String[] args) {SpringApplication.run(EurekaZuulApplication.class, args);}
}

4.访问serverZuul看看效果

因为我们在配置服务路由时对/api-client/**请求过滤
访问http://127.0.0.1:8085/api-client/client/index ,看结果会不会转发到service-client

从结果可以看出我们通过设置的请求过滤并成功的转发service-client,有小伙伴可能发现页面会报错不用担心,如果你回头看 springboot+Ribbon客户端负载均衡(七) 你就会明白是因为接口睡眠超时引起的,重新刷新页面就OK了。

5.编写过滤器AccessFilter

/*** 过滤器配置类* @author andy*/
@Configuration
public class AccessFilter extends ZuulFilter{private Logger logger = LogManager.getLogger(AccessFilter.class.getName());@Overridepublic boolean shouldFilter() {    //判断是否需要被过滤return true;}@Overridepublic Object run() throws ZuulException {RequestContext ctx = RequestContext.getCurrentContext();HttpServletRequest request = ctx.getRequest();logger.info("send {}  request to {}",request.getMethod(),request.getRequestURI().toString());String token = request.getParameter("accessToken");if(token==null) {logger.warn("access token is empty");ctx.setSendZuulResponse(false);ctx.setResponseStatusCode(401);return null;}logger.info("access token ok");return null;}@Overridepublic String filterType() {   //过滤类型return "pre";}@Overridepublic int filterOrder() {     //过滤执行顺序return 0;}
}

自定义过滤器之后,并不会直接生效,还需要为其创建具体的Bean

/*** 开启Zuul的API* @author andy**/@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class EurekaZuulApplication {public static void main(String[] args) {SpringApplication.run(EurekaZuulApplication.class, args);}//将过滤器注入到容器中@Beanpublic AccessFilter accessFilters() {return new AccessFilter();}}

再次访问http://127.0.0.1:8085/api-client/client/index



到这里说明过滤器已经生效。所以为了避免将某些非业务性代码,冗余的逻辑从原有的微服务中拆分出来,冗余的拦截器或过滤器,更好的做法是通过前置的网关服务来完成这些非业务性质的校验。

springboot+Zuul网关服务相关推荐

  1. Zuul网关服务使用详解

    1.微服务架构所面临的问题? 1)针对某个功能,客户端在微服务架构的情况下需要请求多个模块接口 2)针对于身份认证.日志.流量控制等公共模块每个微服务都需要做一遍,不利于业务与非业务的拆分 针对于这些 ...

  2. SpringCloud之Zuul网关服务

    Zuul是spring cloud中的微服务网关.网关: 是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务.也 ...

  3. SpringBoot以及网关服务配置部署和发布

    云服务 aliyunCloud,tencentCloud ...... 做任何事情之前,先考虑以下几个方面: 1细节决定成败 2墨菲定律 一.工具管理服务搭建 1.Maven搭建    ...... ...

  4. SpringCloud 之 Zuul 网关搭建及配置

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:Anakki blog.csdn.net/qq_29 ...

  5. SpringCloud Zuul 网关搭建及配置

    目录 一.Zuul网关 二.Zuul服务的前期准备 2.1 注册中心EurekaServer的搭建 2.2 EurekaService的搭建 三.Zuul服务搭建 五.Zuul的访问 六.Zuul的更 ...

  6. properties 配置回车_非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!...

    本文同步Java知音社区,专注于Java 作者:kosamino http://www.cnblogs.com/jing99/p/11696192.html Zuul是spring cloud中的微服 ...

  7. 网关的作用是什么_SpringCloud中Zuul网关原理及其配置,看它就够了

    正文 Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务 ...

  8. 非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!

    作者:kosamino www.cnblogs.com/jing99/p/11696192.html Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首 ...

  9. properties 配置回车_非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了! - 风平浪静如码

    Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务.也是 ...

最新文章

  1. python非贪婪、多行匹配正则表达式例子[转载]
  2. 求13-23+33……-1003(3.6)(Java)
  3. python中查看显卡状态
  4. IDEA创建方法时快速添加注释
  5. 【2012百度之星/初赛下】A:度度熊就是要刷排名第一
  6. Oracle数据库如何查看当前用户角色权限及默认表空间
  7. 谭浩强C语言程序设计 学习辅导练习题
  8. oracle 基于备份 duplicate 没有目标连接,RMAN 概述及其体系结构
  9. apache图片cache容量_apache利用mod_cache缓存图片等
  10. ICLR2021有什么值得关注的投稿?这些高赞论文先睹为快
  11. 区块链开发_比特币开发1
  12. IHttpHandler给图片加水印
  13. spring异常+自定义以及使用
  14. 蚂蚁课堂视频笔记思维导图-3期 三、性能优化专题
  15. lammps免费学习资料汇总
  16. 隐藏水滴屏的软件_手机隐藏水滴屏的APP
  17. 【错误记录】编译 Linux 内核报错 ( Unable to find the ncurses package. )
  18. 操作系统(存储管理)
  19. 【FreeRTOS】11 软件定时器
  20. Ubuntu系统环境

热门文章

  1. android 7图标大小,Android快捷方式位图启动器图标大小
  2. 为什么说入职国企也能越混越好?局外人不懂,内行人明白这4点
  3. 图书管理系统(纯C语言)
  4. C/C++图书管理系统[2023-02-04]
  5. 立竿见影的思维利器——“黄金思维圈”
  6. 传说之下计算机音乐大全,传说之下同人音乐
  7. 对数字化转型的部分认知(一)
  8. SAP QM检验批常见问题及解决办法
  9. CUBEMX STM32F105RB U盘读写详细教程
  10. easy excel date 类型解析报错_9 个绝对用得上的excel日期公式,赶紧拿走!