在微服务架构中,分布式通信、分布式事务、分布式锁等问题是亟待解决的几个重要问题。

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做微服务,使用上有很多优势,社区也比较活跃,看将来更新发展。

如果觉得不错,请点赞支持下,谢谢

超500+架构技术专题集合,回复【架构】,即可获得。

dubbo优势_Dubbo与SpringCloud核心组件Ribbon、Hystrix、Feign的优劣势比较相关推荐

  1. 微服务系列:Dubbo与SpringCloud的Ribbon、Hystrix、Feign的优劣势比较

    在微服务架构中,分布式通信.分布式事务.分布式锁等问题是亟待解决的几个重要问题. Spring Cloud是一套完整的微服务解决方案,基于 Spring Boot 框架.确切的说,Spring Clo ...

  2. 【springCloud搭建】四、集成ribbon+hystrix+feign

    上篇文章传送门:[springCloud搭建]三.集成springCloudGateway网关  ribbon+hystrix+feign所需的第三方包 <!--feign服务通讯组件--> ...

  3. dubbo优势_Dubbo 迈出云原生重要一步 应用级服务发现解析

    作者 | 刘军(陆龟)  Apache Dubbo PMC 概述 社区版本 Dubbo 从 2.7.5 版本开始,新引入了一种基于实例(应用)粒度的服务发现机制,这是我们为 Dubbo 适配云原生基础 ...

  4. dubbo优势_dubbo优点是什么?dubbo有哪些缺点?

    之前给大家介绍了一下dubbo工作原理,下面就接着来给大家介绍dubbo的优点和缺点,你知道他的优点和缺点吗? 一.dubbo的优点有哪些? 首先我们来介绍一下dubbo的优点,总的来说dubbo有着 ...

  5. 一文读懂SpringCloud与Eureka,Feign,Ribbon,Hystrix,Zuul核心组件间的关系

    概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓 ...

  6. springCloud - 第5篇 - 断路器 Hystrix ( Feign 、Ribbon )

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.为什么要有熔断 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC ...

  7. springcloud+springboot+Eureka+Feign+Ribbon+Hystrix+Zuul

    Springcloud集成Eureka Eureka服务端和客户端 本实例采用springboot,eureka和feign/ribbon,hystrix,zuul,mybatis,redis 1. ...

  8. SpringCloud核心组件概述(五大神兽)

    小伙伴们可以从第一篇看起 微服务 分布式 集群 负载均衡详述 spring boot springcloud dubbo概述 2.5万字详解Java 23种设计模式的简介和创建型模式(简单工厂.工厂方 ...

  9. 阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较

    本文主要围绕微服务的技术选型.通讯协议.服务依赖模式.开始模式.运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架.架构师可以根据公司的技术实力并结合项目的特点来选择某个合 ...

最新文章

  1. 跨区域MPLS TE
  2. win8: 清除iframe的缓存
  3. C++学习笔记(二)
  4. 玛纽尔扫地机器人怎样_扫地机器人哪个牌子好?满足日常清洁需求才值得推荐...
  5. 基于javaEE技术的课程设计管理系统设计与实现
  6. 电脑怎么设计java环境_java环境变量配置,详细教您win7怎么配置java环境变量。
  7. IDEA打造快捷属性 摆脱鼠标 高效操作
  8. 最新如何在CentOS6版本上安装Teamviewer
  9. 11 EDA技术实用教程【时序电路的Verilog设计2】
  10. 基于51单片机220V交流电流检测系统过流阈值报警方案原理图
  11. 读书札记:一些常用计算机管理命令
  12. 常见端口对应服务及入侵方式
  13. UNIX环境高级编程---进程间通信总结
  14. Linux 进程内存布局(一)
  15. 一本程序员黑话进阶指南!拿走不谢!
  16. 山沟沟里的技术脱贫:阿里工程师助平武蜂农物联网养蜂...
  17. 为什么产品经理要做市场调研
  18. 单页和多页应用(vue.js学习笔记)
  19. 网站 压力 测试软件,网站压力测试软件
  20. 【Centos7内网环境Nexus3私服搭建】

热门文章

  1. python服务器搭建 实战_实战讲解:如何用Python搭建一个服务器
  2. 工业以太网交换机的作用和工作原理详解
  3. 【渝粤教育】国家开放大学2018年秋季 2006T经济数学基础12 参考试题
  4. 物联网设备的互操作性问题探讨
  5. 物联网未来发展的十大趋势
  6. 二级c语言函数调用题,2013年计算机二级C语言函数调用考点归纳
  7. dev分支和master是什么_天天用Git,分支开发你怎么弄的?
  8. 01_2_数字基带传输及其频谱特性
  9. java里面自行车的属性_11、Java基础知识
  10. fftw-3.3.8库在linux下的的编译和配置