根据百度百科的描述,微服务架构是一项在云中部署应用和服务的新技术。而SpringCloud是微服务架构思想的一个具体实现,它为开发人员提供了构建分布式系统中一些常见模式的工具(服务注册与发现、熔断器、分布式配置、网关、控制总线等),SpringCloud是基于SpringBoot框架,它不是重复造轮子,而是将第三方实现的微服务应用的一些模块集成,准确来讲,SpringCloud是一个容器。html
目前在工做中一直用的是Dubbo2.7,趁着空闲时间,学习一下SpringCloud,看了网上不少关于两者对比。前端
如下图片及内容部分转自(https://www.cnblogs.com/xishuai/archive/2018/04/13/dubbo-and-spring-cloud.html和http://www.javashuo.com/article/p-kplatgkd-kz.html),若有侵权,请联系删除。linux
打个比方:SpringCloud至关于整机,组件都至关完整;而Dubbo至关于组装机,组件能够按本身需求自由选择;总体来讲,整机的性能有保证,组装的机子更自由。spring
Dubbo专一于RPC和服务治理,Spring Cloud则是一个微服务架构生态。后端
每一个组件都是须要部署在单独的服务器上,GateWay用来接收前端请求、聚合服务,并批量调用后台原子服务、每一个Service单独与DB交互。服务器
①GateWay:前置网关,具体业务操做,GateWay经过Dubbo提供的负载均衡机制自动完成(Dubbo自己并无提供网关)架构
②Service:原子服务,只提供该业务相关的原子服务负载均衡
③Zookeeper:原子服务注册到ZK上。框架
①全部请求都统一经过网关(Zuul)来访问内部服务分布式
②网关接收到请求后,从注册中心(Eureka)获取可用服务
③由Ribbon进行负载均衡后,分发到后端的具体实例
④微服务之间经过Feign进行通讯业务处理
①业务部署方式相同,都须要一个前置网关来隔绝外部直接调用原子服务的风险。
②Dubbo须要本身开发一套API网关(目前我所在公司是公司开发网关API+分布式配置Disconf,disconf---分布式配置管理平台的搭建(linux版本)),而SpringCloud则能够经过Zuul配置便可完成网关定制。
①支持RPC调用,性能较好
②支持多种序列化协议,如Hessian、Http、WebService
③Dubbo Admin后台管理功能强大,提供了权重调节、负载均衡等
④中文文档比较全面
①Registry严重依赖第三方组件(Zookeeper、Redis等),当这些组件出现问题时,服务调用很快就会中断。
②Dubbo只是实现了服务治理,其余微服务框架并未包含,若是须要使用则须要结合第三方框架实现(百度分布式配置Disconf、京东服务跟踪Hydra)、开发成本较大
①有强大的Spring社区、NetFlix等公司支持,且开源社区贡献很是活跃
②分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体
③基于SpringBoot,具备简单配置、快速开发、轻松部署、方便测试的优势
④支持REST服务调用,相对于RPC,更加轻量化和灵活,有利于跨语言服务的实现以及服务的发布部署,结合Swagger实现服务的文档一体化
⑤提供了Docker及Kubernetes微服务编排支持
①REST服务调用性能会比RPC性能较低
②Spring Cloud整合了大量的组件,相关文档比较复杂,须要针对性的阅读
③支持REST服务调用,可能由于接口定义太轻,致使定义文档与实际实现不一致致使服务集成时的问题(可使用统一文档和版本管理解决,好比Swagger)
目前Spring Cloud也是很是火热的,社区更新也比较快,因此什么都学一点,生活更多彩一些。下面正式开始demo学习Spring Cloud,并附上结构图。
理无专在、学无止境。