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 ...
 
随机推荐
- 关于SQL数据库Varchar字符串类型长度设计问题(转载)
			
为什么要合理的设计数据库字段数据类型的长度?个人观点:一个是降低物理上的存储空间,一个是提高数据库的处理速度,还有一个附带功能是能校验数据是否合法. 现代数据库一般都支持CHAR与VARCHAR字 ...
 - 一键自动化博客发布工具,用过的人都说好(infoq篇)
			
infoq的博客发布界面也是非常简洁的.首页就只有基本的标题,内容和封面图片,所以infoq的实现也相对比较简单. 一起来看看吧. 前提条件 前提条件当然是先下载 blog-auto-publishi ...
 - C语言:send + more = money,单词相加求解字母数字谜问题
			
我用的是穷举法,虽然有点笨,但是在想不到其他更好的方法对我而言就是穷举法. 有程序员大大想到其他方法也可以私信我一起探讨一下~ #include<stdio.h> int main() { ...
 - SQL Server使用for xml path 多行合并成一行,逗号分隔,拆解分析实现原理
			
我们写sql脚本处理数据的时候 针对部分数据进行group by 分组,分组后需要将部分数据放入分组后的行里面以逗号分隔. 举一个简单例子: 如上图的数据,需要对学生进行分组,取得学生都参与了哪些学科 ...
 - Excel功能学习
			
字符串和单元格内容拼接函数CONCATENATE a@马踏星空:=CONCATENATE(D2,E2,F2)拼接指定单元格内字符串,无分隔符 a@马踏星空:=CONCATENATE(I4," ...
 - python-一种去掉前后缀获取子串的方法
			
假设有一个字符串,其数据组成方式为:"mode_id1_str_id2",其中id1和id2为任意个数的数字,若存在mode,则id1必然也存在,否则都不存在:id2可有可没有. ...
 - 使用python批量获取excel的sheet名称
			
这个脚本的重用是批量读取excel并获取每个excel的所有sheet名输出到一个文件中. 环境:python 3.7.3 1 # -*- coding:utf-8 -*- 2 3 ''' 4 本代码 ...
 - (C#) IIS 响应标头过滤敏感信息(如:Server/X-Powered-By等) 运维知识
			
背景: 再一次净网行动中,客户要求安全改造发现了接口请求的header标头中出现如图中的敏感信息. 说明: 其意义在于告知浏网站是用什么语言或者框架编写的.解决办法就是修改该响应头为一个错误的值,将攻 ...
 - The model backing the 'MainDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).
			
The model backing the 'MainDbContext' context has changed since the database was created. Consider u ...
 - __proto__和[[Prototype]]的区别
			
__proto__和[[Prototype]]的区别 先看下面这一段代码: const obj1 = Object.create(null); // very plain object obj1.__ ...