微服务系列:Dubbo与SpringCloud的Ribbon、Hystrix、Feign的优劣势比较
在微服务架构中,分布式通信、分布式事务、分布式锁等问题是亟待解决的几个重要问题。
Spring Cloud是一套完整的微服务解决方案,基于 Spring Boot 框架。确切的说,Spring Cloud是一个大容器(而不是一个框架),它可以将通过集成一些好的微服务框架,从而简化开发者的代码量。
Dubbo 是阿里开源的分布式通信框架,专注于通信服务治理,类似于Spring Cloud中 Ribbon、 Hystrix、 Feign等核心组件的功能。
下面,我们着重来聊下这两种处理方式有何不同。
01 协议处理
1)Spring Cloud更加优雅简单
Feign使用Http进行传输。
Feign 集成了Ribbon,并且嵌入了Spring cloud全家桶 ,通过简单配置 ,就能在分布式里面实现服务间的调用,类似于Bean 调用。
2)Dubbo方式更灵活
Dubbo协议可选,大部分情况使用Dubbo传输协议,也可以使用http协议。
从协议层选择看,Dubbo是配置化的,更加灵活。
Dubbo 协议更适合小数据高并发场景。
02 性能方面
1)Spring Cloud性能调优
Feign 在高并发场景下,通常需要进行如下性能优化,有明显瓶颈,需要改造。
· 调整服务容器到 UnderTow ,在负载大的情况下Undertow 的性能有提高;
· 曾有同学表示将HTTPURLConnection 改成 Httpclient /Okhttp,这样可以优化性能,其实单次调用性能Httpclient差很多,HttpClient 因为封装了很多方便开发者处理的方法,性能比HTTPURLConnection差,改进同时Httpclient 需要设置复用连接池,效果可见一般;
· 开启Gzip;
· Feign中HttpMessageConverters 默认使用jackson2方式进行序列化和反序列化,可以将其改造为ProtoBuf,降低Cpu 损耗并且响应时间也降低。
2)Dubbo性能调优
主要是配置而无需改造。
03 负载均衡
1)Ribbon 的负载均衡策略
· 随机;
· 规则轮询;
· 空闲策略;
· 响应时间策略。
Feign默认使用Ribbon作为负载均衡的组件,Ribbon需要进行全局配置,个性化配置比较麻烦。
2)Dubbo 的负载均衡策略
· 随机;
· 权重轮询;
· 最少活跃调用数;
· 一致性Hash策略。
Dubbo 可以使用路由策略,然后再进行负载均衡。
04 容错机制
Spring cloud 的 Hystix 提供了服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能。
图片为引用,来源于官方图片
Dubbo 提供了一整套 FailOver、FailFast、Failsafe、FailBack、Aviailable、Broadcast、Forking 策略,以及Mock
图片为引用,来源于官方图片
05 路由、流量调度、ABtest
1)Ribbon需自己实现,应用不灵活
Ribbon主要通过扩展 AbstractLoadBalancerRule负载均衡的方法来实现,在负载均衡的部分还要进行改造升级。
2)Dubbo更加灵活方便
Dubbo通过界面化、校本化配置路由规则,可以实现灰度发布、动态流量调度、容量计算等,方案成熟。
另外,Dubbo 还支持多版本调用。
06 总结
正如Dubbo的介绍(如下图),业务发展影响着架构的选型,当服务数量不是很大时,使用普通的分布式RPC架构即可,当服务数量增长到一定数据,需要进行服务治理时,就需要考虑使用流式计算架构。
图片为引用,来源于官方图片
Dubbo可以方便的做更精细化的流量调度,服务结构治理的方案成熟,适合生产上使用,虽然Dubbo是尘封后重新开启,但这并不影响其技术价值。
Ribbon Hystrix Feign在服务治理中,配合Spring Cloud做微服务,使用上有很多优势,社区也比较活跃,看将来更新发展。
你可能也喜欢:
- 微服务系列:服务注册与发现的实现原理、及实现优劣势比较
- Spring Cloud的核心成员、以及架构实现详细介绍
- 阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较
- 阿里P8架构师谈:Spring Cloud与Dubbo的详细比较
- 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别
微服务系列:Dubbo与SpringCloud的Ribbon、Hystrix、Feign的优劣势比较相关推荐
- 分布式与微服务系列 - Dubbo
一.前言 本内容仅用于个人学习笔记,如有侵扰,联系删除 视频教程:尚硅谷Dubbo教程(dubbo经典之作) 二.基础知识 1.分布式基础理论 1.1.什么是分布式系统? <分布式系统原理与范型 ...
- springcloud微服务系列之服务注册与发现组件Eureka
一.Eurake的简介 二.使用Eureka进行服务的注册消费 1.创建一个服务注册中心 2.创建服务的提供者 3.创建服务的消费者 总结 一.Eurake的简介 今天我们来介绍下springclou ...
- 分布式与微服务系列(三)、SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者、消费者)
SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者.消费者) 一.软件架构和微服务需求 1.1.微服务需求 1.2.框架选择 1.3.集群分布(下面为此图实 ...
- 微服务系列:服务注册与发现的实现原理、及实现优劣势比较
服务注册与发现的来源 首先,服务注册与发现是来自于微服务架构的产物. 在传统的服务架构中,服务的规模处于运维人员的可控范围内.当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定.而在微服 ...
- docker -v 文件夹下没有数据_微服务就是Dubbo?并没有那么简单!微服务架构+Docker+k8s了解下...
微服务算是面试中非常高频的词汇了! 之前我就遇到一个候选人,我问他微服务是什么,他说:"微服务就是 Dubbo--",然后把 Dubbo 的原理说的清清楚楚.回答的我都动心了,我猜 ...
- 微服务系列 —— 一小时搞定Eureka
微服务系列 -- 一小时搞定Eureka 一.什么是Eureka Eureka是Netflix公司开源的产品,它是一种基于REST( Representational State Transfer ...
- Spring Cloud微服务系列文,服务调用框架Feign
之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON. 这种 ...
- 01.微服务系列介绍
微服务系列实践 .NET CORE 在开始之前呢,还是得废话一下,毕竟还是需要介绍一下这个系列我们要实现什么样的一套服务架构,也让大家能初步的有一个了解,后续实践起来也有一个完整的概念,相对也会容易的 ...
- dubbo优势_Dubbo与SpringCloud核心组件Ribbon、Hystrix、Feign的优劣势比较
在微服务架构中,分布式通信.分布式事务.分布式锁等问题是亟待解决的几个重要问题. Spring Cloud是一套完整的微服务解决方案,基于 Spring Boot 框架.确切的说,Spring Clo ...
最新文章
- 面试:说说 Spring MVC 的执行过程?
- Qt学习之路(52): 拖放技术之一
- JS校验身份证号码的有效性
- Elasticsearch Pipeline Aggregation管道聚合详解
- iOS13后添加SceneDelegate初始化window
- 都是大人物,看看你认识几个。
- layui多文件上传讲解_Layui 多文件上传 SSH
- lora信号测试小助手_433m无线收发模块LoRaF30如何进行距离测试
- oracle存储过程如何传递一个bean对象_对象传输,序列化和反序列化
- LLVM每日谈之一 LLVM是什么
- 印尼玩lol注册哪个服务器,LOL手游印尼服怎么注册 云顶之弈印尼服账号注册方法[多图]...
- ubuntu启动virtualbox出错解决办法:RTR3InitEx failed with rc=-1912 (rc=-1912)
- 用科学数据求真:地月之间不可能电视直播
- C语言 进制转换 将十进制转换为任意进制
- Linux C编程实战——第六章 文件操作_项目实现_自写ls命令
- GIS中坐标系的基本概念
- 走进通信:为什么4G信号满格,却上不了网呢
- Java多线程——线程池使用示例
- c++面向对象的学生管理系统
- 程序员女朋友礼物python代码_@程序员,用 Python 给女朋友准备个儿童节礼物可好?...
热门文章
- BZOJ K大数查询(分治)(Zjoi2013)
- Qt删除 空格/空白符
- Linux多线程——使用互斥量同步线程
- mini2440驱动分析之LCD
- python第2位的值_Python组通过匹配元组列表中的第二个元组值
- 云数据中心网络遇到的问题_云数据中心面临安全问题,华为SDN解决方案有一个安全大脑...
- python连连看小游戏_python实现连连看游戏
- python层次聚类_python实现层次聚类
- 【Pytorch神经网络实战案例】10 搭建深度卷积神经网络
- React Hooks的使用(一)——useState、useEffect解析