当前位置: 首页 > news >正文

松江网站建设公司怎么样全网营销推广软件

松江网站建设公司怎么样,全网营销推广软件,开发网址需要多少钱,天津企业模板建站哪个好Spring Cloud Gateway 详解:构建高效的API网关解决方案 Spring Cloud Gateway 是 Spring Cloud 生态系统中用于构建 API 网关的核心组件。它基于 Spring WebFlux 构建,旨在提供简单且有效的方式来路由和增强 API 请求。以下是 Spring Cloud Gateway 的详…

Spring Cloud Gateway 详解:构建高效的API网关解决方案

Spring Cloud Gateway 是 Spring Cloud 生态系统中用于构建 API 网关的核心组件。它基于 Spring WebFlux 构建,旨在提供简单且有效的方式来路由和增强 API 请求。以下是 Spring Cloud Gateway 的详细解释:
CSDN开发云

核心概念

1. 路由(Route)

路由是 Spring Cloud Gateway 的基本构建块。每个路由包含一个 ID、一个目标 URI、一组断言和一组过滤器。路由的配置决定了哪些请求会被转发到哪个服务。

2. 断言(Predicate)

断言用于匹配进入网关的请求。Spring Cloud Gateway 提供了多种内置断言,如路径断言、方法断言、头部断言等。例如,Path 断言可以匹配 URL 路径。

3. 过滤器(Filter)

过滤器用于在请求和响应过程中对请求进行修改。过滤器有两类:全局过滤器和局部过滤器。全局过滤器对所有路由生效,局部过滤器只对特定路由生效。常见的过滤器包括修改请求头、修改响应头、重写路径等。

配置示例

路由配置

以下是一个基本的配置示例:

spring:cloud:gateway:routes:- id: example_routeuri: http://example.orgpredicates:- Path=/example/**filters:- AddRequestHeader=X-Request-Foo, Bar

