一文搞清楚,Spring boot与Spring cloud 之间的关系

image

Spring Boot 是 Spring 框架提供的一套快速配置脚手架,旨在简化 Spring 应用的开发和部署。通过 Spring Boot,开发者可以快速构建单个微服务,并享受其带来的快速启动和学习体验。Spring Boot 的名字恰如其分地表明了其作为 Spring 引导工具的角色,它使得 Spring 的学习和使用变得轻松愉悦。此外,Spring Boot 不仅适合替换传统的工程结构,还非常适合微服务架构的开发。

Spring Cloud 则是基于 Spring Boot 构建的,专注于为微服务体系中的架构问题提供一整套解决方案。这包括服务注册与发现、服务消费、服务保护与熔断、网关管理、分布式调用追踪以及分布式配置管理等核心功能。Spring Cloud 作为一个云应用开发工具,不仅继承了 Spring Boot 的快速集成和默认配置理念,还进一步扩展了服务治理的边界,为微服务架构的全局治理提供了强有力的支持。

简而言之,Spring Boot 专注于快速、便捷的个体集成,而 Spring Cloud 则着眼于全局的服务治理框架。Spring Boot 通过其“默认大于配置”的理念,为开发者提供了许多预选的集成方案,以减少不必要的配置工作。而 Spring Cloud 则在很大程度上依赖于 Spring Boot 来实现其服务治理功能,共同为微服务架构的开发和运维提供了全面的支持。

对于熟悉 Spring 开发的开发者而言,传统 Spring 项目的开发过程中常会遇到三大痛点:

以构建一个集成 Hibernate 的 Spring MVC 应用为例:

  1. 依赖繁多且版本兼容复杂:构建这样一个应用,需要添加多达 10-20 个依赖,包括 Spring 相关的多个包、Hibernate 包、Spring 与 Hibernate 的整合包、日志包、JSON 处理包等。此外,还需要特别关注这些依赖之间的版本兼容性,以确保项目的稳定运行。

  2. 配置冗长且复杂:传统 Spring 项目需要配置注解驱动、数据库连接池、Hibernate、事务管理器、Spring MVC 的资源映射等,同时还需要在 web.xml 中配置 Spring 和 Spring MVC 的启动信息。这些配置工作不仅繁琐,还容易出错。

  3. 部署和运行不便:传统 Spring 项目通常需要部署到 Tomcat 等外部容器中运行,无法直接通过 Java 命令启动。这不仅增加了部署的复杂度,还限制了应用的灵活性。

针对这些问题,Spring Boot 提出了“约定大于配置”的哲学,旨在通过以下三大魔法简化开发过程:

  1. 依赖管理:通过提供 starter 依赖和强大的依赖管理能力,Spring Boot 帮助开发者快速引入所需依赖,并自动处理版本兼容性问题。

  2. 自动配置:Spring Boot 利用自动配置技术,根据项目中的依赖和配置信息,自动生成所需的配置,大大减少了手动配置的工作量。

  3. 内嵌式容器:Spring Boot 提供了内嵌式的 Tomcat、Jetty 等 Web 容器,使得应用可以直接通过 Java 命令启动,无需部署到外部容器中。这不仅简化了部署过程,还提高了应用的运行效率。

相比之下,Spring Cloud 体系则更为复杂,但也可以理解为是通过 Spring Boot 的这三大魔法,将各种微服务组件整合在一起,形成了一个简单易用、功能强大的微服务开发框架。

image

你可以把spring boot的官方的包分为两类,一种是为了搭建一个服务用的,比如hibernate jpa,比如 message。另外一种含有cloud关键字的,是为了各个spring boot之前管理和使用的包。

因为当把集群、CI等方法集中进来一起考虑的时候,这件事情就复杂了。

多个小有服务整合成的大服务,要有一个消息总线来用于互相通知和调用,要有一个服务发现程序来管理某个小服务上线可用,同时在服务离线时也要能处理,各个小服务要尽量各自独立,还要考虑服务的依赖性,集群的负载均衡,配置文件的分离。

再把CI和Docker拿进来一起考虑的话,更乱。

但我认为这样完成的一个服务是更具有可插拔性,更容易维护的。而且遵循了上面的cloud方案的话,在服务的健壮性上面也很强。

写到这里对于新接触的我认为可以先从单独的spring boot程序开始入门,当要添加一个新功能时,考虑拆分成另外服务。两个程序间可以通过 jmx或是 其它消息中间件或是rest通讯。最后实现了一个各自独立的功能集群。

总结一句:Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring boot,属于依赖的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值