本人博客:技术栈
SpringCloud 简介
尽管SpringCloud带有 ‘Cloud’ 的字样,但是并不是云计算解决方案,而是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式的工具集。
使用SpringCloud开发的应用程序非常适合在Docker或者PaaS上部署,所以又叫做云原生应用。云原生可以简单理解为面向云环境的软件框架。
Spring Cloud 特点
- 约定优于配置
- 适用于各种环境
- 隐藏了组件的复杂性
- 开箱即用
- 轻量级的组件
- 组件丰富
- 选型中立、丰富
- 灵活
学习SpringCloud 技术储备
SpringCloud并不是面向零基础开发人员,它有一定的学习曲线。 - 语言基础:SpringCloud是基于java语言的工具套件,一定要有java基础。
- SpringBoot:SpringCloud是基于SpringBoot构建的,因此它延续了SpringBoot的契约模式以及开发方式。
- 项目管理与构建工具: 目前业界比较主流的项目管理与构建工具有Maven和Gradle等,我个人使用的是Maven
SpringCloud/SpringBoot版本兼容性 - Angel版本基于SpringBoot1.2.x构建,在一些场景下,与SpringBoot1.3.x及以上版本不兼容。
- Brixton版本基于SpringBoot1.3.x构建,也可使用1.4.x进行测试,与SpringBoot1.2.x不兼容。
- Camden版本基于SpringBoot1.4.x构建,也可使用1.5.x进行测试。
- Dalston版本基于SpringBoot1.5.x构建,不兼容SpringBoot2.0.x。
- Edgware版本基于SpringBoot1.5.x构建,不兼容SpringBoot2.0.x。
- Finchley版本基于SpringBoot2.0.x构建,不兼容SpringBoot1.x。
个人在使用springCloud构建微服务框架的时候感觉还是比较简单的,相对于使用阿里云的Dubbo,SpringCloud提供了很多的组件,有自己的注册中心,Dubbo使用zookeeper做自己的注册中心,SpringCloud有自己的网关、配置中心、服务跟踪、消息总线等,Dubbo是没有的,相对于SpringCloud的断路器HystrixDubbo也不完善。
Dubbo | Spring Cloud | |
---|---|---|
服务注册中心 | Zookeeper | Spring Cloud Netflix Eureka |
服务调用方式 | RPC | REST API |
服务监控 | Dubbo-monitor | Spring Boot Admin |
断路器 | 不完善 | Spring Cloud Netflix Hystrix |
服务网关 | 无 | Spring Cloud Netflix Zuul |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
最大的区别: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只能二选一,这也是两者总拿来做对比的原因。
Dubbo之后会积极寻求适配到Spring Cloud生态,比如作为SpringCloud的二进制通讯方案来发挥Dubbo的性能优势,或者Dubbo通过模块化以及对http的支持适配到Spring Cloud