在这个例子中,所有路径匹配 /example/** 的请求会被转发到 http://example.org,并且在请求头中添加 X-Request-Foo: Bar。

断言工厂

Spring Cloud Gateway 提供了多种断言工厂:

  • Path: 匹配请求路径。
  • Method: 匹配 HTTP 方法。
  • Header: 匹配请求头。
  • Query: 匹配查询参数。

例如:

predicates:- Path=/foo/**- Method=GET- Header=X-Request-Id, \d+- Query=foo, ba.*

过滤器工厂

常用的过滤器工厂包括:

  • AddRequestHeader: 添加请求头。
  • AddRequestParameter: 添加请求参数。
  • RewritePath: 重写路径。
  • StripPrefix: 去除路径前缀。

例如:

filters:- AddRequestParameter=foo, bar- RewritePath=/foo/(?<segment>.*), /${segment}- StripPrefix=1

自定义过滤器

您还可以创建自定义过滤器。实现 GlobalFilter 接口并注入 Spring 容器即可。例如:

import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;@Component
public class CustomGlobalFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 在此处添加您的逻辑return chain.filter(exchange);}@Overridepublic int getOrder() {return -1;}
}

高级特性

负载均衡

Spring Cloud Gateway 可以与 Spring Cloud LoadBalancer 集成来实现负载均衡。例如:

spring:cloud:gateway:routes:- id: lb_routeuri: lb://service-idpredicates:- Path=/loadbalance/**

熔断器

Spring Cloud Gateway 可以与 Resilience4j 集成来实现熔断器模式。例如:

spring:cloud:gateway:routes:- id: circuitbreaker_routeuri: http://example.orgpredicates:- Path=/circuitbreaker/**filters:- name: CircuitBreakerargs:name: myCircuitBreakerfallbackUri: forward:/fallback

安全

Spring Cloud Gateway 可以与 Spring Security 集成来保护路由。例如:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.web.server.SecurityWebFilterChain;@Configuration
@EnableWebFluxSecurity
public class SecurityConfig {@Beanpublic SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {http.authorizeExchange().pathMatchers("/secure/**").authenticated().anyExchange().permitAll().and().oauth2Login();return http.build();}
}

与 Sentinel 集成

引入依赖

在 pom.xml 文件中引入 Sentinel 的依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

配置 Sentinel

在 application.yml 中进行基本配置:

spring:cloud:sentinel:transport:dashboard: localhost:8080port: 8719

在网关路由中启用 Sentinel

通过配置文件:

spring:cloud:gateway:routes:- id: example_routeuri: http://example.orgpredicates:- Path=/example/**filters:- name: Sentinelargs:blockHandler: com.example.gateway.sentinel.CustomBlockHandler.handleException

定义 BlockHandler

创建一个自定义的 BlockHandler 来处理被 Sentinel 限流或降级的请求:

package com.example.gateway.sentinel;import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.BlockRequestHandler;
import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpResponse;
import reactor.core.publisher.Mono;import javax.annotation.PostConstruct;
import java.nio.charset.StandardCharsets;@Configuration
public class CustomBlockHandler {@PostConstructpublic void init() {BlockRequestHandler blockRequestHandler = (exchange, t) -> {ServerHttpResponse response = exchange.getResponse();response.setStatusCode(HttpStatus.TOO_MANY_REQUESTS);response.getHeaders().setContentType(MediaType.APPLICATION_JSON);String data = "{\"code\":429,\"message\":\"Too Many Requests - Custom BlockHandler\"}";DataBuffer buffer = response.bufferFactory().wrap(data.getBytes(StandardCharsets.UTF_8));return response.writeWith(Mono.just(buffer));};GatewayCallbackManager.setBlockHandler(blockRequestHandler);}
}

总结

Spring Cloud Gateway 是一个功能强大且灵活的 API 网关解决方案,适用于微服务架构。它提供了丰富的内置功能和易于扩展的架构,能够满足大多数企业应用的需求。通过断言和过滤器的组合,开发者可以轻松实现复杂的路由和请求处理逻辑。同时,通过与 Sentinel 等工具的集成,可以进一步增强系统的稳定性和高可用性。

http://www.hkea.cn/news/746895/

相关文章:

  • 美国 做网站免费网站建设哪家好
  • 如何做响应式布局网站seo搜索引擎优化期末及答案
  • 电脑系统优化软件十大排名北京网优化seo公司
  • 宁夏网站建设优化外贸网站优化推广
  • 开发网站开发工程师培训心得简短200字
  • 网站优化工具升上去软文营销代理
  • 北京监理协会培训网站变现流量推广app
  • 邯郸做wap网站最全bt搜索引擎入口
  • 用网站做自我介绍pptsem推广竞价托管
  • 建设网站项目的目的是什么意思营销型网站方案
  • 濮阳网站建设价格南昌seo排名收费
  • jsp做网站案例steam交易链接在哪里看
  • 做网站需要招聘内容范本信息流广告
  • 如何建公众号外贸网站建设优化
  • 怎么把网站横幅做很大东莞营销推广公司
  • 网站运营与管理实训报告松松软文平台
  • 奉化云优化seo手机网站排名优化软件
  • h5响应式集团网站推荐电商平台有哪些?
  • 企业所得税税率三个档次关键词优化快排
  • 长宁区网站建设b2b免费发布平台
  • php 个人网站网站安全检测工具
  • 做的网站很卡是什么原因seochan是什么意思
  • 怎么做盗版视频网站吗百度权重1
  • 政府网站 建设 计划品牌推广策划方案案例
  • 临沂网站建设那家好小米市场营销案例分析
  • 德化网站建设企业中层管理人员培训课程
  • 网站怎么通过流量赚钱爱站网能不能挖掘关键词
  • 网站建设课后感营销型网站有哪些平台
  • 哪个网站做生鲜配送厦门seo外包公司
  • 水电行业公司设计logo重庆seo排名扣费