Spring Cloud 概述

目录

认识微服务

单体架构

集群和分布式架构

集群和分布式

集群和分布式的区别和联系

微服务架构

[分布式架构 & 微服务架构](#分布式架构 & 微服务架构)

微服务的优势与挑战

[微服务解决方案 - Spring Cloud](#微服务解决方案 - Spring Cloud)

[Spring Cloud](#Spring Cloud)

[Spring Cloud 版本](#Spring Cloud 版本)

[Spring Cloud 和 Spring Boot 的关系](#Spring Cloud 和 Spring Boot 的关系)

[Spring Cloud 实现方案](#Spring Cloud 实现方案)


认识微服务

服务架构从单体应用向微服务应用的过程

单体架构

单体架构,把业务的所有功能实现都打包在一个 war 包或者 jar 包中。

例如电商系统,将用户管理,物流管理,商品管理,订单管理.... 都写在一个 web 项目中,然后统一部署到一个 web 服务器中。这种开发模式,部署简单,一个项目就包含了所有的功能,省去了多个项目之间的交互和调用消耗

集群和分布式架构

当网站访问量越来越多,需求也会越来越多,会面如下问题:

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

业务场景逐渐复杂,单个应用也会越来越大,各个业务代码之间的耦合度也会越来越高。任何一个项目,都需要整个项目重新构建,发布~

一个微小的问题,就会使得整个应用瘫痪。

我们可以从两个方面进行优化:

横向:添加服务器,把单台机器变成多台机器的集群。

纵向:把一个应用,按照业务进行拆分,拆分为多个项目。也成为是垂直架构。

垂直架构:以单体结构规模的项目为单位,进行垂直划分,将一个大项目拆分为一个一个单体结构项目。项目和项目之间相对比较独立。

集群和分布式

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

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

集群和分布式的区别和联系

  1. 概念上,集群是多个计算机做相同的事情。分布式是多个计算机做不同的事情。

  2. 功能上,集群的每一个节点的功能都是相同的,并且是互相可以替代的。分布式是由多个节点组成的系统,每个节点所完成的任务是不同的,当某个节点出现问题,那个节点负责的业务就是不可访问的了。

  3. 关系上,分布式和集群在实际使用过程中,是互相配合使用的。比如分布式的某一个节点,可能是由一个集群来代替实现的。分布式架构大多都是建立在集群上的。在实际的开发中,不会将分布式和集群区分开,而是统一称为:分布式架构。

微服务架构

按照业务进行拆分之后,会有一些功能是重复的。

在分布式架构中,当部署的服务越来越多,重复的代码就会越来越多,服务之间的调用关系也会越来越复杂。我们可以将一些通用的,会被多个上层调用的共享业务,抽象提取称独立的基础服务,组成一个一个微小的服务,这就是微服务。

简单来说,微服务就是很小的服务,小到一个服务只对应一个单一的功能,且这个服务可以单独部署运行。

微服务之间可以采用 REST 和 RPC 协议进行通信。

微服务架构,可以看成分布式架构的一种扩展,这种架构模式中,业务的拆分粒度更小,服务更独立。即,微服务是一种经过良好架构设计的分布式架构方案

分布式架构 & 微服务架构

分布式:服务拆分,拆了就行

微服务架构:业务拆分粒度更加细小的垂直拆分,通常指不能再拆的事务。

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

从实践角度中,微服务架构通常是分布式服务架构,反之则不一定成立。

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

微服务的优势与挑战

优势:

  1. 易开发和维护。每个微服务负责的业务范围较为清晰,体量小,开发和维护成本低。

  2. 容错性高。一个服务发生故障,可以使故障隔离在单个服务中,不会使得整体服务发生瘫痪。

  3. 扩展性好。每个服务都是独立运行的,我们可以结合项目实际进行扩展。

  4. 技术选型灵活。每个服务都是由不同团队来运维,可以选择合适的技术栈。


挑战:

服务依赖:随着服务数量增多,服务与服务之间的关系也会更加复杂,一个服务发生更改,就需要考虑到修改的服务对其他服务的影响。

运维成本:一个完整业务需要多个微服务共同完成。就会有更多的服务需要编译,部署,运行,甚至是不同的编译语言,不同对应运营环境。。。

开发和测试:一个完整业务设计多个微服务共同完成,服务调用会引入网络延迟,不可靠网络。

服务监控:在单体架构中,很容易实现服务的监控。在微服务架构中,不仅需要对整个链路进行监控,还需要对每一个微服务进行监控。

负载均衡:微服务架构中的服务实例数量可能会极为庞大。因此需要有效的服务发现和复杂均衡机制来管理请求流量。

微服务解决方案 - Spring Cloud

Spring Cloud

Spring Cloud

Spring Cloud 提供了一些可以让开发人员快速构建分布式服务的工具,比如:配置管理,服务发现,熔断,智能路由等等。

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

注意:

Spring Cloud 并不是 Spring 团队研发的框架。它只是把一些比较优秀的解决微服务架构中常见的开源框架,基于 Spring Cloud 规范进行了整合,并基于 Spring Boot 的风格,对这些组件框架进行封装,将一些复杂的配置和实现原理进行了屏蔽。使得开发者开箱即用微服务~~

这些开源技术的框架是由各个不同的公司来维护的,Spring Cloud 对这些微服务进行了集体的管理~~~

Spring Cloud 版本

Spring Cloud 一个由许多子项目共同组成的大项目。这些子项目是由不同公司进行维护的,发布阶段也是各不相同的。

为了管理主项目和下面的子项目,为了避免和子项目冲突,主项目的版本命名比较不同。

Spring Cloud 和 Spring Boot 的关系

Spring Cloud 中所有的子项目都依赖 SpringBoot,Spring Cloud 和 Spring Boot 之间的版本也有一定的对应关系。

Spring Cloud 实现方案

在 Spring Cloud 的规范下,由很多实现,较为出名的是:

Spring Cloud Netflix

Spring Cloud Alibaba Spring Cloud Alibaba 是什么-阿里云Spring Cloud Alibaba官网

其中标黄的框架,为 Netflix 公司宣布进入维护状态。

相关推荐
勇哥java实战分享12 分钟前
短信平台 Pro 版本 ,比开源版本更强大
后端
学历真的很重要16 分钟前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain
计算机毕设VX:Fegn089519 分钟前
计算机毕业设计|基于springboot + vue二手家电管理系统(源码+数据库+文档)
vue.js·spring boot·后端·课程设计
上进小菜猪35 分钟前
基于 YOLOv8 的智能杂草检测识别实战 [目标检测完整源码]
后端
韩师傅1 小时前
前端开发消亡史:AI也无法掩盖没有设计创造力的真相
前端·人工智能·后端
阿里巴巴P8资深技术专家2 小时前
基于 Spring AI 和 Redis 向量库的智能对话系统实践
人工智能·redis·spring
栈与堆2 小时前
LeetCode-1-两数之和
java·数据结构·后端·python·算法·leetcode·rust
superman超哥2 小时前
双端迭代器(DoubleEndedIterator):Rust双向遍历的优雅实现
开发语言·后端·rust·双端迭代器·rust双向遍历
1二山似2 小时前
crmeb多商户启动swoole时报‘加密文件丢失’
后端·swoole
马卡巴卡2 小时前
Java CompletableFuture 接口与原理详解
后端