Spring Cloud 比较
Spring Cloud 比较
一、简介
1、SpringCloud:一套微服务架构下的一站式解决方案,理念就是解决我们在微服务架构中遇到的任何问题;
2、SpringCloudAlibaba:阿里实现对SpringCloud组件进行扩展;
3、SpringCloudTencent:腾讯实现对SpringCloud组件进行扩展;
二、区别
| 名称 | SpringCloud | SpringCloudAlibaba | SpringCloudTencent |
|---|---|---|---|
| 注册中心 | Eureka、Consul | Nacos | polaris-discovery |
| 配置中心 | SpringCloud Config | Nacos | polaris-config |
| 网 关 | SpringCloud Zuul | SpringCloud Gateway | polaris-router |
| 负载均衡 | Ribbon | Loadbalancer | polaris-loadbalancer |
| 熔断降级 | Hystrix | Sentinel | polaris-circuitebreaker/ratelimit |
| 服务调用 | Feign | OpenFeign | Feign |
Dubbo 与 Spring Cloud 的区别
Dubbo 是阿里巴巴开源的RPC框架,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。
两者都是现在主流的微服务框架,但却存在不少差异:
- 初始定位不同:SpringCloud定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理
- 生态环境不同:SpringCloud依托于Spring平台,具备更加完善的生态体系;而Dubbo一开始只是做RPC远程调用,生态相对匮乏,现在逐渐丰富起来。
- 调用方式:SpringCloud是采用Http协议做远程调用,接口一般是Rest风格,比较灵活;Dubbo是采用Dubbo协议,接口一般是Java的Service接口,格式固定。但调用时采用Netty的NIO方式,性能较好。
- 组件差异比较多,例如SpringCloud注册中心一般用Eureka,而Dubbo用的是Zookeeper
SpringCloud生态丰富,功能完善,更像是品牌机;Dubbo则相对灵活,可定制性强,更像是组装机。
两者的生态对比:
| 功能 | Dubbo | SpringCloud |
| 服务注册中心 | Zookeeper | Eureka(主流)、Nacos、Consul、zookeeper |
| 服务调用方式 | RPC基于Dubbo协议 | REST API 基于Http协议 |
| 服务监控 | Dubbo-Monitor | Spring Boot Admin |
| 熔断器 | 不完善 | Spring Cloud Netflix Hystrix |
| 服务网关 | 无 | Spring Cloud Netflix Zuul、Gateway |
| 分布式配置 | 无 | Spring Cloud Config |
| 服务跟踪 | 无 | Spring Cloud Sleuth+Zipkin(一般) |
| 数据流 | 无 | Spring Cloud Stream |
| 批量任务 | 无 | Spring Cloud Task |
| 信息总线 | 无 | Spring Cloud Bus |
Spring Cloud 的功能很明显比 Dubbo 更加强大,涵盖面更广,而且作为 Spring 的旗舰项目,它也能够与 Spring Framework、Spring Boot、Spring Data、Spring Batch 等其他 Spring 项目完美融合,这些对于微服务而言是至关重要的。
使用 Dubbo 构建的微服务架构就像组装电脑,各环节选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果使用者是一名高手,那这些都不是问题。
而 Spring Cloud 就像品牌机,在 Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础原理有足够的了解。
Spring Cloud
springcloud的版本说明:
- springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布
- springcloud的F版本是基于springboot的2.0.x构建,之前的是基于springboot的1.5.x构建
SpringCloud的5大核心组件:
- Eureka:注册中心
- Zuul:服务网关
- Ribbon:负载均衡
- Feign:服务调用
- Hystix:熔断器
将微服务划分为外部服务和内部服务
- 外部服务:以终端划分的外部服务,如api-admin、api-pc、api-applets、api-app、api-h5,提供对外(用户)的API 接口数据 。
- 外部服务提供Feign服务通信调用内部服务获取数据。
- 内部服务:如订单服务、用户服务、商品服务、内容服务等内部服务,提供增删改查(搜索)等基本数据库操作
微服务介绍
微服务架构,重点在一个微字,简单的说就是将单体服务拆分成更多更小的服务,每个服务都是一个独立的,可以运行的项目。我们来看一张图:

这么拆有什么好处?
- 没有拆分之前,你修改一个功能,进行测试,部署上线,可能要一个月,要考虑对其他服务的影响,考虑其他人改动代码的影响,还要对整个系统功能全量回归测试,费事费力,可能上线基本上就得1个月,那么服务拆分之后,可以独立打包,测试,部署,升级,只需要关心自己的功能,随时可以安排上线。而且每个微服务都有清晰的任务划分,利于扩展。总之,拆分之后对于开发人员来说是非常爽的一件事。
- 有好处那就有缺点,服务多了之后,要考虑怎么管理维护,使用的架构也不一样,技术学习成本也会上升。
微服务架构常见的问题
- 一旦决定采用微服务架构系统,就会面临以下几个不能饶过的问题:
- 这么多服务,怎么管理?
- 这么多服务,他们之间怎么通讯?
- 这么多服务,用户应该怎么访问他们?
- 这么多服务,一旦出现问题了,怎么进行自处理?
- 这么多服务,一旦出现问题了,怎么进行问题排查?
- 上面的这些问题,是任何一个微服务设计者都绕不过去的,市面上一些微服务架构产品就是提供了一系列的组件来解决上述问题。
- 来看一个常见的微服务架构图

