SpringCloud全家桶学习之概览(一)
一、概览
根据百度百科的描述,微服务架构是一项在云中部署应用和服务的新技术。而SpringCloud是微服务架构思想的一个具体实现,它为开发人员提供了构建分布式系统中一些常见模式的工具(服务注册与发现、熔断器、分布式配置、网关、控制总线等),SpringCloud是基于SpringBoot框架,它不是重复造轮子,而是将第三方实现的微服务应用的一些模块集成,准确来说,SpringCloud是一个容器。
二、SpringCloud与Dubbo对比
目前在工作中一直用的是Dubbo2.7,趁着空闲时间,学习一下SpringCloud,看了网上很多关于二者对比。
以下图片及内容部分转自(https://www.cnblogs.com/xishuai/archive/2018/04/13/dubbo-and-spring-cloud.html和https://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全家桶学习之概览(一)的更多相关文章
- SpringCloud全家桶学习之Feign负载均衡----Feign(四)
一.Feign概述 (1)Feign是什么? 官网地址:https://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-f ...
- SpringCloud全家桶学习之一阶段总结(一)
一.概述 前几篇小博客记录了我学习SpringCloud组件的过程,并与工作中所用的Dubbo框架做了一点比较,基本组件:Eureka.Ribbon.Hystrix.Feign.Zuul.Config ...
- SpringCloud全家桶学习之分布式配置中心----Config(七)
一.概述 (1)背景 微服务意味着将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中出现大量的服务.由于每个服务都需要配置必要的配置信息才能运行,所以一套集中式的.动态的配置管理 ...
- SpringCloud全家桶学习之服务注册与发现及Eureka高可用集群搭建(二)
一.Eureka服务注册与发现 (1)Eureka是什么? Eureka是NetFlix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故 ...
- SpringCloud全家桶学习之消息总线---SpringCloud Bus
一.概述 ConfigClient(微服务)从ConfigServer端获取自己对应的配置文件,但是目前的问题是:当远程git仓库配置文件发生改变时,每次都是需要重启ConfigCient(微服务), ...
- SpringCloud全家桶学习之断路器---Hystrix(五)
目前我也在摸索着学习Spring Cloud,本节主要摸索的是服务熔断.服务降级.Hystrix服务监控. 一.Hystrix概述 (1)服务雪崩 服务雪崩:多个微服务之间调用的时候,假设微服务A调用 ...
- SpringCloud全家桶学习之路由网关----Zuul(六)
一.Zuul概述 (1)Zuul是什么? Zuul包含了对请求的路由和过滤的两个最主要的功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础:而过滤功能则负责对请求的 ...
- SpringCloud全家桶学习之客户端负载均衡及自定义负载均衡算法----Ribbon(三)
一.Ribbon是什么? Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具(这里区别于nginx的负载均衡).简单来说,Ribbon是Netf ...
- 框架用多了真的会死人的,spring-cloud全家桶与mybitais 集成完整示例(附下载)
题外话: 看到这一长串包含各种技术名词的标题,一路走来感觉研发深深的被各种框架给绑架了,从我们刚出生最简单的jsp,servlet打天下,到spring mvc的盛行,再到现在spring-boo ...
随机推荐
- JavaScript对象之原型链
一个js对象,除了自己设置的属性外,还会自动生成proto.class.extensible属性,其中,proto属性指向对象的原型. 对象的属性也有writable.enumerable.confi ...
- MSSQL 打开xp_cmdshell
sp_configure reconfigure go sp_configure reconfigure go
- TOYS(计算几何-入门)
题目 ‘^’代表叉乘 ‘•’代表点乘 点积:a•b=ax*bx+ay*by 叉积:a^b=ax*by-bx*ay
- freopen函数的使用以及freopen与fopen的区别
freopen函数的使用:参见这篇博客https://www.cnblogs.com/moonlit/archive/2011/06/12/2078712.html 当我们求解acm题目时,通常在设计 ...
- 【音乐欣赏】《紅蓮華》 - LiSA
曲名:紅蓮華 作者:LiSA [00:00.92]強くなれる理由を知った [00:07.34]僕を連れて 進め [00:18.74]泥だらけの走馬灯に酔う [00:24.37]強張る心 震える手は [ ...
- ansible笔记(2):管理清单配置详解
前情提要:管理清单(Iventory)配置文件/etc/ansible/hosts.通过修改该配置文件以达到管理受控主机的目的. 在我的实验平台上有3台主机:192.168.232.181(an ...
- [CF]Round510
由于我的codeforces的帐号登不上,所以我错过了这场比赛,只好赛后再抄题解自己做. A Benches 最大的情况就是所有人都挤在那个人最多的长椅上,最小的情况是所有人尽量平均的坐. #incl ...
- html滑动
$('html, body').animate({scrollTop: 1500}, 'fast');
- eclipse中引入聚合工程
一般我们在导入项目的时候都是直接import project, 这对普通java 项目,还是 web 项目,或者是单体的项目都是没有问题的,但是在导入聚合项目的时候这样倒入会使maven的子模块没法被 ...
- python正则匹配次数,贪婪和非贪婪
贪婪模式 {m,n}表示匹配子串的次数>=m and <=n,再此分为内匹配次数尽可能的多 贪婪模式 {,n}表示 >=0 and <=n 贪婪模式 {m,} 表示> ...