一、 什么是网关服务
网关服务是单一访问点,并充当多项服务的代理。服务网关启用了跨所有服务的变换、路由和公共处理。
基本原理
服务网关模块是单一调解,用于处理对多个服务使用者和提供者的请求。任何服务网关都有如下四个典型步骤:
1)常用处理 - 一旦网关接收到消息,就对所有消息执行常用处理,例如添加协议级的头或者记录该消息。
2)服务标识 - 必须将网关所处理的消息标识为特定服务类型。例如,查询消息以确定它是针对服务提供者 A、B 还是 C。
3)端点路由 - 当它确定某消息将传递到特定服务提供者时,它将映射到网络可寻址端点,以便可以将该消息转发到服务提供者。
4)特定于服务的处理 - 执行特定目标服务所需的任何处理。
用户可以根据不同的场景更改这四个步骤的顺序。
1 为什么要使用网关
协调请求与服务的调用关系,协调服务之间的关系。
2 网关解决了什么问题
![996cb76c68ba2ace754127f9f16673f5.png](https://i-blog.csdnimg.cn/blog_migrate/9f56d83d98797626b92c488a8ff488ad.jpeg)
二、 编写网关服务入门案例
1 创建项目
![1376aea17aaeaa0d9f3f695b5f2503f3.png](https://i-blog.csdnimg.cn/blog_migrate/49ad14f3c791b0a1dfe3af50528c54ef.png)
修改 pom 文件
<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.sxt</groupId>
<artifactId>zuul-gateway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
修改配置文件
spring.application.name=zuul-gateway
server.port=9020
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/
修改启动类
@SpringBootApplication
@EnableZuulProxy
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
通过网关访问请求服务
![800252a9515e0400d94bfe0887da61fc.png](https://i-blog.csdnimg.cn/blog_migrate/8de5b665efe0618a8ffddc23a9839fc0.jpeg)
http://网关服务地址:网关服务端口/访问的服务的名称/访问的服务中的接口的地址
三、 路由器的 4 种路由规则方法
1 创建项目
![8c03fe53db4b366510b6dcf47561bd65.png](https://i-blog.csdnimg.cn/blog_migrate/e9014d3e0750dedbbd2d01e8b213e5e8.png)
2 采用 URL 指定路由方式
修改配置文件配置路由规则
spr