微服务系列: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与SpringCloud的Ribbon、Hystrix、Feign的优劣势比较

图片为引用,来源于官方图片

Dubbo 提供了一整套 FailOver、FailFast、Failsafe、FailBack、Aviailable、Broadcast、Forking 策略,以及Mock

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

图片为引用,来源于官方图片

05 路由、流量调度、ABtest

1)Ribbon需自己实现,应用不灵活

Ribbon主要通过扩展 AbstractLoadBalancerRule负载均衡的方法来实现,在负载均衡的部分还要进行改造升级。

2)Dubbo更加灵活方便

Dubbo通过界面化、校本化配置路由规则,可以实现灰度发布、动态流量调度、容量计算等,方案成熟。

另外,Dubbo 还支持多版本调用。

06 总结

正如Dubbo的介绍(如下图),业务发展影响着架构的选型,当服务数量不是很大时,使用普通的分布式RPC架构即可,当服务数量增长到一定数据,需要进行服务治理时,就需要考虑使用流式计算架构。

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

图片为引用,来源于官方图片

Dubbo可以方便的做更精细化的流量调度,服务结构治理的方案成熟,适合生产上使用,虽然Dubbo是尘封后重新开启,但这并不影响其技术价值。

Ribbon Hystrix Feign在服务治理中,配合Spring Cloud做微服务,使用上有很多优势,社区也比较活跃,看将来更新发展。


money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

经典教材《统计学习导论》现在有了Python版

文 | 张倩源 | 机器之心《统计学习导论》很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实现。斯坦福经典教材《The Element of Statistical Learning》(简称 ESL)被称为频率学派的统计学习「圣经」&#xff0…

漆桂林 | 人工智能的浪潮中,知识图谱何去何从?

本文转载自公众号:AI科技大本营。近年来,随着人们对 AI 认知能力的积极探索,知识图谱因其表达能力强、拓展性好,基于知识进行推理等优势得到了学界与业界的高度关注。知识图谱,旨在描述客观世界概念、实体、事件及其之…

LeetCode 102. 二叉树的层次遍历(BFS)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回其层次遍历结果:[[3]…

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

本文主要围绕微服务的技术选型、通讯协议、服务依赖模式、开始模式、运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架。架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程。 …

数码摄影(扫街)

快门速度: 快门速度是曝光控制的一个重要变量,能够控制光线进入的多少。 快门的速度越快,时间越短,通过的光线就越少,反之,则越多。 在很好光线下,1/125s就能清晰地捕捉到行走中的人物。 阴天…

论文浅尝 | 让“演进知识图谱”带你“瞻前顾后”看世界

本文转载自公众号:爱思美谱。 指导老师 | 傅洛伊 王新兵核心技术成员 | 刘佳琪导读在前面几期的内容中,小编已经为大家介绍了知识图谱的产生历史和基本概念。相信大家已经对知识图谱强大的信息结构化能力有所了解。但是,目前的大部分知识…

做过leader,会数仓,项目经验丰富,能值多少钱?

有个朋友,上个月准备从 Java 转做大数据,一个月过去了,一份面试都没约到,来问我怎么回事。我一看简历,期望年薪 40w,深度也不够,要大项目也没有。我们做大数据的,虽说是薪资高&#…

LeetCode 98. 验证二叉搜索树(中序遍历)

文章目录1. 题目信息2. 解题2.1 递归中序2.2 非递归中序1. 题目信息 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和…

阿里P8架构师谈:Zookeeper的原理和架构设计,以及应用场景

什么是 Zookeeper Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如: 统一命名服务 状态同步服务 集群管理 分布式应用配置项的管理等 Zookeeper已经成为Hadoop生态系统…

GNN学习一

一、为什么使用图卷积 传动的深度学习方法,比如卷积网络,效果很好,但是它研究的对象是Euclidean data,这种数据的特征就是有规则的空间结构,比如图片是规则的正方形格子,比如语音是规则的一维序列。这些数…

禁术级竞赛刷分技巧:找到跟测试集最接近的有标签样本

文 | 苏剑林单位 | 追一科技编 | 兔子酱不管是打比赛、做实验还是搞工程,我们经常会遇到训练集与测试集分布不一致的情况。一般来说我们会从训练集中划分出来一个验证集,通过这个验证集来调整一些超参数[1],比如控制模型的训练轮数…

论文浅尝 | 最新10篇《知识图谱》论文推荐(ICML, CVPR, ACL, KDD, IJCAI 2019)

本文转载自公众号:专知。【导读】知识图谱一直是研究热点,研究者近年来广泛关注知识图谱嵌入(Knowledge Graph Embedding,简称KGE)方法,在保留语义的同时,将知识图谱中的实体和关系映射到连续的…

详解RPC远程调用和消息队列MQ的区别

谈到分布式架构,就不得不谈到分布式架构的基石RPC。 什么是RPC RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。 RPC服务框架有哪些 知名度较高的有Thrift&#x…

GNN学习二

基于频谱的图卷积和基于空间的图卷积 (在图上做傅里叶变换?) 图时间空间网络-交通上车流速度和红绿灯

技术动态 | eBay开源分布式知识图谱存储Beam,支持类SPARQL查询

本文转载自公众号:AI前线。作者 | Diego Ongaro,Simon Fell 译者 | 盖磊 编辑 | Natalie AI 前线导读:eBay 工程人员于 5 月 1 日在 官方技术博客 上发布了开源的分布式知识图谱存储 Beam,Beam 实现了事实数据的 RDF 存储&#xf…

2020国内互联网公司的开源项目及Github地址部分汇总

2020国内互联网公司的开源项目及Github地址部分汇总 一、Alibaba 阿里巴巴 阿里巴巴的开源项目很多,都说国内Java公司的技术架构大部分来自阿里系,而且还有很多重量级的项目,例如LVS、Tengine,或者很有实践价值的中间件&#xf…

端到端问答新突破:百度提出RocketQA,登顶MSMARCO榜首

源 | 机器之心开放域问答(Open-domain QA)一直是自然语言处理领域的重要研究课题。百度从面向端到端问答的检索模型出发,提出了RocketQA训练方法,大幅提升了对偶式检索模型的效果,为实现端到端问答迈出了重要的一步。R…

深度剖析RPC框架的核心设计

做过分布式服务端的Java工程师,随着对技术底层的认知的加深,都会或多或少的会去想: 一个RPC框架需要考虑的问题有哪些,如何来解决? 下面我们围绕RPC通信框架,从如何实现这个角度做一个剖析,以及每个环节能…

LeetCode 200. 岛屿数量(图的遍历)

文章目录1. 题目信息2. 解题2.1 DFS2.2 BFS1. 题目信息 给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你…

论文浅尝 | 引入“引用”的语言模型

笔记整理:杨帆,浙江大学硕士,研究方向知识图谱.论文链接:https://arxiv.org/pdf/1611.01628.pdf动机Referring expression(RE)在自然语言中十分常见,并且在信息交流中扮演了十分重要的角色&…