初识Spring-Cloud——集群与分布式

前言:

想要了解spring-cloud有以下前提:

1.学习掌握java语言

2.了解过spring全家桶,学习掌握springboot(尽量有过实践)

如果以上条件均满足,需要思考下列一个问题:

大家在使用springboot创建项目时,首先有一个springApplication启动类,通过注解@SpringBootApplication+run方法可以启动springboot项目。但是如果此时项目比较大,之后一个项目中有多个服务,包括订单服务、商品列表服务等等。

此时如果该springboot启动后出现了一些问题,导致所有服务都用不了了,此时很明显是不合理的。

那么有没有办法,将以上的服务尽量拆分开来,服务以服务之间尽量不要相互影响!!

那么此时就出现了微服务,将一个大的服务,拆分为多个小的服务,并且服务之间没有相互影响。

所以此时,学习微服务的前提就需要知道单体架构(服务)的缺点,以及如何补救。

集群和分布式架构:

在认识微服务之前需要认识一下什么是集群什么是分布式!!

当⽹站的用户量越来越⼤, 需求也会越来越多, 流量也会越来越⼤, 服务可能就会面临以下问题:
1.后端服务器的压⼒就会越来越⼤, 负载越来越⾼, 甚至出现⽆法访问的情况
2.业务场景逐渐复杂. 为了满足用户的需求, 单体应⽤也会越来越⼤. 各个业务代码之间的耦合度也会越来越⾼. 任何⼀个问题, 都需要整个项⽬重新构建, 发布
3.⼀个微小的问题, 可能会导致整个应⽤挂掉

我们从两个⽅⾯进⾏优化:
横向: 添加服务器,把单台机器变成多台机器的集群
纵向: 把⼀个应⽤, 按照业务进行拆分, 拆分为多个项目. 此架构也称为垂直架构

综上也可以引出集群与分布式

集群(cluster):是将⼀个系统完整的部署到多个服务器上, 每个服务器都能提供系统的所有服务, 多个服务器通过负载均衡调度完成任务. 每个服务器称为集群的节点(node)
分布式:是将⼀个系统拆分为多个⼦系统,多个⼦系统部署在多个服务器上,多个服务器上的⼦系统协同合作完成⼀个特定任务.

明白了集群与分布式之后,此时来理解微服务,其实就相当于是在分布式架构下,对一个大的服务再次进行细小的拆分。

综上:

分布式: 服务拆分, 拆了就⾏.
微服务 : 指⾮常微⼩的服务, 更细粒度的垂直拆分, 通常指不能再拆的服务
以下是3种不同角度的区别:
1.分布式架构侧重于压⼒的分散, 强调的是服务的分散化.
2.微服务侧重于能⼒的分散, 更强调服务的专业化和精细分⼯.
3.从实践的⻆度来看, 微服务架构通常是分布式服务架构, 反之则未必成⽴. 所以, 选择微服务通常意味着需要解决分布式架构的各种难题.

相关推荐
学长毕业设计1 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西2 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西2 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午2 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065252 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_2 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
予昊3 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
2601_962203513 小时前
【SpringAI入门】初识SpringAI
java
weixin_461408584 小时前
Mybatis-flex小记
java·开发语言·mybatis
2601_962177134 小时前
【MySQL篇】聚合查询,联合查询
android·java·mysql