网关
网关
为什么要使用网关
如果订单 用户微服务搭了集群 前端 不知道访问那个接口
什么是网关
网关是介于微服务和前端之间的一个组件。
前端请求的统一入口,前端的所有请求,必须经过网关,由网关转发到指定的服务;
有了网关后,前端是不允许直接访问微服务。
网关的作用?
路由:将前端的请求转发到后端指定的微服务。
优势
前端只需要知道网关地址即可,不需要知道微服务的地址,减少了前后端交互复杂性
避免将服务地址直接暴露给前端,不安全:
过滤器:
认证:判断用户是否已经登录
鉴权:(必须先登录)判断用户是否有指定的权限
缓存:
限流: 避免并发过大,压死微服务.
网关的技术实现?
在SpringCloud中网关的实现包括两种:
spring cloud gateway:SpringCloudGateway是Spring cloud自己开发的产器则是基于Spring5中提供的WebFlux,属于响应式编程的实现具备更好的性能。
zuul:Zuul是Netflix公司产品,目前已经停止维护,性能也比较差 停止更新了
网关的快速入门?
前端发送请求路由到userservice微服务
搭建网关服务
搭建网关服务的步骤:
1:创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖:
<!--网关依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务注册中心的发现依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2:编写路由配置及nacos地址
server:
port: 81 # 网关路由端口
spring:
application:
name: gateway # 服务名称 配置文件中的微服务名称
cloud:
nacos:
server-addr: localhost:8848 # nacos地址 启动之后访问 localhost:8848/nacos/index.html 查看网关 localhost:81/user/1 网关路由
gateway:
routes: # 网关路由配置 集合 - 就行
- id: user-service # 路由id,自定义,只要唯一即可 随便写
# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
predicates: # 路由断言,也就是判断请求是否符合路由规则的条件 去路由到指定的微服务
- Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
前端访问网关,第一级路径是user 就路由到user service 微服务