网站跳出率高怎么办,电商平台有哪些网站名,怎么查网站是用什么语言做的,怎样自己创网站文章目录 什么是gateway如何导入gateway依赖路由配置gateway配置断路器导包配置 什么是gateway
在微服务架构中#xff0c;gateway网关是一个服务#xff0c;它作为系统的唯一入口点#xff0c;处理所有的客户端请求#xff0c;然后将这些请求路由到适当的服务。提供了几个… 文章目录 什么是gateway如何导入gateway依赖路由配置gateway配置断路器导包配置 什么是gateway
在微服务架构中gateway网关是一个服务它作为系统的唯一入口点处理所有的客户端请求然后将这些请求路由到适当的服务。提供了几个关键功能 1.请求路由根据请求的URL路径和其他参数将请求路由到正确的后端服务。 2.负载均衡在多个服务实例之间分配流量以提高可用性和可扩展性。 3.认证和授权检查用户是否有权访问特定的服务。 4.限流控制访问后端服务的请求速率以防止过载。 5.监控收集关于API使用情况的统计数据用于分析和计费。 6.日志记录记录所有通过网关的请求和响应以便进行问题排查和性能监控。 7.缓存提高响应速度和减少后端负载通过缓存常见的响应。 8.过滤检验当前的请求是否符合请求的规则。 客户端向 Spring Cloud Gateway 发出请求。如果 Gateway Handler Mapping 确定请求与路由匹配则将其发送到 Gateway Web Handler。此处理程序通过特定于该请求的过滤器链运行该请求。过滤器被虚线分开的原因是过滤器可以在发送代理请求之前和之后运行逻辑。所有“前”过滤器逻辑都会执行。然后发出代理请求。发出代理请求后运行“后”过滤器逻辑。
如何导入gateway依赖
1.导包
dependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2021.0.5/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2021.0.6.1/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency2.配置yaml文件
spring:cloud:gateway:discovery:locator:lower-case-service-id: trueenabled: truedefault-filters:- name: CircuitBreakerargs:name: myCircuitBreakerfallbackUri: forward:/fallback //默认的兜底策略routes:- id: fee-serviceuri: lb://fee-service //指定的服务predicates:- Path/query //断言路由配置
1.配置路由谓词工厂和网关过滤器工厂 配置谓词和过滤器有两种方式快捷方式和完全展开参数。 名称和参数名称将列code在每个部分的第一句或第二句中。参数通常按快捷方式配置所需的顺序列出。 快捷方式配置由过滤器名称识别后跟等号后跟用逗号分隔的参数值,。 配置文件实现
spring:cloud:gateway:routes:- id: after_routeuri: https://example.orgpredicates:- Cookiemycookie,mycookievaluejava代码实现过滤方式
Configuration
public class GateConfig {Beanpublic RouteLocator routeLocator(RouteLocatorBuilder builder) {return builder.routes().route(r - r.path(/check).filters(f - f.filter(new IpWhitelistFilter())) // 注册过滤器.uri(lb://fee-service)).build();}
}package com.umpay.config;import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;/*** author zq* data 2024-12-18*/
Configuration
Slf4j
public class IpWhitelistFilter implements GatewayFilter, Ordered {private static final String ALLOWED_IPS allowedIps;private static final String DENIED_IPS deniedIps;Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {String clientIpexchange.getRequest().getRemoteAddress().getAddress().getHostAddress();log.info(获取到的ip::{},clientIp);String responseBody {\error\: \Custom error message\};if(!1111111.equals(clientIp)){exchange.getResponse().setStatusCode(HttpStatus.BAD_REQUEST);exchange.getResponse().getHeaders().add(Content-Type, application/json);return exchange.getResponse().writeWith(Mono.just(exchange.getResponse().bufferFactory().wrap(responseBody.getBytes())));}return chain.filter(exchange);}Overridepublic int getOrder() {return 0;}
}
gateway配置断路器
导包
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-circuitbreaker-resilience4j/artifactId/dependencydependencygroupIdio.github.resilience4j/groupIdartifactIdresilience4j-feign/artifactId/dependencydependencygroupIdio.github.resilience4j/groupIdartifactIdresilience4j-reactor/artifactId/dependency配置
spring:cloud: gateway:discovery:locator:lower-case-service-id: trueenabled: truedefault-filters:- name: CircuitBreakerargs:name: myCircuitBreakerfallbackUri: forward:/fallbackroutes:- id: fee-serviceuri: lb://fee-servicepredicates:- Path/queryfilters:- name: CircuitBreakerargs:name: myCircuitBreakerfallbackUri: forward:/fallback//断路器配置resilience4j:circuitbreaker:instances:myCircuitBreaker:slidingWindowSize: 10failureRateThreshold: 50minimumNumberOfCalls: 5waitDurationInOpenState: 10s兜底接口
RestController
Slf4j
public class GateController {Autowiredprivate FeginClients feginClients;GetMapping(/fallback)public Wrapper query(){log.info(test:);return WrapperMapper.error();}
}