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 公司宣布进入维护状态。

相关推荐
朝新_1 天前
【SpringMVC】详解用户登录前后端交互流程:AJAX 异步通信与 Session 机制实战
前端·笔记·spring·ajax·交互·javaee
间彧1 天前
Kubernetes的Pod与Docker Compose中的服务在概念上有何异同?
后端
间彧1 天前
从开发到生产,如何将Docker Compose项目平滑迁移到Kubernetes?
后端
间彧1 天前
如何结合CI/CD流水线自动选择正确的Docker Compose配置?
后端
间彧1 天前
在多环境(开发、测试、生产)下,如何管理不同的Docker Compose配置?
后端
间彧1 天前
如何为Docker Compose中的服务配置健康检查,确保服务真正可用?
后端
间彧1 天前
Docker Compose和Kubernetes在编排服务时有哪些核心区别?
后端
间彧1 天前
如何在实际项目中集成Arthas Tunnel Server实现Kubernetes集群的远程诊断?
后端
brzhang1 天前
读懂 MiniMax Agent 的设计逻辑,然后我复刻了一个MiniMax Agent
前端·后端·架构
草明1 天前
Go 的 IO 多路复用
开发语言·后端·golang