springcloud之服务网关zuul

为什么需要API网关

服务端有很多个微服务,服务之间还可能存在相互调用的关系。如果全部对外暴露,不安全,而且客户端调用的时候也比较麻烦。

解决方法就是使用服务网关zuul。网关作为所有外部请求的统一入口,外界的系统调用api接口的时候,都是调用服务网关的接口。

使用api网关的好处

防止内部敏感信息泄露:外界系统不需要知道多个微服务之间的调用关系,这样也可以保护内部服务的接口,防止外界系统直接调用一些接口,导致一些敏感信息泄露。

zuul还可以做权限认证,防止非法的请求访问api接口。

zuul的工作原理

在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个 API网关根据请求的 url ,路由到相应的服务
zuul是通过Servlet来实现的,通过自定义的ZuulServlet来对ZuulFilter进行初始化,控制这些ZuulFilter的执行顺序,

zuul的核心是一系列的过滤器,zuul可以在HTTP请求的发起和返回响应期间执行一系列的过滤器。zuul包含四种过滤器:

  1. Pre Filter前置过滤器:它是在请求过滤到具体的服务之前执行的,可以在前置过滤器上做权限验证。
  2. Routing Filter路由过滤器:负责把请求转发到具体的微服务上,执行具体的业务逻辑。
  3. POST Filter后置过滤器:当微服务服务处理完之后,把结果交给后置过滤器处理,这里可以做统计和监控。
  4. Error Filter错误过滤器,当其他过滤器发生错误的时候,执行这个错误过滤器。
请求的声明周期

一个zuul请求的具体流程是:当一个客户端Request请求到达Zuul服务网关,网关首先进入前置过滤器,进行权限校验和其他操作,然后交给路由过滤器,由路由过滤器转发给对应的微服务进行业务处理,处理完的结果交给后置过滤器,做一些统计的工作,最后把Response结果返回给客户端。

zuul的权限校验

首先在pom.xml文件中引入依赖

<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
		</dependency>

然后在启动类ApiGatewayApplication上添加注解@EnableZuulProxy,

区分卖家和买家

对于user模块:包含买家登录和卖家登录

买家登录不使用传统的账号和密码登录,而是使用第三方授权返回的一个用户唯一标识openid进行登录,假如唯一标识是abc,登录之后返回的时候,会在cookie里面设置openid=abc。
卖家登录和买家登录类似,openid假如是openid=xyz,不过返回的时候设置的东西多一些,在cookie里面设置token=UUID,这个UUID是java代码后端生成的,还在redis里面设置key=UUID和value=openid,这样可以区别。

注意spignboot的版本2.0.0.M3,springcloud的版本是Finchley.M2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值