开宗明义
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统(A服务和B服务可以相互调用)
Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能
1 创建路由网关工程
1.1 创建springboot工程作为路由网关工程,命名为service-zuul
1.2 创建后的pom.xml文件(引入eureka,zuul,web依赖)
1.3 启动类ServiceZuulApplication ,加上@EnableZuulProxy注解开启zuul的功能
1.4 配置application.yml文件(首先指定服务注册中心的地址为http://localhost:8765/eureka/,服务的端口为8770,服务名为service-zuul;以/api-a/ 开头的请求都转发给service-ribbon服务;以/api-b/开头的请求都转发给service-feign服务)
1.5 依次运行所有工程,访问localhost:8770/api-a/hi?name=Silent-Y
1.5.1 访问localhost:8770/api-b/hi?name=Silent-Y
2 服务过滤(过滤功能以及安全验证功能)
2.1 基于service-zuul工程改造,新增一个MyFilter类继承ZuulFilter
filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:
pre:路由之前
routing:路由之时
post: 路由之后
error:发送错误调用
filterOrder:过滤的顺序
shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。
run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。
2.2 此时访问localhost:8770/api-b/hi?name=Silent-Y
2.2.1 再访问localhost:8770/api-b/hi?name=Silent-Y&token=有内鬼,行动取消
未完待续......