当前位置: 首页 > news >正文

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 Alibaba 是什么 | https://sca.aliyun.com

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

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

相关文章:

  • 【鸿蒙学习笔记】@Prop装饰器:父子单向同步
  • spring boot读取yml配置注意点记录
  • [数据集][目标检测]围栏破损检测数据集VOC+YOLO格式1196张1类别
  • 封装stater时配置导入配置类提示功能
  • MacOS docker 安装与配置
  • 工具:颜色查询 / CMYK颜色查询RGB、HSL、HSV、XYZ的颜色值
  • 提升学生职务执行力的智慧校园学工管理策略
  • ubuntu中后台启动一个jar
  • 等保测评——云计算安全扩展(云计算关键技术)
  • amis中条件组合器condition-builder的使用 和 解析
  • 昇思MindSpore学习总结八——静态图加速
  • 【PHP】控制摄像头缩放监控画面大小,并保存可视画面为图片
  • IT设备监控模板:支持多种监控工具和平台的集成和整合
  • 微服务之服务保护策略【持续更新】
  • 初识单片机
  • ES6指北【2】—— 箭头函数
  • 时间复杂度分析经典问题——最大子序列和
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • ES6语法详解(一)
  • GitUp, 你不可错过的秀外慧中的git工具
  • Hibernate【inverse和cascade属性】知识要点
  • laravel 用artisan创建自己的模板
  • mac修复ab及siege安装
  • PHP 7 修改了什么呢 -- 2
  • PHP的类修饰符与访问修饰符
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Vue UI框架库开发介绍
  • vue.js框架原理浅析
  • vue自定义指令实现v-tap插件
  • WebSocket使用
  • 多线程 start 和 run 方法到底有什么区别?
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 关于Flux,Vuex,Redux的思考
  • 微信支付JSAPI,实测!终极方案
  • 移动端 h5开发相关内容总结(三)
  • linux 淘宝开源监控工具tsar
  • 回归生活:清理微信公众号
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (论文阅读30/100)Convolutional Pose Machines
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (转) Android中ViewStub组件使用
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ./configure、make、make install 命令
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 使用配置文件