SpringCloud学习笔记四:Spring Cloud Zuul 路由

Spring Cloud Zuul 路由的作用

Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服务集群配置中心,似乎一个微服务框架已经完成了。

我们还是少考虑了一个问题,外部的应用如何来访问内部各种各样的微服务呢?在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务端。

 

Spring Cloud Zuul 路由的功能

这个组件其实功能很多,比如反向代理,负载均衡还有权限控制等功能。

 

zuul和feign的应用场景和区别

1、zuul作为整个应用的流量入口,接收所有的请求,如app、网页等,并且将不同的请求转发至不同的处理微服务模块,其作用可视为nginx。

2、feign则是将当前微服务的部分服务接口暴露出来,并且主要用于各个微服务之间的服务调用。

两者的应用层次以及原理均不相同。

3.zuul也含有hystrix和ribbon,基于http通讯的,可以直接代理服务就行。在它和服务间增加feign只会增加通讯消耗,没有特别的意义。feign在服务互相调用的时候用就行了,可以仿rpc通讯。

4.Feign主要作客户端流控,Feign的负载均衡是基于Eureka实现的

Zuul主要作服务端流控,并且Zuul的负载均衡结合Eureka实现易用性较好,并且Zuul我一般用在对第三方提供访问接口。

 

摘取《拜托!面试请不要再问我Spring Cloud底层原理!》对SpringCloud核心组件做出的总结

  • Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里
  • Ribbon:服务间发起请求时,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台
  • Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
  • Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
  • Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务

 

以上就是我们通过一个电商业务场景,阐述了Spring Cloud微服务架构几个核心组件的底层原理。

 

文字总结还不够直观?没问题!我们将Spring Cloud的5个核心组件通过一张图串联起来,再来直观的感受一下其底层的架构原理:

SpringCloud学习笔记四:Spring Cloud Zuul 路由_第1张图片

 

参考资料

《SpringCloud微服务实战-Zuul-APIGateway(十)》

《Spring-Cloud系列第7篇:spring-cloud-zuul》

《spring cloud使用zuul实现反向代理和负载均衡》

《springcloud中zuul和feign的应用场景和区别》

 

你可能感兴趣的:(SpringCloud)