原创

微服务开发框架Spring Cloud讲解与Dubbo对比

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

正文到此结束
本文目录