springcloud的优缺点(spring cloud和dubbo哪个会被淘汰)
本文目录
- spring cloud和dubbo哪个会被淘汰
- Dubbo与SpringCloud的区别和优缺点
- Spring Cloud
- dubbo和spring cloud区别
- 哪位大神比较过spring cloud和dubbo,各自的优缺点是什么
- Dubbo、SpringCloud和Kubernetes优缺点
- spring cloud优点
spring cloud和dubbo哪个会被淘汰
个人觉的两者都不会被淘汰,但是在未来分布式微服务解决方案中或者架构中,springCloud会占主导地位。
springCloud:
*****提供了完成的分布式解决方案,基础解决方案以及组件比较健全,而且最近几年围绕springCloud边缘服务组件越来越多,例如:nacos。
*****是基于springboot的,spring的使用部署太方便了。
dubbo:
*****更多解决的是服务间的调用,也就是服务通讯协议rpc,也会是dubbo没有完整的分布式解决方案基础设施。例如:注册中心需要借助Zookeper,链路追踪:zipkin。
要说Dubbo,算是Spring Cloud的一个子集好了,大致相当于Spring Cloud里的 Eureka + Feign + 1/2Hystrix另外
现在大公司也在慢慢想springCloud服务过度,还有面试中文springCloud问题越来阅读,dubbo越来越少。
dubbo生态圈没有spring cloud好,会被先淘汰掉。现有架构都会优先选择Spring cloud,毕竟使用起来更简单一点。
微服务现在是一阵风而已,实际来说,很多系统不适用,综合算下来,微服务成本比原来大多了。不是所有系统都是互联网,都是弹缩性很强。有的系统就是固定数据量,稳定运行,可能几个大一点服务器就足够了。
真正需要微服务的不会像现在看到的那么多。
慢慢沉淀,估计会把一些不需要的改回去,套壳的改回去。
如果简化方式,感觉dubbo这种轻便的有优势,开发运维都简单。或者替代品也是轻便为主。
剩的可能真的需要微服务,一般都是中等规模以上的,或者巨头,一般都有自己的内部框架。这种用也得全套完善的。
它们都淘汰也是早晚的事
事实上,很多系统根本就没必要用什么所谓微服务。目前过度设计已经泛滥,明明是一个用户数量有限,功能并不复杂的系统,也要套用所谓的微服务架构,或者要大搞所谓中台,既浪费时间,又浪费金钱,最后系统运维还比较复杂,需要持续投入运维。
以服务调用的方式,固然可以有更好的复用性,也可以解耦复杂系统。但实际上,我认为微服务也仅仅是组件化的一种实现方式。对于组件化,广义的讲,有多种实现方式:
第一种,最原始的方式就是以静态函数库或者包的形式存在。这种形式优点是开发方式简单,调用效率高,数据以参数方式进行传递,但耦合度也高,底层组件函数一旦发生变化,则需要重新编译整个工程。通常对于不经常发生变化的基础函数库,可以用这种形式进行开发,形成所谓的公共函数库,供大家使用。
第二种,称之为动态函数库,在windows环境下以dll形式存在,linux环境下以so形式存在。动态函数库相对于静态函数库,优势在于可以在运行时动态加载,可以在不用重新启动整个应用的情况下进行更新。缺点是动态函数不能共享原应用程序的存储空间,导致动态函数调用有时需要传递大量参数,导致一些不便。动态函数库也具有一定耦合度,函数名和参数必须严格按照约定调用,否则会报错。在早期单体架构下,动态函数库还是有大量使用的。
第三种,就是目前所谓的微服务架构了。微服务事实上也是可以看作是一种函数调用方式,提供基于RPC和restful远程调用方式。调用时需要传递调用的服务名称及数据报文。这种方式耦合度自然是比较低一些的,但是调用效率肯定低于函数调用方式,主要是数据传输和报文解析方面消耗的时间。此外还需要考虑通讯流量控制,超时机制,服务寻址,服务可用性等方面的问题。因而降低耦合度,事实上是以增加了系统的整体复杂度和降低调用效率为代价的。个人认为不应该过度解耦,或者仅仅强调可复用性。要知道,任何事情都是有代价的,必须要充分评估这种代价是否值得。
第四种,就更进一步,即以独立的系统存在,该系统具有独立性和完备性,可以不过于依赖其他外部系**立运行,对外部以服务或api的形式进行交互。例如,单点登录系统,信贷系统,核心系统等。
因而,在系统架构设计和建设过程中,必须认真进行评估,不应该过分侧重于某一方面特性的实现,否则就是过犹不及,最后导致整体出现问题。
个人认为,目前大部分所谓基于微服务的中台系统就是陷入了过于强调解耦的误区,导致过度的解耦设计,而忽略了由此带来的弊端,最后陷入了泥潭。
分层是计算机科学永恒的主题,service mesh是微服务的未来,这样看来这两个以后都会被取代,只有spring boot能够继续存活。
这是两个作用和使用场景不同的框架,目前的情况来看都不会被淘汰。
springcloud用于微服务,dubbo用于服务治理,各有各的适用场景。
在国外springcloud使用的多,在国内dubbo使用的多。
springcloud由国外的spring团队开发维护,热度和可靠性不用多说,dubbo由国内的阿里巴巴开发,现交由Apache孵化器,可靠性也很高。
Spring cloud是当前主流的微服务架构,轻便,插件式的设计理念很赢得当前开发及企业的青睐,在很多方面优于dubbo的架构设计,我认为dubbo最终会被淘汰,但短时间内不会,因为很多金融机构之前很多系统用的是dubbo架构,金融机构在短时间内考虑系统和业务的稳定性不会立刻就更新换代
dubbo
***隐藏网址***
Dubbo与SpringCloud的区别和优缺点
以上内容均为官方定义,截图如下:
从以上定义中我们不难看出,Apache Dubbo的目标是基于RPC调用为主,并扩展相应的功能。 而SpringCloud是致力于提供分布式服务的各种工具。可以这样讲,Apache Dubbo从概念上讲只相当于SpringCloud中的feign而已。
Apache Dubbo: 诞生于阿里巴巴的线上需求,主要是为了应对微服务场景下高并发的处理,所以Apache Dubbo的核心关注点就是解决微服务之间调用的性能。 并且将包括服务注册/发现、负载均衡等微服务的核心内容进行了集成。最后在核心调用流程稳定的情况下完成了包括本地存根、Mock、版本控制等诸多特性的集成。
SpringCloud: SpringCloud是Spring家族中在微服务领域的关键组成部分,延续了Spring一贯的风格:为大家提供好用的工具,可以屏蔽底层实现,一站式完成业务开发。包括后面的SpringCloud Netflix和SpringCloud Alibaba等都是基于此完成工具的开发。我们可以大概数一数SpringCloud的工具内容,Ribbon【负载均衡】、Feign【HTTP服务】、Hystrix【熔断降级】、Gateway【网关】等等,从其中我们不难发现,SpringCloud对于微服务的调用的性能并不太关心,它更关心的是处理微服务调用以外的内容,虽然他勉为其难的搞了一个Feign,但是我们都知道,HTTP的调用是非常耗时的,它与RPC的调用效率完全不可同日而语。
综上所述:Apache Dubbo的目标是为了高效调用服务。SpringCloud的目标是一条龙解决微服务的治理问题,那么出发点都不同,比较的意义又在哪里呢。
事实上,目前我接触和了解的互联网大厂的项目里,单纯的使用SpringCloud的非常少。虽然不全是选用Apache Dubbo, 还有包括Thrift、Zero等微服务框架,但是Apache Dubbo的市场占有率会相对比较高,也是很多大厂项目的首选。
但是Apache Dubbo的服务治理其实并不太好用,比如熔断降级、限流等,同时Apache Dubbo还有一个比较麻烦的问题, 就是没有HTTP调用的逻辑,这一点对前后端分离的项目非常不友好。
基于以上内容,其实在实际项目中, Apache Dubbo和SpringCloud相结合才是目前比较主流的使用方式。服务之间的调用使用Apache Dubbo。熔断、网关、限流等使用SpringCloud。尤其是在拥有了SpringCloud Alibaba以后,SpringCloud与Apache Dubbo的结合更加紧密,这才是我个人建议的使用方式。
Spring Cloud
本文中我们主要介绍微服务开发框架——Spring Cloud。尽管Spring Cloud带有"Cloud"的字样,但它并不是云计算解决方案,而是Spring Boot的基础上构建的,用于快速构建分布式系统的通用模式的工具集。
Spring Cloud有以下特点:
由上图可知,Spring Cloud是以 英文单词+SR+数字 的形式命名版本号的。那么英文单词和SR分别表示什么呢?
因为Spring Cloud是一个综合项目,它包含很多子项目。由于子项目也维护着自己的版本号,Spring Cloud采用了这种命名方式,从而避免与子项目的版本混淆。其中英文单词如Edware是伦敦某地铁站名,它们按照字母顺序发行,可以将其理解为主版本的演进。SR表示"Service Release",一般表示Bug修复。
版本兼容性如下
版本内容
***隐藏网址***
我的上一篇博客(微服务理论篇)中谈到,对单体应用进行服务拆分得到各个微服务,而这些服务又是相互独立的,那么我们如何知道各个微服务的健康状态、如何知道某个微服务的存在呢?由此、一个拥有服务发现的框架显得尤为重要。这也就是Eureka诞生的原因。
综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。
通过使用Eureka已经实现了微服务的注册与发现。启动各个微服务时,Eureka Client会把自己的网络信息注册到Eureka Server上。似乎一切更美好了一些。然而,这样的架构依然有一些问题,如负载均衡。一般来说,各个微服务都会部署多个实例。那么服务消费者要如何将请求分摊到多个服务提供实例上呢?
如果服务提供者相应非常慢,那么消费者对提供者的请求就会被强制等待,知道提供者响应或超时。在高负载场景下,如果不作任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统崩溃。
微服务架构的应用系统通常包含多个服务层。微服务之间通过网络进行通信,从而支撑起整个应用系统,因此,微服务之间难免存在依赖关系。而这种由于"基础服务故障"导致"级联故障"的现象称为雪崩效应。
如图所示,A最为服务提供者(基础服务),B为A的服务消费者,C和D是B的服务消费者。当A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了。
那么Hystrix是如何容错的呢?
以下对该图做个简单讲解:
Zuul作为微服务架构中的微服务网关。微服务架构经过前几个组件的组合,已经有了基本的雏形了,那么我们为什么还要使用微服务网关呢?我们可以想象,一般情况下我们一个业务并不是只调用一个接口就可以完成一个业务需求。
如果让客户端直接与各个微服务通信,会有以下问题:
如图,微服务网关封装了应用程序的内部结构,客户端只须跟网关交互,而无须直接调用特定微服务接口。同时,还有以下优点:
为什么要同一管理微服务配置?
对于传统的单体应用,常常使用配置文件管理所有配置。例如一个Spring Boot 项目开发的单体应用,可以将配置内容放到*****文件中。如果需要切换环境,可以设置多个Profile,并在启用应用时指定*****={profile}。
而在微服务架构中,微服务的配置管理一般有以下需求:
dubbo和spring cloud区别
dubbo和spring cloud区别是Spring Cloud抛弃了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。严格来说,这两种方式各有优劣。
虽然在一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。
Dubbo和Spring Cloud并不是完全的竞争关系,两者所解决的问题域不一样:Dubbo的定位始终是一款RPC框架,而Spring Cloud的目的是微服务架构下的一站式解决方案。
非要比较的话,Dubbo可以类比到Netflix OSS技术栈,而Spring Cloud集成了Netflix OSS作为分布式服务治理解决方案,但除此之外Spring Cloud还提供了包括config、stream、security、sleuth等分布式服务解决方案。
当前由于RPC协议、注册中心元数据不匹配等问题,在面临微服务基础框架选型时Dubbo与Spring Cloud只能二选一,这也是两者总拿来做对比的原因。
***隐藏网址***
哪位大神比较过spring cloud和dubbo,各自的优缺点是什么
Dubbo 很久没有更新了.
springCloud最新的2017年也有发布版本.一直更新,而且springcloud,的子项目非常多.
包括了aws和总线服务,比Dubbo强很多.
spring-cloud-aws
spring-cloud-bus
spring-cloud-cli
spring-cloud-comm***
spring-cloud-contract
spring-cloud-config
spring-cloud-netflix
spring-cloud-security
spring-cloud-starters
spring-cloud-cloudfoundry
spring-cloud-cluster
spring-cloud-c***ul
spring-cloud-sleuth
spring-cloud-stream
spring-cloud-zookeeper
spring-boot
spring-cloud-task
Dubbo、SpringCloud和Kubernetes优缺点
总所周知,Dubbo、SpringCloud和Kubernetes是当前三个主流的开源框架和平台。
服务化框架和平台的选择是搭建微服务的一个基础,非常重要。其中Dubbo是阿里巴巴开源的,SpringCloud是netflix开源的,Kubernetes是谷歌开源的。它们都是分布式微服务框架平台的一套解决办法。值得一提的是,这3种产品其功能上是有重叠的,部分功能还可能是排他的,所以说不要相互之间进行混搭使用,架构保持一致性,维护起来也方便。
微服务的最终目的是要实现业务逻辑,实现业务价值。为了让开发人员更专注于业务逻辑的开发,通常微服务需要底层的基础设施的支撑,这些基础设施的支撑称为微服务公共关注点(Common Concerns)。如下图所示:
服务发现与负载均衡中,dubbo主要是基于Zookeeper实现的,阿里还开源了一个产品Nacos,其功能像Java版的C***ul,Nacos后续可能会替换zk成为dubbo首选的服务发现机制。
在API网关中,阿里没有开源网关,而K8s中则是定义了名叫Ingress规范,具体可以采用不同的实现,比如说Nginx,Envoy或者Traefik。
在配置管理中,Nacos也具备配置的功能。SpringCloud采用的是Config,其后端是基于Git进行配置管理的。
在服务框架中,K8s是与框架无关的,只认容器,不同的语言栈都可以住在K8s中,这是最大的亮点。
在自动伸缩和自愈方面,K8s具有自动故障和自愈的能力,自动伸缩需要引入额外的组件,完全实现是需要一定的门槛,感兴趣可以关注一下。
在进程隔离方面,K8s是通过容器进行进程隔离的,同时还引入Pod进一步对服务进行隔离。
在环境管理方面,K8s是内置Namespace进行逻辑隔离的,可以实现多环境,各个环境可以单独配置认证授权机制。
在流量治理方面,这里的流量治理指的是高级的流量调度、A、B和蓝绿部署的能力。Dubbo通过zk+client是支持一定的流量调度能力的。
Dubbo、SpringCloud是框架组件,K8s是平台。
所以我们在理解服务的关注点,根据企业上下文考量后选择,尽量不要混搭,保持体系的一致性。
看了大牛的分析,自己学到了很多。
spring cloud优点
要学习spring cloud不是一撮而就,微服务是一种思想,spring cloud只不过行业内的解决方案之一,微服务无非是通过请求串联起各个服务之间的关系,通俗点将就是你做了将原来的一个项目通过功能模块拆分为多个项目,通过网络请求调用其他项目的对外开放的接口,而微服务无非就是通过一个中间件来调度各个项目(说服务怕新手不理解),将服务注册到中间件上后该中间件监控各个项目的状态是否正常,通过其他的一些请求调度组件来分发请求,如ribbon,dubbo等,而将各各模块的拆分,有能够使各个模块能够独立部署,对一些请求频率较高的模块可以灵活部署,比如登录注册模块可能一天请求量才几万次,我单独部署一台服务器,而订单模块一天会有上千万笔订单,我可能就会在这个基础上将订单模块分别部署到多台服务器做负载,这是在技术层面
在用户体验层面上,微服务也更适合互联网项目,因为当你将项目拆分后,当其中的某一个模块出现问题,并不会影响整个项目,比如订单创建,和订单的后续处理拆分开来,当创建一笔订单后在创建第二笔订单时,订单创建模块宕机,或者oom,在传统项目中,后续的订单处理,包括登录等等模块都会失效,但是微服务思想却能避免这种问题
本文相关文章:
acti***的中文意思(acti***speaklouderthanwords这是什么意思)
2026年5月3日 04:20
深入理解spring(深入理解Spring Cloud一(4)Bean中的属性是如何刷新的)
2026年4月2日 20:00
springcloud各组件详解(18.SpringCloud有哪些组件)
2026年3月30日 10:40
更多文章:
powerpoint没保存怎么恢复(如何恢复意外关闭未保存的ppt文档)
2026年5月7日 13:00
python中zip()函数的用法(python中zip函数有哪些高级用法)
2026年5月7日 12:40
springcloud的优缺点(spring cloud和dubbo哪个会被淘汰)
2026年5月7日 12:20
结构体初始化列表(C++ 在给结构体赋值时,其中几个参数不赋值,那这个几个参数的值是什么,是0或null吗)
2026年5月7日 12:00
socket recvfrom(Socket 通信之 UDP 通信)
2026年5月7日 11:40
云计算培训 linux工程师(Linux云计算培训完的薪资大概多少)
2026年5月7日 11:20



