Spring Cloud RPC(Feign VS Dubbo)多维度对比选型
社区活跃度对比
Dubbo

Feign

协议
Dubbo
-
支持多传输协议: Dubbo、Rmi、http,可灵活配置
Feign
基于Http
传输协议,短连接
,性能比dubbo低
与Spring Cloud 集成
Dubbo
在早期Dubbo
是与Spring Cloud
集成有一些脱落,但是在Spring Cloud Alibaba
出现后,spring-cloud-starter-dubbo
与Spring Cloud完美集成
Feign
Spring Cloud 最早支持的RPC框架,兼容性好
负载均衡
Dubbo

图片官网链接
同时支持服务端负载均衡和客户端负载均衡配置,灵活度非常高
Feign
Feign自身是没有负载均衡能力的,之前默认使用Ribbon作为负载均衡的组件,但是Netfix 已经不在维护了

新版本的Spring Cloud已经将Ribbon替换成Spring Cloud Load Balancer,Ribbon
是客户端级别的负载均衡,不像dubbo支持客户端和服务端双向配置
容错机制
Dubbo
支持多种容错策略:
-
Failover Cluste:失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过 retries="2"
来设置重试次数(不含第一次)。默认容错机制 -
Failfast Cluster:快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。 -
Failsafe Cluster:失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。 -
Failback Cluster :失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。 -
Forking Cluster:并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2"
来设置最大并行数。 -
Broadcast Cluster:广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。
Feign
Feign默认使用Netfix Hystrix
作为服务熔断的组件。Hystix提供了服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能。
目前 Hystrix 已经处于维护(maintenance)状态,不再继续开发,这个消息是Netfix 在2018年对外宣布的。Hystrix GitHub页面上也说明了该项目目前处于维护模式
在使用dubbo后续的熔断降级也还可以使用
Alibaba Sentinel
迁移
Dubbo
dubbo为了提供对RestTemplate
和OpenFeign
客户端端的支持,在Dubbo Spring Cloud
提供了@DubboTransported
注解,使客户端无需额外处理即可兼容RestTemplate
和OpenFeign
的调用,换而言之在不调整 Feign 接口以及 RestTemplate
URL 的前提下,可以实现无缝迁移
比如在客户端使用OpenFeign
调用duboo服务,只需要添加如下注解如下
@FeignClient("order")
@DubboTransported(protocol = "dubbo")
使用RestTemplate或OpenFeign调用Dubbo服务会经历以下过程:
-
根据服务名得到注册中心的Dubbo服务DubboMetadataService。 -
使用DubboMetadataService里提供的getServiceRestMetadata方法获取要使用的Dubbo服务和对应的Rest元数据。 -
基于Dubbo服务和Rest元数据构造GenericService。 -
服务调用过程中使用GenericService发起泛化调用。
Feign
没有提供对dubbo
无缝迁移的支持
文档
Dubbo
中文、英文都有,比较全面
Feign
英文文档,全面性一般
总结
-
dubbo作为 Spring Cloud Alibaba
中的RPC组件,从社区活跃度来说是Feign
远不能及的。其次Netfix
大多微服务组件都不在维护,而Spring Cloud Alibaba
逐渐成为趋势 -
从功能上来说 dubbo
更多,也就意味着更重,反观Feign
肯定是更轻量 -
从性能来说 dubbo
肯定是要比Feign
高的 -
从支持的协议来说也是 dubbo
更多更灵活 -
Feign
服务调用不需要发额外的jar包去依赖(服务调用不用限定全类名),可以直接调用,这点算是优势也是劣势。 -
如果前期使用 Feign
,后期要替换成dubbo
,dubbo
提供了无缝迁移
原文始发于微信公众号(小奏技术):Spring Cloud RPC(Feign VS Dubbo)多维度对比选型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/30174.html