第一步:maven pom文件引入相关依赖
<?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">
<parent>
<artifactId>demos</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>gateway-cloud</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- 不加loadbalancer和bootstarp会报错-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
</project>
第二步:肯定是创建yaml文件 ;
server:
port: 9000
spring:
application:
name: cloud-gateway
cloud:
gateway:
routes:
- id: user-service
uri: lb://snow-flake #lb就gateway就会自动帮我们实现负载均衡
predicates:
- Path=/snow/**
discovery:
locator:
enabled: true # 开启从注册中心负载均衡调用
nacos:
discovery:
server-addr: localhost:8848 #将服务注册到nacos上
特别说明一点,如果要nacos作为配置中心的话,要创建一个bootstrap.yaml文件,因为要加载nacos的配置中心的地址和ip
第三步,肯定是启动类
启动类上多家了一个注解 @EnableDiscoveryClient,就是让注册中心能够扫描发现改服务;
package com.dapeng.gateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class MainApplication9000 {
public static void main(String[] args) {
SpringApplication.run( MainApplication9000.class,args);
}
}
我将雪花ID生成的服务创建了两个,用来实现负载均衡,这个雪花ID是利用hutool的工具类
第一步,将id服务注册到nacos中,先写yaml文件
server:
port: 9006
spring:
application:
name: snow-flake
cloud:
nacos:
discovery:
server-addr: localhost:8848
第二步启动类添加@EnableDiscoverClient
package com.dapeng.snowflake;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class MainApplication9006 {
public static void main(String[] args) {
SpringApplication.run( MainApplication9006.class,args);
}
}
第三步写controller
@Slf4j
@RestController
@RequestMapping("/snow")
public class SnowFlakeIDController {
@Value("${server.port}")
private Integer port;
@GetMapping("/id")
public Long id(){
log.info("port"+port);
Snowflake snowflake = IdUtil.getSnowflake();
System.out.println("测试热部署" ) ;
long l = snowflake.nextId();
return l;
}
}
一切就绪,此时我们访问http://localhost:9000/snow/id 就可以看到网关实现了负载均衡,这只是一个简单的实现,网关还可以做的事情还很多。