【微服务】Zuul的必要性

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 【微服务】Zuul的必要性

点击上方“后端技术精选”,选择“置顶公众号”

技术文章第一时间送达!

作者:种下星星的日子 blog.csdn.net/hongwei15732623364

blog.csdn.net/hongwei15732623364

传统开发方式,所有的服务都是本地的,UI可以直接调用,现在功能拆分成独立的服务,跑在独立的虚拟机上的java进程了。客户端如何访问他呢?

后台有N个服务,前台就需要记住管理N个服务,一个服务下线/更新/升级,前台就要重新部署,这明显不符合我们拆分的理念。微服务在系统内部通常无状态,用户登录信息和权限管理最后有个统一的地方维护管理(OAuth)。

不同的微服务有不同的网络地址,而外部的客户端可能要调用多个服务的接口才能完成一个业务需求。比如一个电影购票可能调用用户微服务,电影微服务等,如果客户端直接和微服务通信,会存在如下常见问题:

  • 客户端多次请求不同微服务,增加客户端的复杂性
  • 跨域问题,一定场景下处理相对复杂
  • 认证复杂,每个服务都要独立认证
  • 难重构,随着项目迭代,可能需重新划分微服务,重构难以实施
  • 某些微服务可能使用了其他协议,直接访问会有问题
  • 以上问题可以借助微服务网关API Gateway来解决,微服务网关介于客户端和服务器端之间,所有的外部请求都会先经过微服务网关:

    【微服务】Zuul的必要性

    这样客户端只需和网关交互,无需直接调用特定微服务的接口,方便监控,易于认证,减少客户端和各微服务间的交互。

    Zuul

    【微服务】Zuul的必要性

    Zuul作用:

  • 提供统一服务入口,微服务对前台透明
  • 聚合后台服务,节省流量,提升性能
  • 安全,过滤,流控等API管理功能
  • 提供统一服务出口,解耦
  • 过滤器类型:

    【微服务】Zuul的必要性
  • PRE:请求路由之前调
  • ROUTING:路由到微服务
  • POST:路由到微服务之后
  • ERROR:其他阶段发生错误后执行
  • 除了默认的过滤器类型,Zuul还允许创建自定义的过滤器类型。

    Zuul高可用

    通过将多个zuul节点注册到Eureka Server实现高可用。存在以下两种情况:

    Zuul客户端注册到了Eureka Server

    Zuul客户端自动从Eureka Server查询Zuul Server列表,并用Ribbon负载均衡请求Zuul集群。

    【微服务】Zuul的必要性

    未注册到Eureka Server

    微服务可能被其他微服务调用,也可能直接被终端app调用,这种情况,我们需要借助额外的负载均衡器来实现Zuul的高可用,比如Nginx等。

    【微服务】Zuul的必要性

    Zuul聚合微服务

    许多场景下,一个外部请求,可能要查询后端多个微服务。比如一个电影售票系统,在购票订单页上,需要查电影微服务,还有用户微服务,如果让系统直接请求各个微服务,就算使用Zuul转发,网络开销、流量耗费、时长都不是很好,这时我们就可以使用Zuul聚合微服务请求,即应用系统值发送一个请求给Zuul,由Zuul请求用户微服务和电影微服务,并把数据返给应用系统。

    参考:

    https://blog.csdn.net/chengqiuming/article/details/80860981 https://blog.csdn.net/zhanglh046/article/details/78651993/

    (点击可跳转)

    1. 

    ****2. ****

    3. 

    ****4. ****

    看到这里了,就关注一个呗

    【微服务】Zuul的必要性

    原文始发于微信公众号(后端技术精选):

    本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

    本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

    原文链接:blog.ouyangsihai.cn >> 【微服务】Zuul的必要性


     上一篇
    微服务架构之「 调用链监控 」 微服务架构之「 调用链监控 」
    点击上方“Java知音”,选择“置顶公众号” 技术文章第一时间送达! 作者:奎哥 来自公众号:不止思考 来自公众号:不止思考 「 调用链监控 」是在微服务兴起后才有的一种新流行的监控模式。因为在我们传统单体应用的项目中,不存
    下一篇 
    微服务架构之「 容错隔离 」 微服务架构之「 容错隔离 」
    点击上方“Java知音”,选择“置顶公众号” 技术文章第一时间送达! 作者:爱奎哥 公众号:不止思考 公众号:不止思考 技术经验交流:我们知道,在单体应用的架构下一旦程序发生了故障,那么整个应用可能就没法使用了,所以我们要把