`
wx1569020408
  • 浏览: 26830 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Spring Cloud 之服务网关

 
阅读更多

服务网关(API GATEWAY)

服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。

1. 引入依赖spring-cloud-starter-zuul、spring-cloud-starter-eureka

2. 启动类使用@EnableZuulProxy注解,开启Zuul

3. 这里用了@SpringCloudApplication注解,之前没有提过,通过源码我们看到,它整合了@SpringBootApplication、@EnableEurekaClient、@EnableCircuitBreaker

4. 配置yml文件:

spring.application.name=api-gateway

server.port=50001

服务路由

通过服务路由的功能,我们在对外提供服务的时候,只需要通过暴露Zuul中配置的调用地址就可以让调用方统一的来访问我们的服务,而不需要了解具体提供服务的主机信息了。

在Zuul中提供了两种映射方式:

1. 通过url直接映射,例如yml配置:

zuul.routes.api-a-url.path=/api-a-url/**

zuul.routes.api-a-url.url=http://localhost:18443/

说明: 其中,配置属性zuul.routes.api-a-url.path中的api-a-url部分为路由的名字,可以任意定义,但是一组映射关系的path和url要相同,下面讲serviceId时候也是如此。

2. 通过serviceId的映射,例如yml配置:

zuul.routes.api-a.path=/api-a/**

zuul.routes.api-a.serviceId=service-A

zuul.routes.api-b.path=/api-b/**

zuul.routes.api-b.serviceId=service-B

eureka.client.serviceUrl.defaultZone=http://localhost:10001/eureka/

推荐使用serviceId的映射方式,除了对Zuul维护上更加友好之外,serviceId映射方式还支持了断路器,对于服务故障的情况下,可以有效的防止故障蔓延到服务网关上而影响整个系统的对外服务

权限验证

1. 使用过滤器

服务网关中定义过滤器只需要继承ZuulFilter抽象类实现其定义的四个抽象函数就可对请求进行拦截与过滤。

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

pre:可以在请求被路由之前调用

routing:在路由请求时候被调用

post:在routing和error过滤器之后被调用

error:处理请求时发生错误时被调用

filterOrder:通过int值来定义过滤器的执行顺序

shouldFilter:返回一个boolean类型来判断该过滤器是否要执行,所以通过此函数可实现过滤器的开关。在上例中,我们直接返回true,所以该过滤器总是生效。

run:过滤器的具体逻辑。需要注意,这里我们通过ctx.setSendZuulResponse(false)令zuul过滤该请求,不对其进行路由,然后通过ctx.setResponseStatusCode(401)设置了其返回的错误码,当然我们也可以进一步优化我们的返回,比如,通过ctx.setResponseBody(body)对返回body内容进行编辑等。

2. 使用拦截器

在拦截器中进行鉴权判断

实例源码: api-gateway

转载于:https://my.oschina.net/superwind20/blog/1524160

分享到:
评论

相关推荐

    springcloud实现gate网关转发功能和整合websocket源码

    在本文中,我们将深入探讨如何使用Spring Cloud Gateway实现网关转发功能,并整合WebSocket源码,以便在微服务架构中提供高效、灵活的数据通信。首先,让我们先了解一下Spring Cloud Gateway及其重要性。 Spring ...

    springcloud zuul网关服务

    SpringCloud Zuul是基于Spring Cloud框架的一个核心组件,它扮演着API网关的角色,负责路由转发、过滤器处理以及安全控制等任务。Zuul的主要功能包括动态路由、过滤器机制、安全控制、负载均衡、健康检查等。下面将...

    Java之 Spring Cloud 微服务搭建网关(第三个阶段)【一】.zip

    在本教程中,我们将深入探讨如何使用Spring Cloud构建微服务网关,这是Spring Cloud生态中的一个关键组件。Spring Cloud提供了一套工具集,用于简化分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、...

    springcloud Gateway网关-压测用.zip

    SpringCloud Gateway作为一款现代化的微服务网关,它在企业级分布式系统中扮演着至关重要的角色。这个名为"springcloud Gateway网关-压测用.zip"的压缩包包含了一个用于性能测试的配置,目的是评估和优化Gateway的...

    Spring Cloud实战 _springcloud实战_springcloud_

    Spring Cloud Gateway是新一代的API网关,它替代了Zuul,提供了更强大的路由规则、过滤器等功能,能够更灵活地处理请求和响应。 此外,Spring Cloud OpenFeign是声明式服务调用的组件,简化了服务之间的调用,使得...

    spring cloud 使用Zuul 实现API网关服务问题

    Spring Cloud 使用 Zuul 实现 API 网关服务问题 在本文中,我们将主要介绍如何使用 Spring Cloud 的 Zuul 组件来实现 API 网关服务问题。 Zuul 是一个基于 Netflix Zuul 的 API 网关组件,它可以解决路由规则和服务...

    springcloud zuul gateway 服务网关

    SpringCloud Zuul Gateway 服务网关是Spring Cloud生态系统中的一个重要组件,它主要负责微服务架构中的路由转发和过滤器功能。Zuul是Netflix开源的一个边缘服务,而Gateway则是Spring Cloud针对Zuul进行的升级版,...

    spring-cloud项目_springcloud_springcloud项目_springcloud_spring-clou

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    springcloud下通过gateway转发websocket

    在IT行业中,Spring Cloud Gateway作为Spring Cloud生态体系中的一个关键组件,被广泛用于构建微服务架构中的API网关。这个框架允许我们集中处理各种请求,包括路由、过滤、安全等,极大地简化了服务间的通信。而...

    Spring Cloud之一 Spring Cloud简介

    Spring Cloud 是一个基于Spring Boot实现的云应用开发工具集,为开发人员提供了一套快速构建分布式系统中一些常见模式的工具,包括服务发现、配置管理、消息总线、负载均衡、断路器、网关等。它所依赖的基础是Spring...

    尚硅谷SpringCloud第2季2020版.mmap

    一篇很好的springCloud学习的思维导读,详细的介绍了,springCloud的搭建步骤以及各组件的说明讲解 涵盖 Eureka服务注册与发现 Zookeeper服务注册与发现 Consul服务注册与发现 Ribbon负载均衡服务调用 OpenFeign...

    springCloud-master_单点登录_springCloud单点登录_SpringCloud系统_springclou

    综上所述,"springCloud-master"项目中涉及了SpringCloud环境下的SSO实现,主要涵盖了OAuth2或JWT的身份验证机制、Eureka服务发现、Zuul或Spring Cloud Gateway的网关角色,以及微服务间的通信和安全性考量。...

    springcloud视频学习

    2. SpringBoot与SpringCloud的结合:SpringBoot简化了Spring应用的初始搭建和配置过程,而SpringCloud则是基于SpringBoot实现的一套微服务解决方案,两者结合可以快速构建微服务应用。 3. 创建并部署第一个Spring...

    SpringCloud微服务、链路跟踪、分布式配置、分布式网关

    这个压缩包文件包含了SpringCloud的一些核心功能的示例,包括服务注册与发现、链路跟踪、分布式配置以及分布式网关等关键组件。 1. **服务注册与发现**:在SpringCloud中,Eureka是常用的服务注册与发现组件。它...

    SpringCloud基础教程

    SpringCloud是中国Java开发者广泛使用的微服务框架之一,它基于Spring Boot进行快速构建,并提供了众多用于构建分布式系统的服务发现、配置管理、负载均衡、断路器等核心功能。本基础教程旨在帮助初学者全面理解并...

    Spring Cloud应用程序.zip

    本篇文章将深入探讨在"Spring Cloud应用程序.zip"中包含的关键技术点,包括Eureka服务注册与发现、服务间的调用、负载均衡策略、API服务网关以及分布式配置管理。 首先,Eureka是Spring Cloud中的核心组件之一,它...

    基于Springcloud的基础框架,统一gateWay网关鉴权demo,附下载地址

    基于Springcloud的基础框架,统一gateWay网关鉴权demo,附下载地址 使用方法具体见:https://blog.csdn.net/a1139628523/article/details/132664763

    spring cloud视频教程

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具包,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    springCloud学习手册.zip

    Zuul和Gateway作为SpringCloud的API网关,它们处理所有来自客户端的请求,进行路由转发,过滤,安全控制等操作。它们能够减少内部服务间的通信复杂性,同时提供统一的入口。 SpringCloud Config则是用来实现配置...

Global site tag (gtag.js) - Google Analytics