Gateway服务网关:
基于Netty的异步非阻塞模型,相比zuul性能更高,增加了spring5的特性。
作用:
浏览器无需关心各个服务的依赖关系,访问统一的IP地址,就可以访问多个微服务。开发者可以灵活的增加业务服务模块;可以在网关层做一些最上层的公用的操作,如过滤恶意请求、设置ip黑白名单、做身份认证、限流、负载均衡等。
Springcloud配置Gateway
Pom:
父pom管理的jar包版本:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.16.18</lombok.version>
<mysql.version>5.1.6</mysql.version>
<durid.version>1.1.11</durid.version>
<mybatis.spring.boot.version>1.1.1</mybatis.spring.boot.version>
</properties>
<!-- 子模块继承后,提供作用:锁定版本+子模块不用写groupId 和 version -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${durid.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>jym-springCloud-parent</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
gateway pom依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
全部pom:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.jym.springCloud</groupId>
<artifactId>jym-common-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- openfeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
</dependencies>
yml:
server:
port: 9527
spring:
application:
name: jym-cloud-gateway
cloud:
gateway:
discovery:
locator:
enabled: true #开启动态创建路由的功能,利用微服务名进行路由
routes:
- id: payment_jym01 #唯一标识
uri: lb://jym-provider-payment #转发的地址,写服务名称
predicates: Path=/payment/findOne/** #判断匹配条件,即地址带有/payment/findOne/**的请求,会转发至lb:JYM-PROVIDER-PAYMENT
- id: payment_jym02 #唯一标识
uri: lb://jym-provider-payment #转发的地址,写服务名称
predicates: Path=/payment/lb/** #判断匹配条件,即地址带有/payment/lb/**的请求,会转发至lb:JYM-PROVIDER-PAYMENT
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
启动类:
@SpringBootApplication
@EnableEurekaClient
public class GatewayApplication9527 {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication9527.class,args);
}
}
测试:
启动两个eureka 以及提供者后,启动该网关模块:
Getaway集成了ribbon,可以自动实现负载均衡
学习年限不足,知识过浅,说的不对请见谅。
世界上有10种人,一种是懂二进制的,一种是不懂二进制的。
转载:https://blog.csdn.net/weixin_43326401/article/details/105176335
查看评论