一、概览

  根据百度百科的描述,微服务架构是一项在云中部署应用和服务的新技术。而SpringCloud是微服务架构思想的一个具体实现,它为开发人员提供了构建分布式系统中一些常见模式的工具(服务注册与发现、熔断器、分布式配置、网关、控制总线等),SpringCloud是基于SpringBoot框架,它不是重复造轮子,而是将第三方实现的微服务应用的一些模块集成,准确来说,SpringCloud是一个容器。

二、SpringCloud与Dubbo对比

  目前在工作中一直用的是Dubbo2.7,趁着空闲时间,学习一下SpringCloud,看了网上很多关于二者对比。

以下图片及内容部分转自(https://www.cnblogs.com/xishuai/archive/2018/04/13/dubbo-and-spring-cloud.htmlhttps://blog.csdn.net/zhangweiwei2020/article/details/78646252),如有侵权,请联系删除。

  打个比方:SpringCloud相当于整机,组件都相当完整;而Dubbo相当于组装机,组件可以按自己需求自由选择;整体来说,整机的性能有保证,组装的机子更自由。

  

  Dubbo专注于RPC和服务治理,Spring Cloud则是一个微服务架构生态。

三、两者运行流程对比

(1)Dubbo

  每个组件都是需要部署在单独的服务器上,GateWay用来接收前端请求、聚合服务,并批量调用后台原子服务、每个Service单独与DB交互。

  

  ①GateWay:前置网关,具体业务操作,GateWay通过Dubbo提供的负载均衡机制自动完成(Dubbo本身并没有提供网关)

   ②Service:原子服务,只提供该业务相关的原子服务

  ③Zookeeper:原子服务注册到ZK上。

(2)SpringCloud

  

  ①所有请求都统一通过网关(Zuul)来访问内部服务

  ②网关接收到请求后,从注册中心(Eureka)获取可用服务

  ③由Ribbon进行负载均衡后,分发到后端的具体实例

  ④微服务之间通过Feign进行通信业务处理

(3)总结

  ①业务部署方式相同,都需要一个前置网关来隔绝外部直接调用原子服务的风险。

  ②Dubbo需要自己开发一套API网关(目前我所在公司是公司开发网关API+分布式配置Disconf,disconf---分布式配置管理平台的搭建(linux版本)),而SpringCloud则可以通过Zuul配置即可完成网关定制。

(4)优缺点

Dubbo优点:

       ①支持RPC调用,性能较好

       ②支持多种序列化协议,如Hessian、Http、WebService

       ③Dubbo Admin后台管理功能强大,提供了权重调节、负载均衡等

       ④中文文档比较全面

Dubbo不足:

       ①Registry严重依赖第三方组件(Zookeeper、Redis等),当这些组件出现问题时,服务调用很快就会中断。

       ②Dubbo只是实现了服务治理,其他微服务框架并未包含,如果需要使用则需要结合第三方框架实现(百度分布式配置Disconf、京东服务跟踪Hydra)、开发成本较大

Spring Cloud优点:

       ①有强大的Spring社区、NetFlix等公司支持,且开源社区贡献非常活跃

       ②分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体

       ③基于SpringBoot,具有简单配置、快速开发、轻松部署、方便测试的优点

       ④支持REST服务调用,相对于RPC,更加轻量化和灵活,有利于跨语言服务的实现以及服务的发布部署,结合Swagger实现服务的文档一体化

       ⑤提供了Docker及Kubernetes微服务编排支持

Spring Cloud不足:

       ①REST服务调用性能会比RPC性能较低

       ②Spring Cloud整合了大量的组件,相关文档比较复杂,需要针对性的阅读

       ③支持REST服务调用,可能因为接口定义过轻,导致定义文档与实际实现不一致导致服务集成时的问题(可以使用统一文档和版本管理解决,比如Swagger)

四、SpringCloud学习

  目前Spring Cloud也是非常火热的,社区更新也比较快,所以什么都学一点,生活更多彩一些。下面正式开始demo学习Spring Cloud,并附上结构图。

五、Spring Cloud学习总结

  理无专在、学无止境。

SpringCloud全家桶学习之概览(一)的更多相关文章

  1. SpringCloud全家桶学习之Feign负载均衡----Feign(四)

    一.Feign概述 (1)Feign是什么? 官网地址:https://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-f ...

  2. SpringCloud全家桶学习之一阶段总结(一)

    一.概述 前几篇小博客记录了我学习SpringCloud组件的过程,并与工作中所用的Dubbo框架做了一点比较,基本组件:Eureka.Ribbon.Hystrix.Feign.Zuul.Config ...

  3. SpringCloud全家桶学习之分布式配置中心----Config(七)

    一.概述 (1)背景 微服务意味着将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中出现大量的服务.由于每个服务都需要配置必要的配置信息才能运行,所以一套集中式的.动态的配置管理 ...

  4. SpringCloud全家桶学习之服务注册与发现及Eureka高可用集群搭建(二)

    一.Eureka服务注册与发现 (1)Eureka是什么? Eureka是NetFlix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故 ...

  5. SpringCloud全家桶学习之消息总线---SpringCloud Bus

    一.概述 ConfigClient(微服务)从ConfigServer端获取自己对应的配置文件,但是目前的问题是:当远程git仓库配置文件发生改变时,每次都是需要重启ConfigCient(微服务), ...

  6. SpringCloud全家桶学习之断路器---Hystrix(五)

    目前我也在摸索着学习Spring Cloud,本节主要摸索的是服务熔断.服务降级.Hystrix服务监控. 一.Hystrix概述 (1)服务雪崩 服务雪崩:多个微服务之间调用的时候,假设微服务A调用 ...

  7. SpringCloud全家桶学习之路由网关----Zuul(六)

    一.Zuul概述 (1)Zuul是什么? Zuul包含了对请求的路由和过滤的两个最主要的功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础:而过滤功能则负责对请求的 ...

  8. SpringCloud全家桶学习之客户端负载均衡及自定义负载均衡算法----Ribbon(三)

    一.Ribbon是什么? Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端  负载均衡的工具(这里区别于nginx的负载均衡).简单来说,Ribbon是Netf ...

  9. 框架用多了真的会死人的,spring-cloud全家桶与mybitais 集成完整示例(附下载)

    ​ 题外话: 看到这一长串包含各种技术名词的标题,一路走来感觉研发深深的被各种框架给绑架了,从我们刚出生最简单的jsp,servlet打天下,到spring mvc的盛行,再到现在spring-boo ...

随机推荐

  1. HTTP慢速攻击

    漏洞原理 HTTP慢速攻击也叫slow http attack,是一种DoS攻击的方式.由于HTTP请求底层使用TCP网络连接进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的 ...

  2. Bayer Pattern

    在刚加入工作的时候,听到最多的就是RGGB Bayer Pattern.在之前的接触中,一直默认一张图片的每个像素点有RGB三个分量,那“RGGB Bayer Pattern”究竟是什么意思.在网上查 ...

  3. 12.动态内存和智能指针、 直接管理内存、shared_ptr和new结合使用

    12.动态内存和智能指针 1.智能指针分为两种shared_ptr和unique_ptr,后者独占所指向的对象.智能指针也是模板,使用时要用尖括号指明指向的类型.类似emplace成员,make_sh ...

  4. apache 二级域名设置

    1. 你要拥有一个有泛域名解析的顶级域名,例如:test.com 在dns服务上设置,域名服务商都提供此服务 www.test.com      指向服务器IPtest.com          指向 ...

  5. 测试理论 - Test Double

    概述 简述 test double mock, fake 之类的东西 背景 最近在看 google 软件测试之道 妈的 13 年的老书了 书里有提到 mock, fake, stub 刚好, 我又不太 ...

  6. 软件工程2020第一次作业(by cybersa)

    1 作业描述 作业属于哪个课程 2020春福大软工实践W班 这个作业要求在哪里 寒假作业(1/2) 这个作业的目标 建立博客.掌握markdown语法,学习写博客,回顾,总结,展望自己的学习历程 作业 ...

  7. java基础(七)之子类实例化

    知识点;1.生成子类的过程2.使用super调用父类构造函数的方法 首先编写3个文件. Person.java class Person{ String name; int age; Person() ...

  8. FFmpeg—— Bitstream Filters 作用

    原文链接: https://stackoverflow.com/questions/32028437/what-are-bitstream-filters-in-ffmpeg Let me expla ...

  9. codeforces 1189C Candies! / 前缀和

    http://codeforces.com/problemset/problem/1189/C 求一下前缀和,给定区间的数字和除以10就是答案 AC代码: #include<iostream&g ...

  10. 基于语音识别、音文同步、图像OCR的字幕解决方案HtwMedia介绍

    背景介绍 俗话说,“好记性不如乱笔头”,这充分说明了文字归档的重要性.如今随着微信.抖音等移动端app的使用越来越广,人们生产音.视频内容也越来越便捷.而相比语音和视频而言,文字具有易存档.易检索.易 ...