一、介绍
在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平 台无关的服务协议作为各个单元间的通讯方式。
1.1未引入网关之前调用示例:
1.2引入网关之后调用示例:
二、创建网关模块
2.1pom文件
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>cloud-alibaba</artifactId>
<groupId>com.lg</groupId>
<version>2.1.9.RELEASE</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>com.lg</groupId>
<artifactId>cloud-gateway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud-gateway</name>
<description>网关</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2启动类
package com.lg.cloudgateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class CloudGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(CloudGatewayApplication.class, args);
}
}
2.3bootstrap.yml配置文件
spring:
application:
name: cloud-gateway
cloud:
nacos:
config:
server-addr: 192.168.2.6:8001
group: DEFAULT_GROUP
prefix: cloud-gateway
file-extension: yaml
namespace: 9bb83945-f4a3-4839-8d3b-363f1b78db36
2.4nacos创建配置
server:
port: 8090
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.2.6:8001
gateway:
discovery:
locator:
enabled: true
routes:
- id: product-service
uri: lb://product-service
predicates:
- Path=/product/**
filters:
- StripPrefix=1
- id: account-service
uri: lb://account-service
predicates:
- Path=/account/**
filters:
- StripPrefix=1
- id: order-service
uri: lb://order-service
predicates:
- Path=/order/**
filters:
- StripPrefix=1
2.4.1配置含义如下:
- id,路由ID,保持唯一即可;
- uri,路由的目标地址,可以指定为HTTP地址,也可以通过lb://{微服务名称}来指定。lb为load balance的缩写,微服务名称为注册中心中对应的微服务名称。比如将uri配置为lb://account-service的含义是,满足转发条件后,请求将均衡的转发到account-service微服务上;
- predicates就是上面所说的谓词工厂。值为- Path=/account/**表示请求Path以/account开头的都会被匹配,然后转发到account-service服务上;
- filters为过滤器工厂,配置为- StripPrefix=1的意思是,请求转发前,将Path的内容截去前面一位。比如/account/update会被截取为/update。
三、启动服务验证