关于Spring Boot和Spring Cloud的个人理解:
1、Spring Boot内置tomcat容器。个人觉得相比现在的这种ssh框架配置,项目启动还需要单独配置一个单独的tomcat服务,还需要修改配置文件,避免端口冲突,如果项目过多,并且应用的tomcat版本不同,那么对于开发人员来说,这些都相对于来说比较繁琐。但是Spring Boot由于内置了容器,而且还可以一个Spring Boot项目启动多个不同端口的实例(可用于服务提供),对于配置tomcat只要在application.yml或者xml里面如下配置即可:
2、Spring Boot 对主流开发框架和中间件做无配置集成。相比现在的ssh、ssm架构搭建、集成一个中间件等,我们都会遇到版本不兼容、jar冲突等问题,但是在Spring Boot 里面集成一个中间件只要在pom中引入dependency节点即可,由于Spring Boot内部和这些框架、插件的配置集成,不会有版本冲突这些问题。例如下面的Spring Boot集成Spring Cloud的Eureka服务注册发现与服务消费Feign,配置后直接使用注解即可。
3、Spring Cloud依赖Spring Boot,是关注全局的服务治理框架,是一系列框架的有序集合。Spring Cloud整合了一套较为完整的微服务解决方案框架,相对于Dubbo结合Zookeeper个人觉得更完善和便于管理。关于Dubbo使用Zookeeper和Spring Cloud使用Eureka完成服务注册的区别后续会提到。
一、什么是Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
二、什么是Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
三、Spring Cloud的组成
Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用,如:
- Spring Cloud Netflix
是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。
- Spring Cloud Config
将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件
- Spring Cloud Bus
分布式消息队列,是对Kafka, MQ的封装
- Spring Cloud Security
对Spring Security的封装,并能配合Netflix使用
- Spring Cloud Zookeeper
对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用
- Spring Cloud Eureka
Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。
四、Spring Boot与Spring Cloud的区别
1、Spring Boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务;Spring Cloud是一个基于Spring Boot实现的云应用开发工具。
2、Spring Boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架。
3、spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现。
4、Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boo,属于依赖的关系。
五、Dubbo 与Spring Cloud区别、微服务框架选择
在CAP理论中,zk更看重C和P,即一致性和分区容错性。但Eureka更在意的是A和P,A为高可用。zk中有master和follower区别,当进入选举模式时,就无法正常对外提供服务。但Eureka中,集群是对等的,地位是相同的,虽不能保证一致性,但至少可以提供注册服务。 根据不同的业务场景,各有取舍。
推荐博客:
微服务架构的基础框架选择:Spring Cloud还是Dubbo?:https://blog.csdn.net/kobejayandy/article/details/52078275
为什么Eureka比ZooKeeper更适合做服务发现与注册服务:https://blog.csdn.net/coorz/article/details/70921252
Spring Boot优缺点、认识:https://blog.csdn.net/fly_zhyu/article/details/76407830
Spring boot与Spring cloud 是什么关系?:https://www.zhihu.com/question/47304987
六、Spring Boot与Spring Cloud学习使用可参看笔者博客