SpringBoot学习日记(九)
SpringBoot和SpringCloud之间的区别
昨天我们说了Spring和SpringBoot的区别,今天再来说一下SpringCloud的区别是什么,相信大家也并不陌生了,因为现在学Java不亚于54年入国军了Spring全家桶是必备的技能,所以大家都会去学习他们,但是大家真的了解吗?我认为并不了解因为主包之前也是这样的学是学了但不会用,就如同红烧肉一样都知道怎么做但是真让你做你会吗?归根结底还是因为我们是以完成任务的目标去学习的,并不是以掌握的为目标。所以我认为要学好还是要一层一层的和洋葱一样知道各个部分都是干什么的,有什么用慢慢学才会理解的透彻记的清楚,好了废话不多说下面是正文。
框架 | 定位 | 核心目标 |
---|---|---|
Spring Boot | 用于快速构建单体应用或独立微服务。 | 简化配置、内嵌服务器、开箱即用,提升开发效率。 |
Spring Cloud | 用于构建分布式系统(微服务架构)。 | 解决分布式系统中的常见问题(如服务发现、配置中心、熔断器等)。 |
我们先从定位来看,他们就不是一个级别的东西,如果SpringBoot是一辆汽车,那么SpringCloud就是车管所也就是管车的地方。那什么是分布式?什么是微服务?
微服务(Microservices)
特点就是将单一应用拆分为多个小型服务,每个服务独立开发、部署、扩展,通过轻量级协议(如 HTTP/REST)通信。微服务是一种架构
核心特点:
- 单一职责:每个服务只解决一个业务问题(如订单服务、支付服务)。
- 独立部署:修改一个服务无需重新部署整个应用。
- 技术异构:不同服务可用不同编程语言、数据库(如MySQL + MongoDB)。
- 去中心化治理:团队可自主选择技术栈。
简单来说就是把一个完整的系统拆开,每个单独的功能独立为一个程序可以单独启动,然后提高Http请求或者其他方式建立通信互相协调工作,好处就是不会因为一个Bug整个系统就挂了,比如登陆出Bug了但是商场还是可以用的,这个就是化整为零的思想,相比于传统的老项目的优势,缺点就是一个就是维护成本高了、机器的性能要求高了(项目多了吃内存)。
分布式(Distributed)
特点就是多台计算机(节点)协同工作,对外表现为一个整体,通过网络通信共享资源(如数据、计算能力)。分布式是一种系统
核心特点:
- 资源共享:如分布式存储(HDFS)、计算(Spark)。
- 容错性:部分节点故障不影响整体可用性。
- 透明性:用户无需感知系统分布细节。
- 可扩展性:通过增加节点提升性能。
简单来说和马路一样多建几个车道,为什么要这么做的原因有2个,一个是如果全世界访问你的程序,那么永远是离你服务器近的用户最快,离的越远延迟就越高直到请求超时,大家使用网络都知道接受不了一点卡顿的因为实在是太影响使用了,所以就需要把我们的服务器在资金条件允许的情况下尽可能的各个地区设置分节点,这样保证不同地区访问的速度都差不多最起码要保证能够提供服务对不对。二是因为微服务架构的原因,上面说过因为微服务对机器的性能要求会很高,那么为了实现系统的吞吐量就会把一个服务在多个机器上部署然后利用负载均衡让每个机器都能接受和处理差不多的任务量,来保证整个系统的吞吐量,最直观的就是双十一的订单模块和商场模块不做分布式根本不可能,前几年是不是还出现过服务崩了的消息呢这个就是吞吐量不足导致的。
现在可以理解他们俩了吧,他们通常情况下是一起出现的,目的就是为了达到系统的最大吞吐量让更多地区、更多的用户可以使用自己的系统。
SpringBoot和SpringCloud功能区别
功能 | Spring Boot | Spring Cloud |
---|---|---|
服务开发 | 提供自动配置、Starter 依赖,快速启动应用。 | 基于 Boot,但专注于多服务协作。 |
服务通信 | 支持 RESTful API(如 Spring MVC)。 | 提供 Feign(声明式 HTTP 客户端)、Ribbon(负载均衡)。 |
服务发现 | 无内置支持。 | 集成 Eureka、Consul、Zookeeper 等注册中心。 |
配置管理 | 通过 application.properties 管理配置。 | 提供 Spring Cloud Config(集中化配置管理)。 |
熔断与容错 | 无内置支持。 | 集成 Hystrix/Sentinel 实现服务熔断和降级。 |
API 网关 | 无内置支持。 | 提供 Spring Cloud Gateway/Zuul 统一入口。 |
分布式事务 | 无内置支持。 | 提供 Seata 等解决方案。 |
我们可以看到其实前置更加注重于当个服务的开发,而后者就是倾向于微服务架构的管理开发了。后置是依赖于前者的,没有SpringBoot也就没有SpringCloud。
但是主包自己是这么理解的,Spring是核心框架,SpringBoot、SpringCloud以及全家桶都是基于Spring的,更像是Spring的不同衣服,是为了不同场合下传的,每个不同的项目都为不同的业务场景增加特定的功能注解,以到达目的。
总结
这篇主要讲了一下SpringBoot和SpringCloud的区别。