Spring(25) 为什么使用 SpringCloud,而不是用 Dubbo?

目录

    • 一、背景
    • 二、问题解答
    • 三、总结

一、背景

引言: 我们在做的项目中,大部分都是使用的 SpringCloud 框架,大家有没有思考过:为什么使用 SpringCloud,而不是用 Dubbo?

对于微服务了解不深的同学可能会说:“Dubbo 已经过时了。

注意:这样的回答是错误的!!!下面就介绍一下使用 SpringCloud 不使用 Dubbo 框架的真正原因。


二、问题解答

我们知道,在微服务的架构中,我们会遇到很多难题。比如我们在做 RPC 远程调用的过程中,会发生一些服务治理,例如:

  • 我们需要管理我们的接口地址,于是我们的 注册中心 就诞生了,有 Eureka、Nacos、ZK 等。
  • 我们希望能够对我们的接口做 服务的保护,我们就可以使用到 Hystrix、Sentinel 来对我们的接口做一些服务的限流和保护。
  • 还有 网关,网关在微服务的架构中是非常重要的。我们所有的请求入口会先到达我们的网关,再通过网关路由转发到我们真实的应用服务当中,它对我们的接口是有一定的保护作用的。
  • 还有 服务链路,假如在 RPC 整个调用链过程当中,某个环节报错了,我们能够方便地定位问题并进行解决。

由此可知,在我们进行微服务的开发过程当中,如果我们使用的是 SpringCloud 框架,那么基本上遇到什么难题,SpringCloud 都有一套完整的解决方案。所以我们的 SpringCloud 是我们的 微服务全家桶框架

什么是微服务全家桶框架?也就是说如果我们当前在使用 SpringCloud 框架,只要遇到什么难题,都有对应的组件帮我们去解决。反过来,Dubbo 是属于我们的 RPC 框架,它对标的是 SpringCloud 框架中的 OpenFeign 组件来实现 RPC。

为了方便理解,我们举一个生活中的例子:

  • 比如我们现在要去买一台电脑。电脑一般买回来就可以直接使用,它就类似于我们的 SpringCloud 框架。
  • 反过来,如果你在这个时候只是买了电脑的一个组件(比如:CPU),那么在你真正想要使用电脑的情况下,还需要去买硬盘、内存等其他很多组件。所以,Dubbo 相当于我们电脑中的某个组件。

如果我们使用 Dubbo 做一些分布式微服务项目,这样每当我们遇到问题的时候都需要自己去找一些能够对应分布式微服务治理的这一套框架,而且还要确认它是否可以很好地支持我们这样一个 Dubbo 框架。例如:

  • 示例1:我想做一个服务注册,就需要确认 Nacos 是否支持 Dubbo 框架。
  • 示例2:或者我想去做一个服务链路的追踪,也需要确认这个链路组件是否支持 Dubbo 框架。

从以上两个例子可以看出来,如果我们 每次遇到问题都需要去找能够兼容的组件就很麻烦了

所以我们再回到 SpringCloud 框架上,就会发现,只要遇到微服务方面的难题 SpringCloud 都有对应的组件来进行解决,这样就很方便。

但是,在很多顶级的互联网企业当中,压根是不会使用到 SpringCloud 的,而是使用公司自己写的 RPC 框架。为什么呢?因为大公司资金比较雄厚,基本上对于核心组件,只要遇到类似 RPC 这种难题,都是公司自己研发框架去解决。尤其是百度、美团、阿里这种非常顶级的互联网企业。

相反,在一些中小型企业中,如果只使用 Dubbo 这种微服务框架是满足不了实际需要的,只能去使用 SpringCloud 这样把很多 RPC 远程调用这样的组件集成好的全家桶框架,从而减少公司内部研发框架的成本。


三、总结

一般中小型企业选择 SpringCloud 框架是没有问题的,但如果是顶级互联网企业,基本上都是自己去研发这样的组件的。

所以整体来说,Dubbo 框架在 RPC 方面还是比较优秀的,要综合公司的整体情况对框架进行选择。

整理完毕,完结撒花~🌻

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

玩转微服务-SonarQube

这里写目录标题 第一节 SonarQube1.1 简介1.2 四个组成部分1.2.1 SonarQube服务器1.2.2 SonarQube数据库1.2.3 插件1.2.4 Scanner 1.3 工作流程 第二节 SonarQube的安装2.1 安装2.2 插件 第三节 P3C规范3.1 简介3.2 SonarQube 配置 P3C规范3.3 IDEA配置 P3C规范 第四节 Maven项…

机器学习-期末复习

本文的内容按照作者的课程考试要求书写,仅供复习参考。🌷🌷🌷欢迎大家指正! 机器学习是一种人工智能(AI)的分支领域,它致力于开发能够通过数据学习和改进的算法和模型。简而言之&…

2024年AIGC+教育行业报告

在宏观层面上,如果把人工智能看作一种生命体,AIGC教育的内涵其实是碳基生命和硅基生命的 交互和培育问题。AIGC技术是对人脑计算、思考、判断等内在能力的延伸,是人的智能在机器形态 上的规模化聚集、运作和反应。由此,部分基础性…

【漏洞复现】云时空社会化商业ERP系统LoginName SQL注入漏洞

