Spring Cloud 微服务开发:入门、进阶与源码剖析 —— 6.2 Spring Cloud Zuul Filter 责任链

6.2 Spring Cloud Zuul Filter 责任链

前面我们介绍了Zuul的一些基本使用和配置,这一节,我们来介绍一下Zuul的核心——Filter责任链。

6.2.1 工作原理

Zuul的核心逻辑是由一系列紧密配合工作的Filter来实现的,采用了责任链的设计模式,那么,什么是责任链模式呢?

百度百科是这么介绍责任链模式的:

责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

通俗来讲,责任链就是一条链,链上有多个节点,每个节点都有各自的责任。当有输入时,第一个责任节点看自己能否处理该输入,如果可以就处理。如果不能就交由下一个责任节点处理。依次类推,直到最后一个责任节点。

光讲定义总是感觉有点抽象,我们还是举个栗子加深一下理解:

  1. 假设现在有个需求来了,首先是实习生拿到这个需求。
  2. 如果实习生能够实现,直接实现。如果不行,他把这个需求交给初级工程师。
  3. 如果初级工程师能够实现,直接实现。如果不行,交给中级工程师。
  4. 如果中级工程师能够实现,直接实现。如果不行,交给高级工程师。
  5. 如果高级工程师能够实现,直接实现。如果不行,交给资深工程师。
  6. 如果资深工程师能够实现,直接实现。如果不行,交给CTO。
  7. 如果CTO能够实现,直接实现。如果不行,直接跟产品说,需求不做。

这里从实习生到CTO就是一条责任链,每个节点都判断自己能否处理,如果可以处理则处理,处理不了则交给下一个节点处理,直到最后一个责任点。

Zuul大部分功能都是通过过滤器来实现的。Zuul中定义了四种标准过滤器类型,这些过滤

你可能感兴趣的:(Spring,Cloud,微服务开发:入门,进阶与源码剖析)