什么是网关,网关可以做什么?
首先我们得了解微服务网关这个概念,平时我们的微服务项目,不同的服务可能是不同的网络地址,然而客户端完成一个业务需求可能要调用多个服务的接口才能完成一个业务需求,所以让客户端直接与各个服务之间进行通信就会出现很多问题。这些问题我们使用网关就可以很好的去解决。
通俗一点来讲,网关就是在客户端和服务端之间的一个东西,所有的外部请求都需要经过网关 然后分配请求的各个服务中去。微服务网关就是一个系统,通过暴露该微服务网关系统,方便我们去
如何去实现
步骤
1、引入依赖
2、配置网关
3、测试
实现
这是咱们网关模块的一个基本架构
1、引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--客户端负载均衡loadbalancer-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!--gateway-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2、配置网关
编写application.yml文件,去配置网关的动态路由规则
spring:
application:
name: sysgateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
gateway:
discovery:
locator:
enabled: true
lowerCaseServiceId: true # 请求服务是小写的时候改成true(默认为false轻微服务必须是大写)
routes:
- id: base-service
uri: lb://base-service # 服务端 service_id
# 网关断言匹配
predicates:
- Path=/favorites/**
- Path=/favoritesType/**
- Path=/user/**
filters:
- StripPrefix=2
这里刚好对应的是咱们的控制层(controller)的路由
测试
访问:localhost:8181/base-service/favoritesType/getAll,看是否可以访问到咱们的方法
这就很nice,就很棒