二、SpringCloud概述
spring官网:https://spring.io/
SpringCloud官网:http://projects.spring.io/spring-cloud/
自学参考书:
- SpringCloud Netflix 中文文档:https://springcloud.cc/spring-cloud-netflix.html
- SpringCloud 中文API文档(官方文档翻译版):https://springcloud.cc/spring-cloud-dalston.html
- SpringCloud中国社区:http://springcloud.cn/
- SpringCloud中文网:https://springcloud.cc
1、SpringBoot与SpringCloud的关系与区别
1.SpringBoot和SpringCloud简介
-
SpringBoot:是一个快速开发框架,通过用MAVEN依赖的继承方式,帮助我们快速整合第三方常用框架,完全采用注解化(使用注解方式启动SpringMVC),简化XML配置,内置HTTP服务器(Tomcat,Jetty),最终以Java应用程序进行执行。
-
SpringCloud: 是一套目前完整的微服务框架,它是是一系列框架的有序集合。它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。
2.SpringBoot和SpringCloud的关系与区别
-
SpringBoot只是一个快速开发框架,使用注解简化了xml配置,内置了Servlet容器,以Java应用程序进行执行。SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架。
-
SpringCloud是一系列框架的集合,可以包含SpringBoot。SPringBoot离开SpringCloud可以单独使用,但是SpringCloud离不开SpringBoot,两者属于依赖的关系。
3.SpringBoot是微服务框架吗?
-
SpringBoot只是一个快速开发框架,算不上微服务框架。
-
SpringCloud+SpringBoot 实现微服务开发。具体的来说是,SpringCloud具备微服务开发的核心技术:RPC远程调用技术;SpringBoot的web组件默认集成了SpringMVC,可以实现HTTP+JSON的轻量级传输,编写微服务接口,所以SpringCloud依赖SpringBoot框架实现微服务开发。
2.springcloud与dubbo技术选型对比
架构完整度:
与spring cloud相比,dubbo的架构完整度不够,其本身只提供了服务注册中心与服务治理两个模块,而spring cloud到现在为止,已经提供了服务注册中心,服务治理等24个模块,并且还在增加中。虽然dubbo也可以整合第三方框架,但是搭建出来的dubbo架构可能出现兼容性问题,而spring cloud不会,因为其每一个模块都是经过严格测试的,几乎不存在兼容性问题。如果将spring cloud比作品牌机,那dubbo就是组装机
社区活跃度:
与spring cloud相比,dubbo社区活跃度相对较低,社区活跃度的高低将影响项目维护成本,在社区活跃度很高时,一般项目中遇到的问题都可以在社区中找到响应的解决方案
通讯协议:
dubbo服务间通讯采用rpc,而spring cloud采用的时http的rest。rpc对于业务接口有很强的依赖性,生产者和消费者都需要依赖相同的接口,并且还需要通过严格的业务接口版本来进行管理,这种依赖在大型微服务项目将会成为一个很大的问题,相比rpc,rest更加轻量化,服务调用者和提供者间的依赖仅仅是一纸契约,一段文本,不存在代码层面的强依赖,服务提供者和调用者之间还可以通过不同的语言来实现,只需要提供rest接口就可以通讯。Spring Cloud 抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式
技术改造和微服务开发:
国内的开发团队选择dubbo的一个很重要的原因就是官方文档,dubbo提供了高质量的官方文档,而spring cloud都是英文版的,并且文档内容要比dubbo多的多,文档内容更偏向模块整合,要对每个模块的进行更深入的了解,需要查看更为详细的文档,对于中小型团队来说,阅读英文文档的成本必须要考虑的。二者解决的问题域不一样:Dubbo的定位是一款RPC框架,而SpringCloud的目标是微服务架构下的一站式解决方案。
dubbo与SpringCloud的核心要素比较
Dubbo | SpringCloud | |
---|---|---|
服务注册中心 | Zookeeper | Spring Cloud Netfilx Eureka |
服务调用方式 | RPC | REST API |
服务监控 | Dubbo-monitor | Spring Boot Admin |
断路器 | 不完善 | Spring Cloud Netfilx Hystrix |
服务网关 | 无 | Spring Cloud Netfilx Zuul |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总栈 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
3.SpringCloud版本
官网:http://projects.spring.io/spring-cloud/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wenvTyve-1642058400563)(C:\Users\yuwell\AppData\Roaming\Typora\typora-user-images\image-20220113151027503.png)]
SpringCloud没有采用数字编号的方式命名版本号,而是采用了伦敦地铁站的名称,同时根据字母表的顺序来对应版本时间顺序,比如最早的Realse版本:Angel,第二个Realse版本:Brixton,然后是Camden、Dalston、Edgware,目前最新的是Hoxton SR4 CURRENT GA通用稳定版。