目录
什么是网关?
关(Gateway)又称网间连接器,网关在网络层实现服务之间网络互连。用程序的话来说就是请求转发。他就好比小区的门一样,你想进来小区,必须通过门才能进来。为什么要有这个门?为了方便管理以及安全考虑,就好比现在疫情期间,动不动小区封了,假如小区没有门,想要封小区还得费特别大的劲将小区给围住。
一、建子工程gateway
二、引入依赖
记住这里一定不要引入spring-boot-starter-web依赖,这是非常大的坑
<!--服务的注册与发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--服务的网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
三、配置yaml
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: #nacos服务地址
gateway:
discovery:
locator:
enabled: true #开启注册中心路由功能
routes:
- id: account-service # 当前路由的名称
uri: lb://account-service
predicates:
- Path=/account/**
filters:
- StripPrefix=1
server:
port: 8888
四、运行报错处理
运行之前需要加入一个注解@EnableDiscoveryClient
这时可能报数据库的错,我们网关也不需要配置数据,这时我该怎么办呢
加上@SpringBootApplication(exclude = DataSourceAutoConfiguration.class来排除,因为其会在原生的spring.datasource下找url, username, password等。而我们动态数据源的配置路径是变化的,所以需要排除
我们通过地址打开,哎又会发现报错,报503
这时我们只需要添加fegin依赖
<!--fegin组件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- Feign Client for loadBalancing -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
这样就完成了网关的学习