网关的功能
1.身份认证,权限的校验。
2.服务的路由,负载均衡。用户请求被分配到哪一个微服务。一个微服务可以有多个实例,所以使用负载均衡。
3.请求限流。
springcloud网关实现有两种:gateway, zuul
zuul是基于servlet实现的,属于阻塞式编程。
springCloudGateway是基于Spring5中提供的WebFlux,属于响应式编程,具有更好的性能。
搭建网关服务
创建一个路由服务module-> gateway,注册到nacos.
1.引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.application.yml文件配置
server:
port: 10010 # 网关端口
spring:
application:
name: gateway # 服务名称
cloud:
nacos:
server-addr: localhost:8848 # nacos 地址
gateway:
routes:
- id: user-service # 路由id,自定义,只要唯一即可
uri: lb://user-service # 路由的目标地址lb是负载均衡,后面跟服务名称
predicates: # 路由断言,判断请求是否符合路由的规则的条件
- Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
- id: order-service
uri: lb://order-service
predicates:
- Path=/order/**
说明:uri支持lb和http两种。