- 一旦决定采用微服务架构系统,就会面临以下几个不能饶过的问题:
Spring Cloud 比较的更多相关文章
- spring/spring boot/spring cloud开发总结
背景 针对RPC远程调用,都在使用dubbo.dubbox等,我们也是如此.由于社区暂停维护.应对未来发展,我们准备尝试新技术(或许这时候也不算什么新技术了吧),选择使用了spring ...
- 转 Netflix OSS、Spring Cloud还是Kubernetes? 都要吧!
Netflix OSS.Spring Cloud还是Kubernetes? 都要吧! http://www.infoq.com/cn/articles/netflix-oss-spring-cloud ...
- spring cloud 学习研究- spring-cloud-microservice-example
spring cloud + docker 微服务架构 http://www.open-open.com/lib/view/open1437363835818.html 实例项目 https://gi ...
- Spring Cloud集成相关优质项目推荐
Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus 事件.消 ...
- spring boot分布式技术,spring cloud,负载均衡,配置管理器
spring boot分布式的实现,使用spring cloud技术. 下边是我理解的spring cloud的核心技术: 1.配置服务器 2.注册发现服务器eureka(spring boot默认使 ...
- Spring Cloud 配置服务
Spring Cloud 配置服务 1. 配置服务简介 产生背景: 传统开发中,我们通常是将系统的业务无关配置(数据库,缓存服务器)在properties中配置,在这个文件中不会经常改变,但随着系统规 ...
- Microservices Reference Architecture - with Spring Boot, Spring Cloud and Netflix OSS--转
原文地址:https://www.linkedin.com/pulse/microservices-reference-architecture-spring-boot-cloud-anil-alle ...
- 综合使用spring cloud技术实现微服务应用
在之前的章节,我们已经实现了配置服务器.注册服务器.微服务服务端,实现了服务注册与发现.这一章将实现微服务的客户端,以及联调.实现整个spring cloud框架核心应用. 本文属于<7天学会s ...
- Spring cloud实现服务注册及发现
服务注册与发现对于微服务系统来说非常重要.有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访问到服务. 本文属于<7天学会spring cloud系列& ...
- 使用spring cloud实现分布式配置管理
<7天学会spring cloud系列>之创建配置管理服务器及实现分布式配置管理应用. 本文涉及到的项目: 开源项目:http://git.oschina.net/zhou666/spri ...
随机推荐
- LVS负载均衡(7)-- LVS+keepalived实现高可用
目录 1. LVS+keepalived实现高可用 1.1 实验环境说明 1.2 路由器配置 1.3 WEB服务器nginx配置 1.4 LVS+keepalived配置 1.4.1 keepaliv ...
- WEB服务与NGINX(2)-NGINX的I/O模型
WEB服务与NGINX(2)-NGINX的I/O模型 目录 WEB服务与NGINX(2)-NGINX的I/O模型 1. linux I/0模型及在NGINX中的应用 1.1 I/O模型概述 1.2 系 ...
- 抽丝剥茧:详述一次DevServer Proxy配置无效问题的细致排查过程
事情的起因是这样的,在一个已上线的项目中,其中一个包含登录和获取菜单的接口因响应时间较长,后端让我尝试未经服务转发的另一域名下的新接口,旧接口允许跨域请求,但新接口不允许本地访问(只允许发布测试/生产 ...
- Pageoffice6 实现后台批量生成Word文档
在实际项目开发中经常会遇到后台动态生成文档的需求,目前网上有一些针对此需求的方案,如果您想要了解这些方案的对比,请查看后台生成单个Word文档中的"方案对比". 如果一次只生成一份 ...
- selenium遇到手机验证码怎么解决
完整代码在: selenium使用案例 解决思路,点击发送送验证码,程序用input方法去和人进行交互,手动输入验证码,按回车键,这样程序就接收到手机验证码了,再把验证码赋值给验证码框,继续往下操作 ...
- Mono 支持LoongArch架构
近期,著名的.NET开源社区Mono正式支持LoongArch(龙架构),目前LoongArch64架构已出现在.NET社区主干分支上. 详细内容可以跟踪 https://github.com/mon ...
- Java生成微信小程序码
官网文档地址:获取小程序码 package test; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.cor ...
- Swoole 源码分析之 Http Server 模块
首发原文链接:Swoole 源码分析之 Http Server 模块 Swoole 源码分析之 Http Server 模块 Http 模块的注册初始化 这次我们分析的就是 Swoole 官网的这段代 ...
- k8s 1.24 service account 版本以后怎么获取永不过期token?
问题产生背景: 一个服务操作多个k8s集群, 这个时候就会出现授权问题.k8s 1.24版本之前sa账号产生的token在secret中是永久不过期的.在1.24版本以后secret将不再保留toke ...
- rhce练习题容易错的地方
rhce练习题里容易错的地方 使用导航器的时候,ssh连接 因为导航器是一个工具,生成一个容器,在容器里面运行playbook 安装软件包的时候,多个软件包使用循环loop loop的格式 - hos ...