技术选型对比- RPC(Feign VS Dubbo)

news2024/12/24 9:01:51

协议

Dubbo

  • 支持多传输协议: Dubbo、Rmi、http,可灵活配置。
  • 默认的Dubbo协议:利用Netty,TCP传输,单一、异步、长连接,适合数据量小(传送数据小,不然影响带宽,响应速度)、高并发和服务提供者远远少于消费者的场景。

Feign

基于Http传输协议,短连接,性能比dubbo低 ,不适合高并发的访问。

生态

  • SpringCloud是Apache旗下的Spring体系下的微服务解决方案
  • Dubbo是阿里系的分布式服务治理框架

 

 

 注册服务的区别


Dubbo是基于java接口及Hession2序列化的来实现传输的,Provider对外暴露接口,Consumer根据接口的规则调用。也就是Provider向Zookeeper注册的是接口信息,Consumer从Zookeeper发现的是接口的信息,通过接口的name,group,version来匹配调用。Consumer只关注接口是否匹配,而对此接口属于什么应用不关心。当然接口的注册信息里会包含应用的ip,hostname等。


SpringCloud的服务发现是基于Http协议来实现的,Provider对外暴露的是应用信息,比如应用名称,ip地址等等,Consumer发现的是应用的信息,当调用的时候随机选择一个Provider的IP地址,应用名称,然后依据Http协议发送请求。Consumer关注的是应用名称,根据应用名称来决定调用的是哪个服务集群,然后对此名称对应的服务集群做负载均衡。Provider接受到请求后,根据内置的SpringMVC来匹配路由处理请求。

负载均衡

Dubbo:

支持4种算法(随机、轮询、活跃度、Hash一致性),而且算法里面引入权重的概念。
配置的形式不仅支持代码配置,还支持Dubbo控制台灵活动态配置。
负载均衡的算法可以精准到某个服务接口的某个方法。

Feign:

只支持N种策略:轮询、随机、ResponseTime加权。
负载均衡算法是Client级别的。

 容错策略

Dubbo:

支持多种容错策略:failover、failfast、brodecast、forking等,也引入了retry次数、timeout等配置参数。

Feign:

利用熔断机制(外部介质)来实现容错的,处理的方式不一样。

Feign是SpringCloud中的远程调用方式,基于成熟Http协议,所有接口都采用Rest风格。因此接口规范更统一,而且只要符合规范,实现接口的微服务可以采用任意语言或技术开发。但受限于http协议本身的特点,请求和响应格式臃肿,其通信效率相对会差一些。

Dubbo框架默认采用Dubbo自定义通信协议,与Http协议一样底层都是TCP通信。但是Dubbo协议自定义了Java数据序列化和反序列化方式、数据传输格式,因此Dubbo在数据传输性能上会比Http协议要好一些。

不过这种性能差异除非是达极高的并发量级,否则无需过多考虑。

 

 

总结


Dubbo支持更多功能、更灵活、支持高并发的RPC框架。

SpringCloud全家桶里面(Feign、Ribbon、Hystrix),特点是非常方便。Ribbon、Hystrix、Feign在服务治理中,配合Spring Cloud做微服务,使用上有很多优势,社区也比较活跃,看将来更新发展。

业务发展影响着架构的选型,当服务数量不是很大时,使用普通的分布式RPC架构即可,当服务数量增长到一定数据,需要进行服务治理时,就需要考虑使用流式计算架构。Dubbo可以方便的做更精细化的流量调度,服务结构治理的方案成熟,适合生产上使用,虽然Dubbo是尘封后重新开启,但这并不影响其技术价值。

如果项目对性能要求不是很严格,可以选择使用Feign,它使用起来更方便。
如果需要提高性能,避开基于Http方式的性能瓶颈,可以使用Dubbo。

Dubbo Spring Cloud的出现,使得Dubbo既能够完全整合到Spring Cloud的技术栈中,享受Spring Cloud生态中的技术支持和标准化输出,又能够弥补Spring Cloud中服务治理这方面的短板
 

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

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

相关文章

UnityWebGL+阿里云服务器+Apache完成项目搭建展示

一、服务器相关 Step1:租借一台阿里云服务器 我自己租借了一台北京的ECS服务器,有免费一年的活动,1 vCPU 2 GiB,我自己选择的Ubuntu系统,也可以选择Windows系统 Step2:进入远程连接 进入自己的服务器实例后,点击远程…

vue+elementui+nodejs机票航空飞机航班查询与推荐

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode )本系统主要是为旅客提供更为便利的机票预定方式,同时提高民航的预定机票的工作效率。通过网络平台实现信息化和网络化&am…

关于Android的性能优化,主要是针对哪些方面的问题进行优化

前言 我们在开发Android的时候,经常会遇到一些性能问题;例如:卡顿、无响应,崩溃等,当然,这些问题为我们可以从日志来进行追踪,尽可能避免此类问题的发生,要解决这些问题&#xff0c…

mysql从零开始(05)----锁

全局锁 使用 # 启用全局锁 flush tables with read lock # 释放全局锁 unlock tables开启全局锁后,整个数据库就处于只读状态了,这种状态下,对数据的增删改操作、对表结构的更改操作都会被阻塞。 另外,当会话断开,全…

【1015. 可被 K 整除的最小整数】

