2

1.概述

SpringCloud是一系列框架的集合,它推崇一站式解决问题。里面有两个框架Feign和Zuul,两者都是集成了Ribbon和Hystrix框架,同时都具有远程调用的功能。功能上有重叠的两个框架为什么会同时使用?
在解决这个问题之前,先简单介绍一下两者在使用上的区别

2.使用区别

2.1远程调用

2.1.1 Feign

Feign的远程调用在于使用接口,调用接口方法来实现远程调用,就像在浏览器地址栏输入请求一样。
image

2.1.2 Zuul

Zuul的调用是通过一个配置文件,来实现路径的映射。个人感觉有点类似于Nginx,通过路径映射到id,通过id找到服务。
image

2.2默认设置

2.2.1 Feign

Feign默认已启用了 ribbon 负载均衡和重试机制,可以直接使用。但是默认没有启用hystrix。
如果非要使用最好先引入hystrix的依赖,接着在配置文件开启hystrix的使用。
image

2.2.2 Zuul

zuul已经集成了ribbon和hystrix,默认已经实现了负载均衡。但是Zuul默认没有启用重试功能。如果一定要使用这个功能,首先要导入 spring-retry 依赖,接着在配置文件中开启重启功能。
image

2.3权限控制

这个是Zuul独有的功能,它能通过过滤器,执行过滤方法,达到权限控制的作用。

3.同时使用两个框架的原因

个人看来Zuul像是家里的总闸,电流(请求)从总闸流入,流到不同的电器中。所以它默认不开启重试功能,否则每次重试都要流经多个用电设备,不仅响应慢,而且极耗费资源。
image
Feign像是连接两个服务器的导线。它注重业务关系,所以默认不开启hystrix。就像用电设备是不具备跳闸功能的,它上下游的服务器长时间得不到响应,也会熔断。这是不符合实际情况的。
虽然功能上有重复的地方,但是两者应用场景不同,解决的问题也不同。


52HZ
7 声望1 粉丝