1.1 SpringCloud是什么
SpringCloud,基于 SpringBoot 提供了一套服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。
SpringCloud 利用 SpringBoot 的开发便利性,巧妙地简化了分布式系统基础设施的开发,SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式回话等等,它们都可以用 SpringBoot 的开发风格做到意见启动和部署。
SpringBoot 并没有重复的造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务架构组合起来,通过SpringBoot的风格进行的再封装,主要牛逼之处是屏蔽掉了复杂的配置和实现的原理
,最终给开发者留出了一套简单易懂,易部署和易维护的分布式系统开发工具包。
总结:SpringCloud 就是 分布式微服务架构的 一站式解决方案/工具包,是各个微服务架构落地技术的集合体,俗称微服务全家桶。
1.2 SpringCloud 和 SpringBoot 关系
- SpringBoot 专注于快速方便的开发单个个体微服务。
- SpringCloud 是关注全局的微服务协调整理治理框架,它将 SpringBoot 开发的一个哥 单体微服务整合并管理起来,为每个微服务之间提供:配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式回话等等集成服务
- SpringBoot 完全可以离开 SpringCloud 做独立开发,但是 SpringCloud 却不能离开 SpringBoot。属于依赖的关系。
- SpringBoot 专注于快速、方便的开发 单个个体的微服务,SpringCloud 关注全局的服务治理框架
1.3 SpringCloud 和 Dubbo
最大区别:SpringCloud 抛弃了 Dubbo 引以为傲的 RPC 通信,采用的是基于 HTPP 的 REST 方式。
严格来说,两种方式各有优劣,虽然从一定程度上来说,候着牺牲了服务调用的性能,看上去好像不是很乐观。但也避免了上面提到的原生RPC带来的问题。而且 REST 相比于 RPC 更为灵活,服务提供者和消费者/调用方 的依赖只倚靠一纸契约!不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。
品牌机与组装机的区别
很明显,Spring Cloud 的功能比 Dubbo 更加强大,涵盖面更广,而且作为Spring的拳头项目,它也能够与SpringFramework、SpringBoot、SpringData、SpringBatch 等其他 Spring 项目完美融合,这些对于微服务而言是至关重要的。使用Dubbo构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是如果你是一名高手,那这些都不是问题,而 SpringCloud 就像 品牌机,在Spring Source 的郑和下,做了 大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。
1.4 SpringCloud 神奇的版本号
Spring Cloud 是一个由 众多独立子项目组成的大型总和项目,每个子项目有不同的发行节奏,都维护着自己的发布版本号。Spring Cloud 通过一个资源清单 BOM(Bill of Materials)来管理每个版本的子项目。为避免与子项目的发布号混淆,所以没有采用版本号的方式,而是通过命名的方式。
这些版本名称的命名方式 采用了 伦敦地铁站的名称,同时根据字母表的顺序来对应版本时间顺序,比如:最早的 Release 版本 Angel,第二个 Release 版本 Brixton 然后 是 Camden、Dalston、Edgware。当然 现在 也有 时间版本号出现了。