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

前言:

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

1.学习掌握java语言

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

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

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

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

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

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

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

集群和分布式架构:

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

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

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

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

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

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

综上:

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

相关推荐
好大哥呀20 分钟前
Java Web的学习路径
java·前端·学习
f***147722 分钟前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
计算机毕设VX:Fegn089523 分钟前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
on the way 12323 分钟前
day06-SpringDI 依赖注入
java·spring
C***11501 小时前
Spring aop 五种通知类型
java·前端·spring
BD_Marathon1 小时前
SpringBoot——多环境开发配置
java·spring boot·后端
代码N年归来仍是新手村成员1 小时前
【Java转Go】即时通信系统代码分析(一)基础Server 构建
java·开发语言·golang
关于不上作者榜就原神启动那件事2 小时前
Java中大量数据Excel导入导出的实现方案
java·开发语言·excel
Coder_Boy_3 小时前
基于SpringAI的在线考试系统设计总案-知识点管理模块详细设计
android·java·javascript
Assby3 小时前
如何尽可能精确计算线程池执行 shutdown() 后的耗时?
java·后端