Spring Cloud 概述

目录

​编辑一、认识微服务

1、单体架构

2、集群和分布式架构

3、微服务架构

二、Spring Cloud

1、什么是 Spring Cloud

2、Spring Cloud 版本

3、Spring Cloud 的实现方案

Spring Cloud Netflix

​编辑Spring Cloud Alibaba


一、认识微服务

1、单体架构

很多创业公司早期或者传统企业会把业务的所有功能实现都打包在⼀个项目, 这就是 单体架构 .
业务的所有功能实现都打包在⼀个war包或者Jar包中, 这种⽅式就称为 单体架构

单体架构开发和部署都比较简单,一个项目包含了所有的功能,省去了多个项目之间的交互和调用消耗,直接部署在一个服务器即可。


2、集群和分布式架构

单体架构可能会出现的问题:

1、后端服务器的压力越来越大,负载越来越高,甚至出现无法访问的情况

2、业务场景逐渐复杂,为了满足用户的需求,单体应用会越来越大,业务代码之间的耦合度也越来越高,任何一个问题都需要整个项目重新构建、发布

3、一个微小的问题可能会导致整个应用挂掉

如何解决单体架构的问题:

我们可以从横向和纵向两个角度来解决问题

横向:假如目前只有一台机器,用户却越来越多了,此时我们可以通过添加服务器来进行解决

纵向:业务需求越来越大了,代码之间耦合度越来越搞,此时我们可以把一整块业务划分成不通风的模块

假设我们最开始有一台机器,这一台机器可以承担 1000 个用户,后来发展成了 10000 个用户

横向:扩容机器,将一台机器扩容成 10 台机器,每个机器负责 10 个用户【集群】

纵向:按照功能进行划分,将一个大的项目拆分成多个小项目之后,项目与项目之间通过接口进行交互 【分布式】

集群:是将⼀个系统完整的部署到多个服务器上, 每个服务器都能提供系统的所有服务, 多个
服务器通过负载均衡调度完成任务. 每个服务器称为集群的节点(node)

分布式:是将⼀个系统拆分为多个子系统,多个子系统部署在多个服务器上,多个服务器上的子系统协同合作完成⼀个特定任务.

例如:有一个餐馆,刚开业的时候只有一个厨师,该厨师只负责做饭相关的工作

当餐馆生意变好之后,一名厨师便忙不过来了

横向:招聘一个厨师,这两个厨师都可以独立做饭

纵向:将厨师的工作分为多个细小的工作,如:切菜,洗菜,炒菜。再招聘助理,将细小的工作分配给助理完成。

集群和分布式之间的区别与联系:

1. 从概念上. 集群是多个计算机做同样的事, 分布式是多个计算机做不同的事(集群中的计算机可以相互替代,而分布式中的计算机不能相互替代)

2. 从功能上. 集群的每一个节点功能是相同的, 并且可以替代的. 分布式也是多个节点组成的系统, 但是每个节点完成的业务是不同的, ⼀个节点出现问题, 这个业务就不可访问了.

3. 从关系上. 分布式和集群在实践中, 很多时候是互相配合使用的. 比如分布式的某一个节点, 可能由一个集群来代替. 分布式架构大多是建立在集群上的. 所以实际的分布式架构设计中并不会把分布式和集群单独区分, 而是统称: 分布式架构.

4、分布式的节点可能是集群


3、微服务架构

按照业务对项目进行拆分之后,会有一些重复的功能开发。

在分布式结构下,当部署的服务越来越多,重复的代码就会越来越多,服务之间的调用关系越来越复杂。

微服务就是将一些通用的,会被多个上层服务调用的共享业务,提取成独立的基础服务,组成一个个微小的服务

微服务是没有明确的边界的

但是我们通常认为:一个服务只对应一个单一的功能,只做一件事情,且这个服务可以单独部署的服务是微服务 

微服务之间使用 REST 和 RPC 协议进行通信

微服务架构其实就是分布式架构的扩展,微服务架构下拆分粒度更小,服务更独立。

分布式架构侧重于压力的分散, 强调的是服务的分散化. 微服务侧重于能力的分散, 更强调服务的专业化和精细分工.

