1.概述
SpringCloud是一系列框架的汇合,它推崇一站式解决问题。外面有两个框架Feign和Zuul,两者都是集成了Ribbon和Hystrix框架,同时都具备近程调用的性能。性能上有重叠的两个框架为什么会同时应用?
在解决这个问题之前,先简略介绍一下两者在应用上的区别
2.应用区别
2.1近程调用
2.1.1 Feign
Feign的近程调用在于应用接口,调用接口办法来实现近程调用,就像在浏览器地址栏输出申请一样。
2.1.2 Zuul
Zuul的调用是通过一个配置文件,来实现门路的映射。个人感觉有点相似于Nginx,通过门路映射到id,通过id找到服务。
2.2默认设置
2.2.1 Feign
Feign默认已启用了 ribbon 负载平衡和重试机制,能够间接应用。然而默认没有启用hystrix。
如果非要应用最好先引入hystrix的依赖,接着在配置文件开启hystrix的应用。
2.2.2 Zuul
zuul曾经集成了ribbon和hystrix,默认曾经实现了负载平衡。然而Zuul默认没有启用重试性能。如果肯定要应用这个性能,首先要导入 spring-retry 依赖,接着在配置文件中开启重启性能。
2.3权限管制
这个是Zuul独有的性能,它能通过过滤器,执行过滤办法,达到权限管制的作用。
3.同时应用两个框架的起因
集体看来Zuul像是家里的总闸,电流(申请)从总闸流入,流到不同的电器中。所以它默认不开启重试性能,否则每次重试都要流经多个用电设施,不仅响应慢,而且极消耗资源。
Feign像是连贯两个服务器的导线。它重视业务关系,所以默认不开启hystrix。就像用电设施是不具备跳闸性能的,它上下游的服务器长时间得不到响应,也会熔断。这是不符合实际状况的。
所以尽管性能上用反复的中央,然而利用场景不同,决定了要同时应用两个框架。
最初大胆揣测一波,接下来会呈现一个整合两者的框架,用来缩小性能的冗余。