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

wordpress 新网站 代码深圳关键词排名首页

wordpress 新网站 代码,深圳关键词排名首页,wordpress 简书模板,wordpress主题防止破解在微服务架构中,API网关是系统的唯一入口。本文将展示如何通过Spring Cloud Gateway实现静态路由配置,采用Maven多模块管理,无需服务发现即可构建高效网关系统。为什么选择静态路由?动态路由依赖服务发现组件(如Nacos、…

在微服务架构中,API网关是系统的唯一入口。本文将展示如何通过Spring Cloud Gateway实现静态路由配置,采用Maven多模块管理,无需服务发现即可构建高效网关系统。

为什么选择静态路由?

动态路由依赖服务发现组件(如Nacos、Eureka),而静态路由具有以下优势:

  1. 零依赖:不依赖任何服务注册中心

  2. 高性能:减少服务发现网络开销

  3. 简单性:配置直观,易于维护

  4. 快速启动:适合中小型项目快速落地

项目结构设计

parent-project(聚合工程)
├── pom.xml
├── user-service  # 用户服务(8081)
├── order-service # 订单服务(8082)
└── api-gateway   # 网关服务(8080)  # 核心模块

一、父模块配置(聚合工程)

pom.xml - 统一管理依赖和版本

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.dafu</groupId><artifactId>parent-project</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>user-service</module><module>api-gateway</module><module>order-service</module></modules><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><springboot.version>2.6.3</springboot.version></properties><dependencyManagement><dependencies><!--  引入springboot依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${springboot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud 依赖管理 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
</project>

二、网关模块(核心实现)

1. 依赖配置(api-gateway/pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.dafu</groupId><artifactId>parent-project</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>api-gateway</artifactId><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Gateway 核心依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency></dependencies>
</project>

2. 静态路由配置(application.yml) 

server:port: 8080spring:application:name: api-gatewaycloud:gateway:routes:# 用户服务路由- id: user-serviceuri: http://localhost:8081/predicates:- Path=/user-api/**filters:- StripPrefix=1# 订单服务路由- id: order-serviceuri: http://localhost:8082/predicates:- Path=/order-api/**filters:- StripPrefix=1# 配置httpclient连接池httpclient:pool:max-connections: 500acquire-timeout: 2000

3. 全局过滤器(RequestLoggingFilter.java) 

package com.dafu.filter;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;/*** @author:DaFu* @date: 2025/7/30 9:06*/
@Component
public class RequestLoggingFilter implements GlobalFilter, Ordered {private static final Logger logger = LoggerFactory.getLogger(RequestLoggingFilter.class);@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request = exchange.getRequest();logger.info("请求入口 => 方法: {}, 路径: {}, 来源: {}",request.getMethod(),request.getPath(),request.getRemoteAddress());return chain.filter(exchange);}@Overridepublic int getOrder() {return Ordered.HIGHEST_PRECEDENCE;}
}

4. 跨域配置(CorsConfig.java) 

package com.dafu.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;import java.util.Arrays;/*** @author:DaFu* @date: 2025/7/30 9:18*/
@Configuration
public class CorsConfig {@Beanpublic CorsWebFilter corsWebFilter() {CorsConfiguration config = new CorsConfiguration();config.setAllowedOrigins(Arrays.asList("*"));config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));config.setAllowedHeaders(Arrays.asList("*"));config.setExposedHeaders(Arrays.asList("X-Gateway-Response", "X-Request-ID"));UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", config);return new CorsWebFilter(source);}
}

三、用户服务模块(示例服务)

1. 服务配置(application.yml)

server:port: 8081spring:application:name: user-service

2. 依赖配置(user-service/pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.dafu</groupId><artifactId>parent-project</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>user-service</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

 3. 控制器实现(UserController.java)

package com.dafu.controller;import org.springframework.web.bind.annotation.*;/*** @author:DaFu* @date: 2025/7/29 15:19*/
@RequestMapping("/users")
@RestController
public class UserController {@GetMapping("/{id}")public UserResponse getUser(@PathVariable Long id) {return new UserResponse(id,"用户" + id,"user" + id + "@example.com");}public static class UserResponse {Long id;String name;String email;public UserResponse(Long id, String name, String email) {this.id = id;this.name = name;this.email = email;}// getter and setter}}

三、订单服务模块(示例服务)

1. 服务配置(application.yml)

server:port: 8082spring:application:name: order-service

 2. 依赖配置(user-service/pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.dafu</groupId><artifactId>parent-project</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>order-service</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

 3. 控制器实现(OrderController.java) 

package com.dafu.controller;import org.springframework.web.bind.annotation.*;/*** @author:DaFu* @date: 2025/7/29 15:19*/
@RequestMapping("/order")
@RestController
public class OrderController {@GetMapping("/{id}")public OrderResponse getProduct(@PathVariable Long id) {return new OrderResponse(id,"订单" + id,99.99 + id);}public static class OrderResponse {Long id;String name;double price;public OrderResponse(Long id, String name, double price) {this.id = id;this.name = name;this.price = price;}// getter and setter}}

启动与测试

分别启动

api-gateway

order-service

user-service

测试网关路由

请求用户服务路由测试
curl http://localhost:8080/user-api/users/8

 将被路由到

GET http://localhost:8081/users/8

响应示例: 

{"id": 8,"name": "用户8","email": "user8@example.com"
}
产品服务路由测试
curl http://localhost:8080/order-api/order/99

  将被路由到

http://localhost:8082/order/99

响应示例

{"id": 99,"name": "订单99","price": 198.99
}

常见问题解决方案

  1. 路由不生效

    • 检查predicates路径是否正确

    • 验证后端服务是否运行

    • 查看网关日志中的DEBUG信息

  2. 跨域问题

    • 确保在网关层配置了CORS

    • 检查响应头是否包含Access-Control-Allow-Origin

  3. 请求头丢失

    • 使用AddRequestHeader过滤器明确添加需要的头

    • 检查是否有其他过滤器移除了请求头

  4. 性能瓶颈

    • 增加连接池大小

    • 调整Netty工作线程数

    • 启用响应压缩

结语

Spring Cloud Gateway作为Spring Cloud生态系统中的API网关,提供了强大而灵活的路由功能。通过本文的Maven多模块实现,您可以:

  1. 创建高效的静态路由网关

  2. 实现请求的集中管理和监控

  3. 添加全局过滤器和跨域支持

  4. 轻松扩展新的后端服务

静态网关配置虽然简单,但在中小型项目中能提供出色的性能和稳定性。当您的架构演进到需要动态服务发现时,可以平滑过渡到使用服务注册中心的动态路由方案。

http://www.dtcms.com/a/548433.html

相关文章:

  • 昆明网站建设锐网竞价恶意点击立案标准
  • 网站后台管理系统多少钱移动wordpress加速
  • 好网站建设公司的网站如何建设自己网站首页
  • 桓台网站六安市程序
  • 漳州 网站建设多少钱找货源上什么平台最好
  • 金泉网 网站建设营销软件商城
  • 网站站长工具家具类网站如何优化
  • 企业网站怎么搜索优化重庆网络公司一览表
  • 知识产权教育网站建设方案wordpress与discuz
  • 手机看电视剧网站大全古建设计素材网站
  • 做兼职网站如果启动浏览器就能直接打开一个常用的网站主页_要怎么做?
  • 建站系统的应用场景餐饮网站源码
  • 上海市建设合同信息表网站百度关键词优化的方法
  • 深圳网站建设排行上海人才中心档案托管
  • 网站开发内容和方法西安官网seo
  • 网站建设最新新闻有名的淘宝客网站
  • 情感视频素材网站好听的公司名字大全
  • 网站建设与管理的体会社交平台推广方式
  • 网站改版不换域名怎么做申请个人网站
  • 肇庆网站建设优化企业信用报告网上查询
  • 黄龙云 加强网站建设更换网站标题
  • 充实网站 廉政建设 板块百度收录提交入口地址
  • 临邑县建设局网站手机制作小程序软件的app
  • 网站建设设计问卷企业网站项目报价多少合适
  • 广西建设职业技术学院网站龙岩网店运营招聘
  • 生肖竞猜网站建设嘉峪关建设路小学网站
  • 做网站要学多久企业网站建设服务公司
  • 带后台的网站模板下载wordpress改了固定链接出现404
  • 珠海公司网站域名注册个人备案网站 论坛
  • 正确设置网站keywords大型网站空间费用