从实践的角度来看, 微服务架构通常是分布式服务架构, 反之则未必成立.

例如,在工作中会将岗位进行划分:前端,后端,运维等

分布式:划分了就可以了

微服务:不仅仅划分,还拆分的很细,比如后端开发还可以细分为:系统开发,数据开发等等

所以,微服务通常意味着需要解决分布式架构的各种难题

架构的发展:

那么实际开发中,应该采用哪种架构模式呢

所有的架构都是为了更好的服务产品,所以只需要选择最合适的即可

微服务的优势:

易开发和维护. 每个微服务负责的业务比较清晰, 体量小, 开发和维护成本降低.

容错性高. ⼀个服务发生故障, 可以使故障隔离在单个服务中, 不影响整体服务故障.

扩展性好. 每个服务都是独立运行的, 我们可以结合项目实际情况进行扩展, 按需伸缩.

技术选型灵活. 每个微服务都是单独的团队来运维, 可以根据业务特点和团队特点, 选择适合的技术
栈.

相应的,微服务也会面临一些挑战


二、Spring Cloud

1、什么是 Spring Cloud

Spring Cloud 的官网: spring.io

Spring Cloud 包含了很多的工具,这些工具能够让我们在分布式系统中进行比较快速的开发,Spring Cloud 提供的这些工具,也可以帮助我们解决在分布式微服务中的一系列问题。

简单来说, Spring Cloud 就是分布式微服务架构的⼀站式解决方案, 是微服务架构落地的多种技术的集合. 


2、Spring Cloud 版本

我们可以在官网上查看 SpringBoot 版本对应的 SpringCloud 版本

假设我们有一个项目,Spring Boot 的版本是 2.7.x,那么我们 Spring Cloud 版本应该使用 2021.0.x


3、Spring Cloud 的实现方案

Spring Cloud Netflix

Spring Cloud Netflix 是 Netflix OSS(Netflix Open Source Software)在 Spring Cloud 规范下的实现.
包含的组件及其主要功能⼤致如下: 


Spring Cloud Alibaba

Spring Cloud Alibaba 是阿⾥巴巴集团下的开源组件和云产品在Spring Cloud规范下的实现

如果说Spring Cloud Netflix 是 Spring Cloud 的第一代实现, 那么Spring Cloud Alibaba 也可以看做是Spring Cloud 的第⼆代实现, 主要由 Nacos、Sentinel、Seata 等组件组成.

黄色:进入维护状态的主键

Spring Cloud是一个用于构建分布式系统的开发工具集合。它提供了一些常用的组件和框架,包括服务注册和发现、负载均衡、断路器、分布式配置等等。在使用Spring Cloud时,有一些常见的错误和注意事项需要注意。 首先,关于Spring Boot和Spring Cloud版本对应错误。在使用Spring Cloud时,需要确保Spring Boot和Spring Cloud的版本兼容。不同版本之间可能存在依赖冲突或不兼容的情况,因此需要根据官方文档或者相关文档来选择合适的版本。 另外,Spring Cloud Config是一个用于集中管理和动态获取配置的工具。它支持从Git、SVN或本地文件系统中获取配置文件,并提供了服务器和客户端支持。你可以通过官方使用说明文档了解更多关于Spring Cloud Config的详细信息。 此外,关于选择使用Nacos还是Eureka作为服务注册和发现组件的问题。Nacos是一个功能更强大的服务注册和发现组件,它整合了Spring Cloud Eureka、Spring Cloud Config和Spring Cloud Bus的功能。使用Nacos可以实现配置的中心动态刷新,而不需要为配置中心新增集群或使用消息队列。另一方面,Eureka是Spring Cloud原生全家桶的一部分,相对来说更加稳定一些。选择使用哪个组件需要根据具体的需求和项目特点来决定。 综上所述,Spring Cloud是一个用于构建分布式系统的开发工具集合,它提供了一些常用的组件和框架。在使用Spring Cloud时,需要注意Spring Boot和Spring Cloud版本的兼容性,并可以使用Spring Cloud Config来动态获取配置。同时,可以选择使用Nacos或Eureka作为服务注册和发现组件,具体选择需要根据项目需求来决定。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值