来源:力扣(LeetCode) 描述: 给定正整数 k ,你需要找出可以被 k 整除的、仅包含数字 1 的最 小 正整数 n 的长度。 返回 n 的长度。如果不存在这样的 n ,就返回 -1。 注意: n 不符合 64 位带…

手把手教你在winform中将文本或文件路径拖到控件中

文章目录 前言博主履历介绍:一、将txt文件的所有内容复制到 RichTextBox中二、将txt文件的一行内容移动到RichTextBox中三、将多个文件的全路径复制到 RichTextBox中四 、源码1、[Winform从入门到精通(1)——(如何年入30万&#x…

「MIAOYUN」:降本增效,赋能传统企业数字化云原生转型 | 36kr 项目精选

作为新经济综合服务平台第一品牌,36氪自2019年落地四川站以来,不断通过新锐、深度的商业报道,陪跑、支持四川的新经济产业。通过挖掘本土优质项目,36氪四川帮助企业链接更多资源,助力企业成长,促进行业发展…

分布式系统概念和设计——命名服务设计和落地经验

分布式系统概念和设计 通过命名服务,客户进程可以根据名字获取资源或对象的地址等属性。 被命名的实体可以是多种类型,并且可由不同的服务管理。 命名服务 命名是一个分布式系统中的非常基础的问题,名字在分布式系统中代表了广泛的资源&#…

C语言:指针求解鸡兔同笼问题

题目:鸡兔同笼问题 要求:使用自定义函数void calc(int h, int f,int *c,int *r) 求解鸡兔同笼问题。 h 表示总的头数,f 表示总的脚数。 例子: 输入: 5 16 输出: 2 3 分析: 在该代码中&a…

05-Docker安装Mysql、Redis、Tomcat

Docker 安装 Mysql 以安装 Mysql 5.7为例: docker pull mysql:5.7Mysql 单机 Mysql 5.7安装 启动 Mysql 容器,并配置容器卷映射: docker run -d -p 3306:3306 \--privilegedtrue \-v /app/mysql/log:/var/log/mysql \-v /app/mysql/data:…

ASP.NET Core MVC 从入门到精通之文件上传

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…

VMware NSX-T Data Center 3.2.2.1 - 数据中心网络全栈虚拟化

请访问原文链接:https://sysin.org/blog/vmware-nsx-t-3/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org VMware NSX-T Data Center 3.2.2.1 | 30 MAR 2023 | Build 21487560 VMware NSX-T Data Center 3.2.2 | 08 …

NOA上车「清一色」自主品牌,哪些供应商正在突围前线

随着入门级L2进入普及周期,以NOA(高速、城区)为代表的L2/L2赛道,正在成为主机厂、硬件供应商、算法及软件方案商的下一波市场制高点的争夺阵地。 高工智能汽车研究院监测数据显示,2023年1-3月中国市场(不含…

MySQL基础(十六)变量、流程控制与游标

1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。 在 MySQL 数据库中,变量分为系统变量以及用户自定义变量。 1.1 系统变量 1.1.1 系统变量分类 变量由系统定义&#xff…

【Nacos在derby模式下密码忘记】使用derby的ij工具重置密码/修改密码

【问题描述】 nacos部署未用mysql,直接运行,使用了默认的derby数据库,这时候不一小心修改的密码给忘记了,无法登录 当时是部署在centos上的一个演示环境,没有采用mysql数据库,如果生产上,建议使用mysql。 …

php用户分享信息技术交流大学生论坛系统vue

系统应实现的目标 1. 提供安全、友好的操作环境:避免一些网上的不良言论,创造一个和谐的网络环境。 2. 提供发表帖子功能:注册的用户可以自由发帖,发表符合法律法规的言论。 3. 提供回复帖子功能:户可以自由回复&am…

camunda执行监听器如何使用

在Camunda工作流引擎中,执行监听器是一种机制,用于在业务流程执行期间捕获特定事件并执行相应的操作。它们可以帮助您实现一些重要的任务,例如: 1、记录或更新业务数据:当流程中的任务或事件发生时,您可以…

工程监测无线中继采集发送仪 指示灯功能说明及接口定义

工程监测NLM5无线中继采集发送仪 指示灯功能说明及接口定义 指示灯功能说明 标识 名称 状态 描述说明 备注说明 CHG 正在充电 常亮 正在充电 DON 充电完成 常亮 已充满 POW 电源指示 常亮 外部电源已连接 仅用于指示是否连接了外部电源 熄灭 无外部电源 SIG 空 RUN 运行状态 闪…

“数字社区”诞生 “智慧大脑”助力提升社区综合治理效能

近日,民政局等9部门印发的《关于深入推进智慧社区建设的意见》提出,到2025年,基本构建起网格化管理、精细化服务、信息化支撑、开放共享的智慧社区服务平台,初步打造成智慧共享、和睦共治的新型数字社区。 数字社区建设是智慧城市…

最优化理论-线性规划解的几何特征

目录 一、引言 二、线性规划的定义 三、线性规划的几何特征 1.可行域 2.最优解 3.等价约束 4.对偶问题 四、线性规划的应用 五、结论 一、引言 最优化理论是数学中的一个重要分支,它研究如何在给定的约束条件下,寻找一个最优解。其中&#xff…