SpringCloud 项目搭建(六):服务路由网关搭建

六、服务路由网关

1.在父项目上面新建模块myzuul


2.选择Spring Cloud Discovery—>Eureka Discovery Client
选择Spring Cloud Routing—>Zuul


3.Module Name一般不做修改,和项目名称Artifact一样


4.将src\main\resources下面的application.properties改名为application.yml,修改文件编码方式为UTF-8,内容如下

server:
  port: 1003
spring:
  application:
    name: myzuul
  profiles:
    active: default
  zipkin:
     enabled: true
     base-url: http://localhost:9411/
     locator:
       discovery:
         enabled: true
     sender:
       type: WEB
  sleuth:
     web:
       client:
         enabled: true
     sampler:
       # 默认的采样比率为0.1,不能看到所有请求数据
       # 更改采样比率为1,就能看到所有的请求数据了,但是这样会增加接口调用延迟
       probability: 1.0
eureka:
  instance:
    lease-renewal-interval-in-seconds: 5      # 心跳时间,即服务续约间隔时间 (缺省为30s)
    lease-expiration-duration-in-seconds: 10  # 没有心跳的淘汰时间,10秒,即服务续约到期时间(缺省为90s)
    prefer-ip-address: true                   # 将IP注册到服务注册中心
  client:
    service-url:
      defaultZone: http://localhost:1024/eureka/
    fetch-registry: true # 向注册中心注册
    registry-fetch-interval-seconds: 5 # 服务清单的缓存更新时间,默认30秒一次
zuul:
  ignored-services: "*"
  strip-prefix: true  #请求转发时去掉转发路径(path中的值)
  routes:
    myservice:  #所有以/api开头的请求都转发到myservice服务
      path: /api/**
      serviceId: myservice

5.pom文件中增加依赖,并在Maven Projects里面刷新

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

6.打开src\main\java\com\li\myzuul下面的MyzuulApplication.java

在启动类上加入@EnableZuulProxy注解,开启zuul。

@EnableZuulProxy
@SpringBootApplication
public class MyzuulApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyzuulApplication.class, args);
    }

}

7.打开浏览器访问http://localhost:1003/api/getTime

8.增加安全验证,在src\main\java\com\li\myzuul下面新建包filter,新建MyFilter.java

@Component
public 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;
    }
}

8.打开浏览器访问http://localhost:1003/api/getTime?token=22

原文地址:https://www.cnblogs.com/liw66/p/12298346.html

时间: 2024-10-30 21:10:13

SpringCloud 项目搭建(六):服务路由网关搭建的相关文章

SpringCloud学习系列之七 ----- Zuul路由网关的过滤器和异常处理

前言 在上篇中介绍了SpringCloud Zuul路由网关的基本使用版本,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的路由网关的过滤器Filter以及异常处理的教程. SpringCloud Zuul Filter 介绍 过滤器概述 Zuul的中心是一系列过滤器,能够在HTTP请求和响应的路由过程中执行一系列操作. 以下是Zuul过滤器的主要特征: 类型:通常在应用过滤器时在路由流程中定义阶段(尽管它可以是任何自定义字

cenos使用源代码搭建apache服务与常见搭建问题

root#service iptables stop  #关闭防火墙root#setenforce 0  关闭安全的linux策略root#tar zxvf apache -C /usr/src/ #解压apache数据包到指定目录下root#mkdir /usr/local/apache  #创建一个文件夹,将apache安装到此文件夹下root#cd /usr/src/apache #进入解压后的apache文件夹root#./configure --prefix=/usr/local/ap

白话SpringCloud | 第十一章:路由网关(Zuul):利用swagger2聚合API文档

前言 通过之前的两篇文章,可以简单的搭建一个路由网关了.而我们知道,现在都奉行前后端分离开发,前后端开发的沟通成本就增加了,所以一般上我们都是通过swagger进行api文档生成的.现在由于使用了统一路由网关了,都希望各微服务的api文档统一的聚合在网关服务中,也方便前端用户查阅,不需要每个服务单独查看.当然了,也是可以做一个文档索引网页进行各微服务的api文档链接的.今天,我们就来讲下使用swagger实现自动化聚合微服务文档功能. 注:关于Swagger的介绍和使用,由于在之前的Spring

业余草 SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本)

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图:  注意:A服务和B服务是可以相互调用的,作图的时候忘记了.并且配置服务也是注册到服务注册中心的. 在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul.Ngnix),再到达服务网关(zuul集群),然后再到具体的服.,服务统一注册到高可用的服务注

Java springboot B2B2C o2o多用户商城 springcloud架构(五)路由网关(zuul)

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图:  注意:A服务和B服务是可以相互调用的,作图的时候忘记了.并且配置服务也是注册到服务注册中心的. 在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul.Ngnix),再到达服务网关(zuul集群),然后再到具体的服.,服务统一注册到高可用的服务注

SpringCloud(1-6)服务路由 zuul

1.pom.xml 2.application.yml 3.app 4.filter 5.

springcloud项目配置拓展从本地config目录加载

本文受阿里开源的Nacos启发,应用启动后从Nacos服务加载配置到应用中,想着本地开发的时候加载配置能否从本地存储中加载,这样也能加快开发效率 首先 我们来看下SpringCloud项目应用Nacos服务的bootstrap.yaml配置如下 spring: cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yaml discovery: server-addr: 127.0.0.1:8848 applicati

微服务SpringCloud项目架构搭建入门

Spring的微服务框架SpringCloud受到众多公司欢迎,给大家带来一篇框架搭建入门.本次采用的版本是Spring Cloud版本为Finchley.RELEASE. 一.SpringCloud项目简介 spring cloud: 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境简单,可以在开发人员的电脑上跑. Spring Boot: 旨在简化创建产品级的 Spring 应用和服务,简化了配

SpringCloud 项目搭建(三):服务配置中心搭建

三.服务配置中心搭建 1.在父项目上面新建模块myconfig 2.选择Spring Cloud Config—>Config Server 选择Spring Cloud Discovery—>Eureka Discovery Client 3.Module Name一般不做修改,和项目名称Artifact一样 4.将src\main\resources下面的application.properties改名为bootstrap.yml,修改文件编码方式为UTF-8,内容如下 server: p