网关的功能
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-serviceuri: lb://order-servicepredicates:- Path=/order/**
说明:uri支持lb和http两种。