springcloud路由网关

一、什么是网关

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

二、搭建SpringCloud网关

  2.1 创建工程service-zuul 目录展示

2.2 导入依赖 

  1. <!--eureka依赖-->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.cloud</groupId>
  8. <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
  9. </dependency>
  10.  
  11. <dependencyManagement>
  12. <dependencies>
  13. <!--springCloud依赖-->
  14. <dependency>
  15. <groupId>org.springframework.cloud</groupId>
  16. <artifactId>spring-cloud-dependencies</artifactId>
  17. <version>Greenwich.RELEASE</version>
  18. <type>pom</type>
  19. <scope>import</scope>
  20. </dependency>
  21.  
  22. </dependencies>
  23. </dependencyManagement>

2.3 application.yml配置文件

2.4 StartSpringCloudZuul启动类

  1. package com.zn;
  2.  
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
  6. import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
  7.  
  8. @EnableEurekaClient
  9. @SpringBootApplication
  10. @EnableZuulProxy
  11. public class StartSpringCloudZuul {
  12. public static void main(String[] args) {
  13. SpringApplication.run(StartSpringCloudZuul.class,args);
  14. }
  15. }

2.5 效果展示

SpringCloud服务过滤filter

一、目录展示

  

二、application.yml配置文件

  

三、MyZuulFilter

  1. package com.zn.filter;
  2.  
  3. import com.netflix.zuul.ZuulFilter;
  4. import com.netflix.zuul.context.RequestContext;
  5. import com.netflix.zuul.exception.ZuulException;
  6. import org.springframework.stereotype.Component;
  7.  
  8. import javax.servlet.http.HttpServletRequest;
  9. import java.io.IOException;
  10.  
  11. @Component
  12. public class MyZuulFilter extends ZuulFilter {
  13.  
  14. /**
  15. * 过滤类型
  16. * @return
  17. */
  18. @Override
  19. public String filterType() {
  20. return "pre";
  21. }
  22.  
  23. /**
  24. * 请求过滤顺序
  25. * @return
  26. */
  27. @Override
  28. public int filterOrder() {
  29. return 0;
  30. }
  31.  
  32. @Override
  33. public boolean shouldFilter() {
  34. return true;
  35. }
  36.  
  37. @Override
  38. public Object run() throws ZuulException {
  39. //获取token参数
  40. RequestContext rc = RequestContext.getCurrentContext();
  41. HttpServletRequest request = rc.getRequest();
  42.  
  43. String token = request.getParameter("token");
  44. if (token!=null){
  45. return null;
  46. }
  47. //表示不进行路由
  48. rc.setSendZuulResponse(false);
  49. rc.setResponseStatusCode(401);
  50. rc.getResponse().setContentType("text/html;charset=utf-8");
  51. try {
  52. rc.getResponse().getWriter().write("没有传递正确参数,请校验后重试!");
  53. } catch (IOException e) {
  54. e.printStackTrace();
  55. }
  56. return null;
  57. }
  58. }

四、StartSpringCloudZuul启动类

  1. package com.zn;
  2.  
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
  6. import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
  7.  
  8. @EnableEurekaClient
  9. @SpringBootApplication
  10. @EnableZuulProxy
  11. public class StartSpringCloudZuul {
  12. public static void main(String[] args) {
  13. SpringApplication.run(StartSpringCloudZuul.class,args);
  14. }
  15. }

五、效果展示

    

springcloud(二)的更多相关文章

  1. springcloud(二):注册中心Eureka

    Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...

  2. springcloud(二):Eureka服务注册与发现

    Spring Cloud Netflix  该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix ...

  3. springcloud(二) eureka的使用

    上一节讲到order微服务是通过rest调用user微服务的地址.但是,user微服务的地址是写死的, 如果user微服务集群的话,那么order微服务该如何调用呢?这个时候注册中心该上场了 演示eu ...

  4. 《springcloud 二》微服务动态网关,网关集群

    动态网关    实际上是网关和分布式配置中心的整合,通过post手动刷新,生效 动态网关 传统方式将路由规则配置在配置文件中,如果路由规则发生了改变,需要重启服务器.结合整合SpringCloud C ...

  5. SpringCloud(二) 服务注册与发现Eureka

    1.eureka是干什么的? 上篇说了,微服务之间需要互相之间通信,那么通信就需要各种网络信息,我们可以通过使用硬编码的方式来进行通信,但是这种方式显然不合适,不可能说一个微服务的地址发生变动,那么整 ...

  6. 浅谈SpringCloud (二) Eureka服务发现组件

    上面学习到了如何由一个程序访问另一个程序,那么如果使用SpringCloud来进行访问,该如何访问呐? 可以借助Eureka服务发现组件进行访问. 可以借助官方文档:https://spring.io ...

  7. SpringCloud(二)笔记之Eureka

    Eureka包含两个组件:Eureka Server和Eureka Client Eureka Server:提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册 Eureka ...

  8. springcloud(二) 微服务架构编码构建

    微服务架构编码构建 1 基础知识 1.1 版本 2 微服务cloud整体聚合父工程Project 2.1 new project 2.2 字符编码设置 utf-8 2.3 pom.xml 2.4 父工 ...

  9. SpringCloud(二) - Eureka注册中心,feign远程调用,hystrix降级和熔断

    1.项目模块介绍 2. 父项目 主要依赖 spring-cloud 的 版本控制 <properties> <!-- springCloud 版本 --> <scd.ve ...

随机推荐

  1. JAVA知识点总结篇(二)

    数组 一维数组 声明 数据类型[] 数组名: 数据类型 数组名[]: 分配空间 数组名 = new 数据类型 [数组长度]: 可以在声明的同时分配空间,分配空间之后数组中才能放数据,数组元素都是通过下 ...

  2. 使用码云或GitHub搭建简单的个人网站

    视频链接:https://www.bilibili.com/video/av64294697 码云: 1.新建一个仓库      ​ 路径名会影响你的个人网站的网址(自行修改),开源(公开),其他默认 ...

  3. nginx通过自定义header属性来转发不同的服务

    一.背景 因为需要上线灰度发布,只要nginx接收到头部为: wx_unionid: 就会跳转到另外一个url,比如: 通过配置nginx 匹配请求头wx_unionid 来转发到灰度环境.核心:客户 ...

  4. 2019 顺网游戏java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.顺网游戏等公司offer,岗位是Java后端开发,因为发展原因最终选择去了顺网游戏,入职一年时间了,也成为了面 ...

  5. C++ Primer Plus(第6版)习题(第二章)

    1..编写一个C++程序,它显示您的姓名和地址. #include<iostream> using namespace std; int main() { string name,addr ...

  6. procfs、debugfs

    procfs 是进程文件系统(file system) 的缩写,包含一个伪文件系统,用于通过内核访问进程信息 这个文件系统通常被挂载到 /proc 目录.由于 /proc 不是一个真正的文件系统,它也 ...

  7. 【Tomcat】虚拟主机

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDepl ...

  8. Pandas 数据筛选,去重结合group by

    Pandas 数据筛选,去重结合group by 需求 今小伙伴有一个Excel表, 是部门里的小伙9月份打卡记录, 关键字段如下: 姓名, 工号, 日期, 打卡方式, 时间, 详细位置, IP地址. ...

  9. Jupyter Notebook修改默认的工作目录

    Jupyter Notebook修改默认的工作目录 方法1:通过配置文件修改 只适合从命令行启动notebook生成配置文件,如果你已经在windows环境变量中设置好了jupyter noteboo ...

  10. MySQL-CentOS7上安装Mysql5.7

    #安装 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm .noarch.rpm yum instal ...