1.SpringCloud和Dubbo都是现在主流的微服务架构

(1)SpringCloud是Apache旗下的Spring体系下的微服务解决方案
(2)Dubbo是阿里系的分布式服务治理框架
(3)Dubbo使用的是RPC远程调用
     <1>RPC最主要的缺陷就是服务提供方和调用方式之间依赖太强
     <2>需要为每一个微服务进行接口的定义,并通过持续继承发布
     <3>需要严格的版本控制才不会出现服务提供和调用之间因为版本不同而产生的冲突
(4)SpringCloud使用的是 Rest API,更符合微服务官方的定义
     <1>REST是轻量级的接口,服务的提供和调用不存在代码之间的耦合
     <2>只是通过一个约定进行规范
     <3>有可能出现文档和接口不一致而导致的服务集成问题,但可以通过swagger工具整合,是代码和文档一体化解决
     <4>REST在分布式环境下比RPC更加灵活
(5)Dubbo使用了第三方的ZooKeeper作为其底层的注册中心,实现服务的注册和发现
(6)SpringCloud使用Spring Cloud Netflix Eureka实现注册中心
     <1>SpringCloud也可以使用ZooKeeper实现
     <2>实际开发中不会这样使用
(7)服务网关:Dubbo没有本身的实现,只能通过其他第三方技术的整合  
(8)SpringCloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发
     <1>SpringCloud还支持断路器
     <2>与git完美集成分布式配置文件支持版本控制
     <3>事务总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素

2.技术选型

(1)Dubbo在其他维度上的缺陷可以由其他第三方框架进行集成进行弥补
(2)Dubbo的发展方向是积极适应SpringCloud生态,并不是起冲突
(3)DubboX在对Dubbo的增强中增加了对REST的支持

3.文档质量和社区活跃度

(1)SpringCloud社区活跃度远高于Dubbo
(2)Dubbo经过多年的积累文档相当成熟,对于微服务的架构体系各个公司也有稳定的现状

4.SpringBoot和SpringCloud

(1)SpringBoot是Spring对于传统配置的高度封装
      <1>用于解决传统框架配置文件冗余,装配组件繁杂的基于Maven的解决方案
      <2>SpringBoot专注于快速方便的开发单个个体的微服务
      <3>SpringBoot并不依赖SpringCloud,甚至还可以和Dubbo进行优秀的整合开发
(2)SpringCloud是关注全局的微服务协调整理治理框架,整合并管理各个微服务
      <1>为各个微服务之间提供,配置管理,服务发现,断路器,路由,事件总线等集成服务
      <2>SpringCloud依赖于SpringBoot,属于依赖关系