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

前言:

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

1.学习掌握java语言

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

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

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

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

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

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

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

集群和分布式架构:

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

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

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

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

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

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

综上:

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

相关推荐
寻星探路2 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
曹牧5 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法6 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7256 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎6 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄6 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿6 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds6 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹6 小时前
【Java基础】多态 | 打卡day2
java·开发语言