概述
在 Spring Cloud 构建的微服务系统中,大多数的开发者使用都是官方提供的 Feign 组件来进行内部服务通信,这种声明式的 HTTP 客户端使用起来非常的简洁、方便、优雅,但是有一点,在使用 Feign 消费服务的时候,相比较 Dubbo 这种 RPC 框架而言,性能较差。
Dubbo 与 Feign 的区别
- 协议
Dubbo:支持多种传输协议(Dubbo、Rmi、Http、Redis),默认使用 Dubbo 协议;基于 Netty,TCP 传输,单一、异步、长连接,适合数据量小、高并发和服务提供者远远少于消费者的场景。
Feign:基于 Http 协议,短连接,不适合高并发访问。
- 负载均衡
Dubbo:
- 支持 4 种算法(随机、轮询、活跃度、Hash 一致性),而且算法里面引入权重的概念。
- 配置的形式不仅支持代码配置,还支持 Dubbo 控制台灵活动态配置。
- 负载均衡的算法可以精准到某个服务接口的某个方法。
Feign:
- 只支持 N 种策略:轮询、随机、ResponseTime 加权。
- 负载均衡算法是 Client 级别的。
- 容错策略
Dubbo:支持多种容错策略:failover、failfast、brodecast、forking 等,也引入了 retry 次数、timeout 等配置参数。
Feign:利用熔断机制来实现容错的,处理的方式不一样。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于