关于java:springcloud-使用初谈二网关

41次阅读

共计 1029 个字符,预计需要花费 3 分钟才能阅读完成。

<font style=”color:#fa7a00;”> 这里说的是 zuul</font>

服务过滤

自定义过滤器的实现,须要继承 ZuulFilter,须要重写实现上面四个办法:

        四个具备 4 个基本特征:过滤类型、执行程序、执行条件、具体操作

  • filterType:返回一个字符串代表过滤器的类型,在 zuul 中定义了四种不同生命周期的过滤器类型,具体如下:

    • pre:能够在申请被路由之前调用
    • routing:在路由申请时候被调用
    • post:在 routing 和 error 过滤器之后被调用
    • error:解决申请时产生谬误时被调用
  • filterOrder:通过 int 值来定义过滤器的执行程序
  • shouldFilter:返回一个 boolean 类型来判断该过滤器是否要执行,所以通过此函数可实现过滤器的开关。在上例中,咱们间接返回 true,所以该过滤器总是失效。
  • run:过滤器的具体逻辑。须要留神,这里咱们通过 ctx.setSendZuulResponse(false)令 zuul 过滤该申请,不对其进行路由,而后通过 ctx.setResponseStatusCode(401)设置了其返回的错误码,当然咱们也能够进一步优化咱们的返回,比方,通过 ctx.setResponseBody(body)对返回 body 内容进行编辑等。

最初,总结一下为什么服务网关是微服务架构的重要局部,是咱们必须要去做的起因:

  • 不仅仅实现了路由性能来屏蔽诸多服务细节,更实现了服务级别、平衡负载的路由。
  • 实现了接口权限校验与微服务业务逻辑的解耦。通过服务网关中的过滤器,在各生命周期中去校验申请的内容,将本来在对外服务层做的校验前移,保障了微服务的无状态性,同时升高了微服务的测试难度,让服务自身更集中关注业务逻辑的解决。
  • 实现了断路器,不会因为具体微服务的故障而导致服务网关的阻塞,仍然能够对外服务。

Zuul 和 nginx 的 性能比照

论断:

Zuul 的原始性能十分靠近于 Nginx。事实上,在启动预热之后,我的测试后果甚至略好一些(重申免责申明 - 这并非一个庄重的基准性能测试)。Nginx 显示出更多的可预测性能(变动较小),可悲的是在 Zuul 预热期间,咱们经验了一些小故障(150000 个申请中的 2 个,然而您的微服务应该是容错机制的,对吧?)。

Zuul 解决 Cookie 和重定向

本文来源于:宋文超 super,专属平台有 csdn、思否(SegmentFault)、简书、开源中国(oschina)、掘金,转载请注明出处。

正文完
 0