网关的技术实现
在SpringCloud中网关的实现包括两种:
gateway
zuul
zuul是基于Servlet的实现,属于阻塞式编程,而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于应式编程的实现,具备更好的性能
网关作用:
对用户请求做身份认证,权限校验
将用户请求路由搭配微服务,并实现负载均衡
对用户请求做限流
搭建网关服务:
1.创建信的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖:
<dependencies> <!-- nacos服务注册依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 网关依赖gateway依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> </dependencies>
2.编写路由配置nacos地址
server: port: 10010 spring: application: name: gateway cloud: nacos: server-addr: localhost:8848 # nacos地址 gateway: routes: - id: user-server #路由表示 必须唯一 uri: lb://userserver # 路径的目标地址 predicates: # 路由断言,判断请求是否符合规则 - Path=/user/** #路由断言。判断路由是否是以/user开头,如果是则复合规则 - id: order-server uri: lb://orderserver predicates: - Path=/order/**
搭建网关服务