springcloud之服务网关gateway

简介: springcloud之服务网关gateway

文章目录

简介

Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代Netflflix,Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。

gateway快速入门

术语

Route: The basic building block of the gateway. It is defined by an ID, a destination URI, a collection of predicates, and a collection of filters. A route is matched if the aggregate predicate is true.

Predicate: This is a Java 8 Function Predicate. The input type is a Spring Framework ServerWebExchange. This lets you match on anything from the HTTP request, such as headers or parameters.

Filter: These are instances of GatewayFilter that have been constructed with a specific factory. Here, you can modify requests and responses before or after sending the downstream request.

主要设置路由的id,uri路由的目标地址,以及路由的断言,以及过滤。

需要添加依赖

<!--引入gateway网关-->

       <dependency>

           <groupId>org.springframework.cloud</groupId>

           <artifactId>spring-cloud-starter-gateway</artifactId>

       </dependency>

       <!--nacos客户端-->

       <dependency>

           <groupId>com.alibaba.cloud</groupId>

           <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

           <version>2.1.0.RELEASE</version>

       </dependency>


yml配置

server:

 port: 8089

#配置应用的名字

spring:

 application:

   name: springcloud-gateway

 cloud:

   nacos:

     discovery:

       server-addr: 192.168.5.130:8848

   gateway:

     discovery:

       locator:

         enabled: true  # 让gateway可以发现nacos中的微服务

     ### 此处我们配置我们自己订单模块,商品模块,用户模块的配置

     routes:   #路由数组[路由 就是指定当请求满足什么条件的时候转到哪个微服务]

         ##用户模块

       - id: springcloud-order

         uri: lb://springcloud-order  #服务请求转发

         #uri: http://localhost:8083  #服务请求转发

         predicates:

          - Path=/springcloud-order/**

        ##商品模块

       - id: springcloud-product

         uri: lb://springcloud-product  #服务请求转发

         predicates:

          - Path=/springcloud-product/**

        ##用户模块

       - id: springcloud-user

         uri: lb://springcloud-user  #服务请求转发

         #uri: http://localhost:8081  #服务请求转发

         predicates:

          - Path=/springcloud-user/**

跨域配置

目前阶段因为都是本地本机开发不涉及跨域问题,如果服务部署在不通的服务器,就涉及跨域问题,网关可以统一的配置跨域访问问题。

@Configuration

public class CorsConfig {

   //处理跨域

   @Bean

   public CorsWebFilter corsFilter() {

       CorsConfiguration config = new CorsConfiguration();

       config.addAllowedMethod("*");

       config.addAllowedOrigin("*");

       config.addAllowedHeader("*");

       UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());

       source.registerCorsConfiguration("/**", config);

       return new CorsWebFilter(source);

   }

}

其他配置 可以参考官网进行配置测试。

相关文章
|
2月前
|
负载均衡 算法 Java
【SpringCloud(4)】OpenFeign客户端:OpenFeign服务绑定;调用服务接口;Feign和OpenFeign
Feign是一个WebService客户端。使用Feign能让编写WebService客户端更加简单。 它的使用方法是定义一个服务接口然后再上面添加注解。Feign也支持可拔插式的编码器和解码器。SpringCloud对Feign进行了封装,十七支持了SpringMVC标准注解和HttpMessageConverters。 Feign可用于Eureka和Ribbon组合使用以支持负载均衡
648 138
|
3月前
|
存储 缓存 负载均衡
Gateway 网关坑我! 被这个404 问题折腾了一年?
小富分享了一个困扰团队一年多的 SpringCloud Gateway 路由 404 问题。通过日志追踪和源码分析,发现是网关在 Nacos 配置更新后未能正确清理旧的路由权重缓存,导致负载均衡时仍使用已删除的路由数据。最终通过监听路由刷新事件并手动更新缓存,成功解决了问题。
723 125
Gateway 网关坑我! 被这个404 问题折腾了一年?
|
2月前
|
机器学习/深度学习 Kubernetes API
【Azure APIM】自建网关(self-host gateway)收集请求的Header和Body内容到日志中的办法
在Azure API Management中,通过配置trace策略可完整记录API请求的Header和Body信息。在Inbound和Outbound策略中分别使用context.Request/Response.Headers和Body.As&lt;string&gt;方法捕获数据,并写入Trace日志,便于排查与审计。
116 7
|
4月前
|
API
使用Gateway with Inference Extension路由外部MaaS服务
本文介绍如何通过Gateway with Inference Extension对接百炼服务,实现请求路由时自动添加API Key并重写路径,包含操作步骤及验证方法。
|
4月前
|
安全 虚拟化
Omnissa Secure Email Gateway 2.33 - 电子邮件网关
Omnissa Secure Email Gateway 2.33 - 电子邮件网关
104 0
|
6月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
335 14
|
6月前
|
Java API Nacos
|
12月前
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
783 8
|
12月前
|
API
Istio 使用ingress和gateway两种方式公开服务
本文档指导您完成Istio网关的部署与配置。首先安装`istiod`(步骤略过)。接着,创建`ingress.yaml`文件,定义Istio入口网关的服务、部署及权限设置,通过`kubectl apply -f ingress.yaml`命令应用。最后,创建Ingress资源,指定主机名、后端服务及TLS配置,实现对外部请求的路由管理。
1019 1
|
负载均衡 Java API
项目中用的网关Gateway及SpringCloud
Spring Cloud Gateway 是一个功能强大、灵活易用的API网关解决方案。通过配置路由、过滤器、熔断器和限流等功能,可以有效地管理和保护微服务。本文详细介绍了Spring Cloud Gateway的基本概念、配置方法和实际应用,希望能帮助开发者更好地理解和使用这一工具。通过合理使用Spring Cloud Gateway,可以显著提升微服务架构的健壮性和可维护性。
661 0