漏洞描述: 云时空社会化商业ERP系统loginName存在SQL注入漏洞,攻击者可以通过此漏洞获取数据库敏感信息。 搜索语法: Fofa-Query: app"云时空社会化商业ERP系统" 漏洞详情: 1.云时空社会化商业ERP系统。 2.漏洞POC&#xff1a…

倒计时开始!Big Demo Day第十二期,揭秘DePIN,探索Web3未来(附参会指南)

香港—— 全球领先的 Web3.0 活动 Big Demo Day 第十二期即将于 4 月 26 日在香港数码港盛大举行。本次活动由知名科技企业 ZeeprLabs 赞助,Central Research 主办,并得到 Techub News 的联合主办以及数码港、852Web3 等机构的合作支持。 在过去的 11 期…

鸿蒙HarmonyOS应用 - ArkUI组件

ArkUI组件 基础组件 Image 声明Image组件并设置图片源 网络权限:ohos.permission.INTERNET Image(scr: string | PixelMap | Resource)// 1. string:用于加载网络图片,需要申请网络权限 Image("https://xxx.png")// 2. PixelMap…

驱鸟器低成本OTP语音方案选型-wtn6020唯创知音

一、开发背景: 随着农业现代化的不断推进,鸟类对农作物的侵扰问题愈发严重。传统的驱鸟方法,如人工驱赶或使用化学药剂,不仅效率低下,而且可能对环境造成污染。因此,开发一种高效、环保、低成本的驱鸟器成…

考研日常记录(upd 24.4.24)

由于实在太无聊了 , 所以记录以下考研备考日常 , 增加一点成就感 , 获得一点前进动力。 文章目录 2024.4.18 周四课程情况:时间规划: 2024.4.19 周五课程情况:时间规划: 2024.4.20 周六2024.4.2…

RK3588构建ubuntu22.04根文件系统

前言 RK系列的平台提供了buildroot和debian的系统,使用脚本可以直接构建出来,但是没有提供ubuntu的系统,很多厂商只提供一个rootfs.img的固件包,没有将方法开源出来。本文实现了从ubuntu官网开始构建一个ubuntu22.04根文件系统。…

SSTV音频转图片

SSTV工具有很多,这里使用RX-SSTV慢扫描工具 下载安装 RX-SSTV解码软件 下载地址:https://www.qsl.net/on6mu/rxsstv.htm 一直点下一步,安装成功如下图: 虚拟声卡e2eSoft 由于SSTV工具是根据音频传递图片信息,正常解法需要一…

人耳的七个效应

1、掩蔽效应 • 人们在安静环境中能够分辨出轻微的声音,即人耳对这个声音的听域很低,但在嘈杂的环境中轻微的声音就会被淹没掉,这时将轻微的声音增强才能听到。 • 这种在聆听时,一个声音的听阈因另一声音的出现而提高的现象&…

本地修改localhost--手把手

找到本地hosts文件 1、C:\Windows\System32\drivers–快捷键ctrlR,输入drivers 2、点击etc目录,找到hosts文件,右键使用记事本方式打开编辑 3、添加自己想得到的域名【只能在本地使用】 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.…

面试:JVM内存结构

一、Java代码的运行步骤 一段Java代码先会被反编译为Java字节码,当执行java命令时,JVM虚拟机会被创建出来,并会创建一个main主线程来执行主方法。 二、JVM的内存结构有哪些? 1、方法区:(线程共享&#xff…

Linux交换空间的创建使用

交换空间: 换出:将内存中不常用(冷数据)的放去硬盘里 换出:内存要使用这部分数据时,将硬盘的这部分数据放入内存 在内存和硬盘上用来交换数据的空间就是交换空间 创建交换空间的步骤 1.去磁盘上创建一个分…

Linux中的高级IO函数(一)pipe socketpair dup

Linux提供了很多高级的I/O函数。它们并不像Linux基础I/O函数(比如open和read)那么常用(编写内核模块时一般要实现这些I/O函数),但在特定的条件下却表现出优秀的性能。这些函数大致分为三类: 用于创建文件描…

Mongodb语法使用说明(含详细示例)

点击下载《Mongodb语法使用说明(含详细示例)》 1. 前言 MongoDB是一款高性能、开源、面向文档的NoSQL数据库,它使用类似JSON的BSON格式存储数据,提供了灵活的数据模型和强大的查询功能。本文将详细介绍MongoDB数据库的基本增删改…

CSS常用属性之(列表、表格、鼠标)属性,(如果想知道CSS的列表、表格、鼠标相关的属性知识点,那么只看这一篇就足够了!)

前言:在学习CSS的时候,必不可少的就要学习选择器和常见的属性,而本篇文章讲解的是CSS中的列表、表格、背景、鼠标属性。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 大致了解一下本篇文章…

new String和直接赋值的一些问题

分析1 我们先看以下代码: String str1 "abc"; // 在常量池中String str2 new String("abc"); // 在堆上System.out.println(str1 str2)以上结果的输出是什么? 输出:false 前置知识: 在JVM中&#xff0c…

VForm3的文件上传后的一种文件回显方式

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

(C++) 内类生成智能指针shared_from_this介绍

文章目录 &#x1f601;介绍&#x1f914;类外操作&#x1f605;错误操作&#x1f602;正确操作 &#x1f914;类内操作&#x1f62e;std::enable_shared_from_this<>&#x1f62e;奇异递归模板 CRTP&#xff08;Curiously Recurring Template Pattern&#xff09;&#…
最新文章